Bei einer linearen Gleichung mx+n
geben Sie n
und zurück m
. Die Gleichung kann jedoch in einem der folgenden Formate vorliegen:
5x+2 -> 5 2
5x-2 -> 5 -2
5x -> 5 0
-2 -> 0 -2
x -> 1 0
Hier sind die Formate, in denen jedes ?
für eine positive Ganzzahl steht, die ohne führende Nullen geschrieben wurde
?x+?
?x-?
-?x+?
-?x-?
x+?
x-?
?
-?
?x
-?x
x
Alle diese Fälle müssen behandelt werden.
Spezifikationen:
- Sie können davon ausgehen, dass die Gleichung in einem der oben genannten Formate vorliegt, dh mit dem regulären Ausdruck übereinstimmt
^(-?[123456789]\d*)?x([+-][123456789]\d*)?|-?[123456789]\d*$
.
Testfälle:
-2x+3 -> -2 3
44x -> 44 0
-123 -> 0 -123
x -> 1 0
-1x -> -1 0
1 +2
eine gültige Ausgabe für1x+2
?L
am Ende der Zahlen ein hinzu, wenn sie zu groß werden. Sollte dies erlaubt sein?7x
Ausgabe beispielsweise so,7 0
aber7
wird sie nur ausgegeben7
?Antworten:
Python 2 , 55 Bytes
Probieren Sie es online aus!
Verwendet die in Python integrierte Code-Auswertung. Die Eingabe wird wie eine komplexe Zahl formatiert, indem sie
x
durchj
die komplexe Einheit von Python ersetzt wird. Da nur Literale wie2j
erkannt werden, aber nichtj
oder-j
, wird die Variablej
so zugewiesen1j
, dass sie diese abdeckt.Leider scheint Python nicht über eine integrierte Funktion zum Konvertieren einer komplexen Zahl in ein Paar von Realzahlen zu verfügen.
quelle
Mathematica, 16 Bytes
Inspiriert von xnors Python 2-Antwort :
Nimmt die Eingabe als Literalausdruck (keine Zeichenfolge) und gibt ein Zahlenpaar zurück. Es funktioniert, indem
x
eine komplexe Zahl erstellt und dann der Real- und der Imaginärteil genommen werden - das einzige nicht offensichtliche Bit ist zunächst das Multiplizieren mit i , um die Ausgabe in der richtigen Reihenfolge zu erhalten.Wir können auch verwenden
für 14 Bytes (mit Jelly verbunden!), aber vor dem Eingeben der Eingabe
x
auf -i zu setzen , anstatt nurx
danach zu ersetzen , fühlt sich an wie Betrug ...quelle
ReIm
Funktion, ich habe es immer getan{Re[#],Im[#]}&
. Sie haben dort viel geholfen.ReIm
wurde erst in Version 10.1 eingeführt, daher ist es möglich, dass Ihre Kopie von Mathematica es nicht hat.JavaScript (ES6),
5348 ByteTestfälle
Code-Snippet anzeigen
quelle
-x
versuchen meine Regex-x
ist keine gültige Eingabe.sed ,
4442 BytesProbieren Sie es online aus!
E / A: eine pro Zeile.
-2 Bytes dank @KritixiLithos.
quelle
t
und:
anstatt dasa
Etikett zu verwendenGelee ,
1814 BytesTestsuite bei Try it online!
Wie?
quelle
PHP, 73 Bytes
Probieren Sie es online aus!
PHP, 91 Bytes
funktioniert auch mit
-x
Probieren Sie es online aus!
quelle
Mathematica, 23 Bytes
Probieren Sie es online aus
Kopieren Sie diesen Code mit Strg-V und fügen Sie ihn ein
und drücken Sie Umschalt + Eingabetaste, um zu starten
quelle
Python 2 , 71 Bytes
Probieren Sie es online aus!
quelle
Mathematica, 33 Bytes
Reine Funktion, die einen Ausdruck im erwarteten Format verwendet (Hinweis: kein String, sondern ein reiner Ausdruck wie
-2x+3
) und ein geordnetes Paar von Ganzzahlen-2x+3
zurückgibt, wobei der konstante Koeffizient zuerst angezeigt wird (z. B. Rückgabe{3,-2}
).Das eingebaute
CoefficientList
(das für Polynome jeden Grades funktioniert) erledigt das schwere Heben; Das Standardverhalten besteht darin, Konstanten als Listen der Länge 1 zurückzugeben./.{a_}:>{a,0}
Überschreibt dies also und lässt den0
Koeffizienten vonx
explizit erscheinen.quelle
Netzhaut , 38 Bytes
Kann definitiv verbessert werden.
Möglicherweise wird erweitert, wie wir die Ausgabe formatieren dürfen. Es wird nur eine vollständige Gleichung ausgegeben, wie in
n
undm
getrennt durchx+
Probieren Sie es online aus!
quelle
x-1
[^+-]*
mit\w*
Oktave , 45 Bytes
Probieren Sie es online aus!
Bewerten Sie den Ausdruck, wobei
x
er durch Komplex ersetzt wirdj
. Octave ist sehr flexibel , wenn es um komplexe Ausdrücke kommt, mitj
,1j
,i
und1i
alle gleichwertig (mit dem Vorteil , dass1j
und1i
nicht durch Variablen überschrieben werden können, aber das ist irrelevant für diese Herausforderung). Inline-Ausdruck wird verwendet, um eine Liste[imag(u) real(u)]
mitu
der komplexen Nummer zu erstellen .Ich wollte zunächst einen idiomatischeren Ansatz mit dem eingebauten versuchen
sym2poly
. Zum Beispiel (bereits bei 47 Bytes, um sicherzustellen, dass0*x
behandelt wird):Dieser scheiterte jedoch im Fall von
x
ohne Koeffizienten. Am Endexnor
erwies sich ein reales / komplexes Setup als optimal.quelle
MATL , 12 Bytes
Probieren Sie es online aus!
Port meiner Octave-Antwort, aber natürlich angepasst an die Kompaktheit in MATL. Erläuterung:
quelle
C (gcc) ,
145138112 BytesProbieren Sie es online aus!
Kann definitiv gekürzt werden, aber jetzt nicht sehen!
quelle
char *s
2. Können Sie Leerzeichen nicht entfernen?printf("%d %d",s[i]-'x'?:a,s[i=L?L-s:i]-'x'?a:b);
anstelle vonif(L!=0)i=(int)(L-s);printf("%d %d",s[i]=='x'?a:0,s[i]=='x'?b:a);
undindex()
anstelle vonstrchr()