Der Rundown
Führen Sie bei jeder Eingabe von x und y eine komplexe Operation aus und drucken Sie ein entsprechendes Ergebnis.
Wie sollte Ihr Programm funktionieren?
Bei einer Eingabe von x und y in der Form z = x + yi finden Sie z i-z
Wenn der absolute Realwert von z i-z größer als der absolute Imaginärteil ist, drucken Sie den Realteil. umgekehrt für umgekehrt. Wenn beide Werte gleich sind, drucken Sie einen der Werte.
Beispiel
x: 2
y: 0
Deshalb:
z = 2
z^(i-z) ~= 0.192309 + 0.159740i
Da der Realteil einen größeren absoluten Wert als der Imaginärteil hat, kehrt das Programm zurück
0.192309
Mehr Beispiele
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
Graviton
quelle
quelle
-2+i
könnte dafür verwendet werden (z^(i-z)=3-4i
also3>-4
vsabs(-4)>abs(3)
).Antworten:
Gelee ,
811 BytesVielen Dank an Johnathan Allan für die Aktualisierung der Antwort mit der Änderung der Regeln.
Probieren Sie es online aus!
quelle
ı_*@µĊ,ḞAÞṪ
und Sie können auch haben nur ein gültigen Eintrag (angesichts der Änderung des Maximalwert in absoluten Zahlen zu verlangen, so dass zum Beispiel-2+1j
kehrt-4.0
statt3.0
).Python 2, 45 Bytes
Probieren Sie es online aus - alle Testfälle
Programmiersprachen verwenden oft
j
statti
. Das ist in Python der Fall. Weitere Informationen zum Warum finden Sie in dieser SO-Frage .quelle
Mathematica,
2122 BytesEdit: Danke an JungHwan Min für das Speichern von 3 Btyes
Reine Funktion, die eine komplexe Zahl als Argument erwartet. Wenn eine genaue Nummer übergeben wird, wird eine genaue Nummer zurückgegeben (z . B.
1/2
gibtSqrt[2] Cos[Log[2]]
). Die Problemspezifikation wurde bearbeitet, nachdem ich meine Lösung veröffentlicht hatte, um anzugeben, dass der absolute Wert verwendet werden soll. Das Beste, was ich mir dafür einfallen lassen kann, sindMaximalBy[ReIm[#^(I-#)],Abs][[1]]&
oderLast@MaximalBy[Abs]@ReIm[#^(I-#)]&
beide34
Bytes.quelle
Max
muss nicht der Kopf sein. Es gibt den Maximalwert zurück, egal wie tief die EingabeList
ist (z . B.Max[1, {2, {3}}]
Rückgabe3
). Außerdem gibt die Frage nur an, dass Sie die Werte drucken, sodass ich nicht glaube, dass Sie sie benötigen würdenN
:Max@ReIm[#^(I-#)]&
würde funktionieren.Oktave , 29 Bytes
Dies definiert eine anonyme Funktion. Es funktioniert auch in MATLAB.
Probieren Sie es online aus!
Erläuterung
Das elementweise Teilen (
./
) der Zahlz^(i-z)
durch das Array[1 i]
und das Nehmen des Realteils ergibt ein Array mit dem Real- und Imaginärteil vonz^(i-z)
.quelle
MATL , 10 Bytes
Probieren Sie es online aus! Oder überprüfen Sie alle Testfälle .
Erläuterung
Betrachten Sie die Eingabe
-2+8i
als Beispiel.quelle
TI-BASIC,
40,32,31,29 ByteDank @Conor O'Brien ein Byte gespeichert
Nimmt die Eingabe als komplexe Zahl für die
Z
Variable auf.TI-BASIC verwendet eine eigene Codierung, die Sie hier finden .
quelle
Pyth, 16 Bytes
quelle
Perl 6 , 24 Bytes
$_
ist das möglicherweise komplexe Argument;$_ ** (i - $_)
ist der zu berechnende Ausdruck;.reals
ist eineComplex
Methode, die eine Liste der Real- und Imaginärteile zurückgibt; und gibt schließlich.max
den größeren der beiden zurück.quelle
C (GCC),
9379 + 4 (-lm
) =9783 Bytes14 Bytes dank @ceilingcat gespart!
Das Einschließen des Headers
complex.h
ist länger als das ¯ \ _ (ツ) _ / ¯Probieren Sie es online aus!
quelle
-
,l
undm
.gcc file.c -o exe
, so dass dieser Flag 4 Bytes ergänzt: Raum,-
,l
, undm
. (Zumindest sehe ich das beim Kompilieren so.)Ruby ,
2535 BytesBEARBEITEN : Behoben, um der neuen Absolutwertregel zu entsprechen.
Probieren Sie es online aus!
Dadurch wird eine anonyme Funktion erstellt.
quelle
TI-Basic,
1916 Bytesreal(
undimag(
sind Zwei-Byte-Token.Führen Sie mit
5+3i:prgmNAME
(5+3i
als Argument,NAME
als Programmname) aus.quelle
R, 38 Bytes
Anonyme Funktion. Nimmt eine (möglicherweise) komplexe Zahl
z
, bringt sie auf die angegebene Potenz und gibt dannmax
dieRe
al- undIm
aginären Teile zurück.quelle
Axiom, 60 Bytes
Testcode und Ergebnisse; Ich folge wie der anderen der Präzedenzfallversion der Frage ...
quelle
C # - 189 Bytes
Lesbar:
Erläuterung: Es wurde beschlossen, keine komplexen Bibliotheken zu verwenden.
Lass dies gleich seinm eich a wo
DannR ( zi - z) = m cosein und Ich ( zi - z) = m sinein
Der maximale Absolutwert kann durch die bestimmt werdencosein und Sündeein Begriffe, wobei diese gleich sind bei 12√ (daher der Test 2 c2< 1 ).
Wie bereits erwähnt, hängt das Erhöhen auf einen komplexen Exponenten von der Auswahl eines bestimmten Astschnitts ab (zz= 1 könnte sein ei π oder e3 i π - dies zu erhöhen ich gibt einen Realteil von e- π oder e- 3 π jeweils) habe ich jedoch gerade die Konvention von verwendet t ∈ [ 0 , 2 π) gemäß der Frage.
quelle
APL (Dyalog Unicode) , 18 Bytes
18 Bytes ( https://github.com/abrudz/SBCS/ )
28 Bytes (UTF-8)
⍵ ist eine komplexe Zahl ajb = a + bi
Probieren Sie es online aus!
quelle