Bieg do dołu
Biorąc pod uwagę dowolny wejściowy x i y , wykonanie złożonej operacji drukowania i odpowiedni wynik.
Jak powinien działać Twój program
Biorąc pod uwagę x i y w postaci z = x + yi , znajdź z i-z
Jeśli bezwzględna rzeczywista wartość z i-z jest większa niż absolutna część urojona, wydrukuj część rzeczywistą; i odwrotnie, na odwrót. Jeśli obie wartości są równe, wydrukuj jedną z wartości.
Przykład
x: 2
y: 0
W związku z tym:
z = 2
z^(i-z) ~= 0.192309 + 0.159740i
Ponieważ część rzeczywista ma większą wartość bezwzględną niż część urojona, program powraca
0.192309
Więcej przykładów
z = 1+i >> 0.5
z = i >> 1
z = 0.5 >> 1.08787
z = -2+8i >> 2.22964E7
z = -10i >> 3.13112E7
code-golf
math
complex-numbers
Grawiton
źródło
źródło
-2+i
można zastosować przypadek testowy (z^(i-z)=3-4i
tak3>-4
vsabs(-4)>abs(3)
).Odpowiedzi:
Galaretka ,
811 bajtówDzięki Johnathan Allan za aktualizację odpowiedzi wraz ze zmianą zasad.
Wypróbuj online!
źródło
ı_*@µĊ,ḞAÞṪ
a możesz mieć jedyny prawidłowy wpis (biorąc pod uwagę zmianę wymagającą maksymalnej wartości w wartościach bezwzględnych, na przykład, że-2+1j
zwraca-4.0
raczej niż3.0
).Python 2, 45 bajtów
Wypróbuj online - wszystkie przypadki testowe
Języki programowania często używają
j
zamiasti
. Tak jest w przypadku Pythona. Zobacz to SO pytanie, aby uzyskać więcej informacji o tym, dlaczego.źródło
Mathematica,
2122 bajtówEdycja: Podziękowania dla JungHwan Min za zaoszczędzenie 3 bajtów
Czysta funkcja, która oczekuje argumentu jako liczby zespolonej. Jeśli podana zostanie dokładna liczba, zostanie zwrócona dokładna liczba (np.
1/2
DajeSqrt[2] Cos[Log[2]]
). Specyfikacja problemu została edytowana po opublikowaniu mojego rozwiązania, aby określić, że należy użyć wartości bezwzględnej. Najlepsze, co mogę na to wymyślić, toMaximalBy[ReIm[#^(I-#)],Abs][[1]]&
alboLast@MaximalBy[Abs]@ReIm[#^(I-#)]&
oba34
bajty.źródło
Max
nie musi być głową. Zwraca maksymalną wartość bez względu na głębokość wejściaList
(np.Max[1, {2, {3}}]
Zwraca3
). Ponadto pytanie określa tylko, że drukujesz wartości, więc nie sądzę, byś potrzebowałN
:Max@ReIm[#^(I-#)]&
działałby.Oktawa , 29 bajtów
Definiuje to anonimową funkcję. Działa również w MATLAB.
Wypróbuj online!
Wyjaśnienie
Element-mądry dzieląc (
./
) liczbęz^(i-z)
przez tablicę[1 i]
i biorąc rzeczywistą część daje tablicę z rzeczywistymi i urojonymi częściamiz^(i-z)
.źródło
MATL , 10 bajtów
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie
Rozważ dane wejściowe
-2+8i
jako przykład.źródło
TI-BASIC,
40,32,3129 bajtówZapisano bajt dzięki @Conor O'Brien
Pobiera dane wejściowe jako liczbę zespoloną
Z
zmiennej.TI-BASIC używa własnego kodowania, można je znaleźć tutaj .
źródło
Pyth, 16 bajtów
źródło
Perl 6 , 24 bajtów
$_
jest prawdopodobnie złożonym argumentem;$_ ** (i - $_)
jest wyrażeniem do obliczenia;.reals
jestComplex
metodą, która zwraca listę rzeczywistych i urojonych części; i wreszcie.max
zwraca większy z dwóch.źródło
C (GCC),
9379 + 4 (-lm
) =9783 bajtówZaoszczędź 14 bajtów dzięki @ceilingcat!
Dołączenie nagłówka
complex.h
jest dłuższe niż ¯ \ _ (ツ) _ / ¯Wypróbuj online!
źródło
-
,l
, im
.gcc file.c -o exe
, więc ta flaga dodaje 4 bajty: przestrzeń,-
,l
, im
. (Przynajmniej tak toRuby ,
25 lat35 bajtówEDYCJA : Naprawiono, aby zachować zgodność z nową zasadą wartości bezwzględnej.
Wypróbuj online!
To tworzy anonimową funkcję.
źródło
TI-Basic,
1916 bajtówreal(
iimag(
są dwubajtowymi tokenami.Uruchom z
5+3i:prgmNAME
(5+3i
będąc argumentem,NAME
będąc nazwą programu).źródło
R, 38 bajtów
Funkcja anonimowa. Staje się (ewentualnie) Numer złożony
z
, bierze się do określonej siły, po czym zwracamax
zRe
Al iIm
części aginary.źródło
Aksjomat, 60 bajtów
kod testu i wyniki; przestrzegam poprzedniej wersji pytania ...
źródło
C # - 189 bajtów
Czytelny:
Objaśnienie: Postanowiono nie używać żadnych bibliotek złożonych.
Niech to będzie równemmija a gdzie
NastępnieR (zi - z) = m cosza i Ja (zi - z) = m sinza
Maksymalna wartość bezwzględna może być określona przezsałataza i grzechza warunki, przy czym są równe przy 12)√ (stąd test 2)do2)< 1 ).
Jak wspomniano, podniesienie do złożonego wykładnika zależy od wyboru konkretnego cięcia gałęzi (npz= 1 możliwe mii π lub mi3 i π - podniesienie tego do ja daje prawdziwą część mi- π lub mi- 3 π odpowiednio), jednak właśnie użyłem konwencji t ∈ [ 0 , 2 π) jak na pytanie.
źródło
APL (Dyalog Unicode) , 18 bajtów
18 bajtów ( https://github.com/abrudz/SBCS/ )
28 bajtów (UTF-8)
⍵ jest liczbą zespoloną ajb = a + bi
Wypróbuj online!
źródło