Drei positive ganze Zahlen A, B, C sind ABC-Tripel, wenn sie Koprime sind, mit A <B und erfüllen die Beziehung: A + B = C
Beispiele:
1, 8, 9
ist ein ABC-Tripel, da sie Koprime sind, 1 <8 und 1 + 8 = 96, 8, 14
liegt nicht daran, dass sie nicht mitschuldig sind7, 5, 12
liegt nicht an 7> 5
In dieser Präsentation von Frits Beukers 2005 erfahren Sie mehr über ABC-Tripel.
Input-Output
Drei Ganzzahlen, dezimal geschrieben. Kann getrennte Werte oder Listen sein. Die Ausgabe musste ein wahrer / falscher Wert sein, ob die drei Ganzzahlen ein ABC-Tripel sind.
Hinweis: Es ist wichtig, die Reihenfolge ganzer Zahlen in der Liste zu 1, 8, 9
beachten. Beispiel: Wird nicht als dieselbe Liste 9, 1, 8
oder als eine andere Kombination angesehen. Also ist erstens ein ABC-Tripel und zweitens nicht.
Somit ist A das erste Element der Liste, B das zweite und C das dritte.
Testfälle
Jede der folgenden Listen sollte einen Wahrheitswert ausgeben
[1, 8, 9]
[2, 3, 5]
[2, 6436341, 6436343]
[4, 121, 125]
[121, 48234375, 48234496]
Jede der folgenden Listen sollte einen falschen Wert ausgeben
[1, 1, 2]
[1, 2, 5]
[1, 9, 8]
[4, 12872682, 12872686]
[6, 8, 14]
[7, 5, 12]
[A,B,C]
, oder dürfen wir die Eingabe auch in der Reihenfolge vornehmen,[C,B,A]
oder[C,A,B]
?Antworten:
Gelee ,
109 BytesProbieren Sie es online!
Wie es funktioniert
quelle
Haskell ,
48 3829 Bytes-10 Bytes aufgrund TFeld ‚s
gcd
Trick!-7 Byte dank HPWiz für die Verbesserung des Co-Primality-Tests und das Erkennen eines überflüssigen Speicherplatzes!
-2 Bytes danke an nimi für den Hinweis auf einen Infix-Operator!
Probieren Sie es online!
Erläuterung
Die ersten zwei Bedingungengcd ( a , b ) = gcd ( a , c ) = gcd ( b , c )
a < b
unda + b == c
sind ziemlich offensichtlich, die dritten Verwendungen dass :Das Schreiben von Verwendung von Bézouts Identität und das Ersetzen von ergibt:gcd(a,c)=U⋅a+V⋅c c=a+b
Da die zu dieser Identität die minimale positive Lösung ist , folgt daraus , dass . Der andere Fall ist symmetrisch.gcd gcd ( a , b ) = gcd ( a , c )
quelle
gcd a b==1
. Dagcd a b
teilt sicha+b=c
. dhgcd(gcd a b)c=gcd a b
Perl 6 ,
3332 Bytes-1 byte dank nwellnhof
Probieren Sie es online!
Anonymer Codeblock, der eine Liste mit drei Zahlen aufnimmt und Wahr oder Falsch zurückgibt.
Erläuterung
quelle
Excel, 33 Bytes
quelle
Bash, 61 Bytes
Probieren Sie es online!
Eingabe als Kommandozeilenargumente, Ausgabe im Exit-Code (erzeugt auch Ausgabe auf stdout als Nebeneffekt, dies kann jedoch ignoriert werden).
Der zweite Teil (ab
&&((
) ist ziemlich normal, aber das Interessante ist der Coprime-Test:quelle
&&
kann&
wegen VorrangigkeitJava 10,
6564 Bytes-1 Byte danke an @Shaggy .
Probieren Sie es online aus.
Erläuterung:
quelle
a==1
->a<2
um ein Byte zu speichern.05AB1E ,
121110 BytesDank Kevin Cruijssen 1 Byte gespeichert
Probieren Sie es online! oder als Testsuite
Erläuterung
quelle
RÆ_*`\‹*¿Θ
Test Suite verwenden .Python 2 ,
6967636255 BytesProbieren Sie es online!
Python 3 ,
5851 BytesProbieren Sie es online!
-7 Bytes, danke an H.PWiz
quelle
gcd
ingcd
trick gültig? Was ist, wenna
nicht mit Coprimec
?gcd(a,b)
, dagcd(a,b)
teilta+b
Japt ,
16141311 BytesVersuch es
quelle
>
folgt automatisch eingefügt werden©
.JavaScript (ES6),
54 43 4240 ByteVielen Dank an @Shaggy für den Hinweis, dass wir nicht berechnen müssen . Spart 11 Bytes, indem der Code entsprechend umgeschrieben wird.gcd ( a , c )
Nimmt die Eingabe als 3 separate Ganzzahlen. Gibt für ein ABC-Tripel oder entweder oder andernfalls .t r u e 0 fa l s e
Probieren Sie es online!
quelle
gcd(c,a)
.Wolfram Language
24 30 2826 BytesMit 2 Bytes von Doorknob rasiert. Weitere 2 Bytes, die @jaeyong gesungen hat
quelle
CoprimeQ@##
2 Bytes zu sparen.GCD@##==1
würde 2 Bytes sparenC # (Visual C # Interactive Compiler) , 90 Byte
Läuft für Nummern bis 1e8, dauert auf meinem Rechner ca. 35 Sekunden. Anstatt den gcd wie andere zu berechnen, instanziiert die Funktion einfach ein großes Array und filtert die Indizes, die keine Teiler von a oder b sind, und überprüft, wie viele Elemente übrig sind. Als nächstes wird geprüft, ob Element eins plus Element zwei gleich Element drei ist. Zuletzt wird geprüft, ob das erste Element kleiner als das zweite ist.
Probieren Sie es online!
quelle
C # (Visual C # Interactive Compiler) , 59 Byte
Probieren Sie es online!
quelle
ECMAScript Regex, 34 Bytes
Die Eingabe ist in der Domäne unär
^x*,x*,x*$
(wiederholtx
durch,
).^(?!(xx+)\1*,\1+,)(x*)(,\2x+)\3\2$
Probieren Sie es online! (.NET Regex Engine)
Probieren Sie es online! (SpiderMonkey Regex Engine)
Die Frage lautet "Drei Ganzzahlen, dezimal geschrieben", sodass dies möglicherweise nicht qualifiziert ist (da Eingaben unärgerlich sind), aber es ergibt eine so elegante, reine Regex, dass ich hoffe, dass es zumindest geschätzt wird.
Beachten Sie jedoch, dass bei einer wörtlichen Interpretation der Phrasierung auch Lambda-Übermittlungen und Funktionsübermittlungen, die Ganzzahlargumente enthalten, zu disqualifizieren sind, da sie sich strikt an die Spezifikation der Frage halten und die Eingabe in Form einer Zeichenfolge vornehmen müssen.
quelle
J , 27 Bytes
Probieren Sie es online!
Inspiriert von Jo Kings Perl-Lösung
quelle
C # (.NET Core) , 68 Byte
Ohne Linq.
Probieren Sie es online!
quelle
Stax , 12 Bytes
Führen Sie es aus und debuggen Sie es
quelle
Sauber , 43 Bytes
Probieren Sie es online!
Ähnlich wie im Grunde alles andere, da der direkte Test der gleiche ist.
quelle
Pari / GP , 30 Bytes
2 Bytes dank @Shaggy gespart .
Probieren Sie es online!
quelle
Befunge-98 (FBBI) , 83 Bytes
Probieren Sie es online!
Die Eingabe, bei der es sich um ein Dreifach von Ganzzahlen
[A,B,C]
handelt, wird als durch Leerzeichen getrennte Ganzzahlen in Befunge eingespeistC B A
.quelle
Mathematica 35 Bytes
wenn die Reihenfolge wichtig ist:
oder...
quelle
Retina 0.8.2 ,
4241 BytesProbieren Sie es online! Link enthält Testfälle. Bearbeiten: 1 Byte dank @Deadcode gespeichert. Erläuterung:
In Unary konvertieren.
Stellen Sie sicher, dass A und B keinen gemeinsamen Faktor haben.
Überprüfen Sie, dass A <B und A + B = C.
quelle
^(1+),(1+\1),\1\2$
an^(1+)(,1+\1)\2\1$
.A
Operation mir eigentlich keine Bytes erspart.Common Lisp, 51 Bytes
Probieren Sie es online!
quelle