Schreiben Sie den kürzestmöglichen Code, der true zurückgibt, wenn die beiden angegebenen ganzzahligen Werte gleich sind oder ihre Summe oder absolute Differenz 5 beträgt.
Beispiel Testfälle:
4 1 => True
10 10 => True
1 3 => False
6 2 => False
1 6 => True
-256 -251 => True
6 1 => True
-5 5 => False
Die kürzeste, die ich in python2 finden konnte, ist 56 Zeichen lang:
x=input();y=input();print all([x-y,x+y-5,abs(x-y)-5])<1
-9, danke @ElPedro. Es werden Eingaben im Format x, y akzeptiert:
x,y=input();print all([x-y,x+y-5,abs(x-y)-5])<1
code-golf
decision-problem
Vikrant Biswas
quelle
quelle
Antworten:
Python 2 , 30 Bytes
Probieren Sie es online!
Ein Byte von Arnauld gespeichert
Drei Bytes, die von alephalpha gespeichert wurden
quelle
JavaScript (ES6), 28 Byte
Übernimmt die Eingabe als0 oder 1 .
(a)(b)
. GibtProbieren Sie es online!
quelle
Dyalog APL , 9 Bytes
Probieren Sie es online!
Buchstabiert:
quelle
x86-Maschinencode, 39 Byte
Versammlung
Probieren Sie es online!
quelle
J ,
1211 Bytes1 Byte gespart dank Adám
Probieren Sie es online!
Erläuterung
Dies ist äquivalent zu:
Dies kann in die folgende Gabelkette unterteilt werden:
Oder visualisiert mit
5!:4<'f'
:Kommentiert:
quelle
e.
e.
war=+.5 e.|@-,+
. Vielleicht hast du vergessen, dass5e.
ein ungültiges Token in J ist?+
anstelle von+.
R , 40 Bytes (oder 34)
Probieren Sie es online!
Für Nicht-R-Benutzer:
-1:1*5
erweitert um[-5, 0, 5]
%in%
Operator entnimmt Elemente von links und prüft (elementweise), ob sie im Vektor auf der rechten Seite vorhanden sindEin direkter Port der @ ArBo-Lösung hat
35 bis34 Bytes. Stimmen Sie also dieser Antwort zu, wenn Sie sie mögen:quelle
function(x,y)x%in%c(y--1:1*5,5-y)
function(x,y)(x-y)%in%(-1:1*5)
und durch Fallenlassen der Funktionsnotation zurscan()
Eingabe auf 24 Bytes gesenkt werden:diff(scan())%in%(-1:1*5)
Probieren Sie es online aus! . Trotzdem sehr ähnlich.pryr::f
, die in beiden Fällen funktioniert. Ob es die Argumente richtig erkennen kann, ist ein Treffer oder ein Misserfolg, aber es scheint diese beiden Funktionen zu treffen. zBpryr::f(x%in%c(y--1:1*5,5-y))
Online ausprobieren! . Ruft 36 bzw. 29 Bytes auf.Python 2 ,
2931 BytesProbieren Sie es online!
Da ich es nicht geschafft habe, die Aufgabe beim ersten Mal sorgfältig zu lesen, musste ich mir einen völlig anderen Ansatz einfallen lassen, der leider nicht so prägnant ist.
quelle
8086 Maschinencode,
2220 BytesUngolfed:
Geben Sie Zahlen in AX und BX ein und geben Sie Zero Flag (ZF = 1) zurück, wenn das Ergebnis wahr ist. Auf Wunsch können Sie auch bestimmen, welche Bedingung erfüllt ist:
Wenn der Unterschied zwischen den Zahlen 0 ist, wissen wir, dass sie gleich sind. Andernfalls, wenn das Ergebnis negativ ist, negieren Sie es zuerst und prüfen Sie dann auf 5. Wenn dies immer noch nicht zutrifft, fügen Sie hinzu und prüfen Sie auf 5.
Beispiel für ein PC-DOS-Testprogramm. Laden Sie es hier herunter ( ESD.COM ).
Ausgabe des Testprogramms:
quelle
Gelee , 7 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Python 2, 38 Bytes
-2 Bytes dank @DjMcMayhem
Probieren Sie es online!
quelle
5
s und demor
sJava (JDK) , 30 Byte
Probieren Sie es online!
quelle
Wolfram Language (Mathematica) , 22 Byte
Übernimmt die Eingabe als
[a][b]
.Probieren Sie es online!
quelle
PowerShell ,
484440 ByteProbieren Sie es online! oder Überprüfen Sie alle Testfälle
Nimmt Eingabe
$a
und$b
. Prüft , ob$b
ist-in
die Gruppe ($a-5
,5-$a
5+$a
, oder$a
), die überprüft , alle möglichen Kombinationen von$a
,$b
, und5
.-4 Bytes dank mazzy.
-4 Bytes dank KGlasier.
quelle
($a-$b)
ist-$x
:)5
und$b
herum können Sie ein paar Bytes abschneiden (dhparam($a,$b)$b-in($a-5),(5-$a),($a+5),$a
) Probieren Sie es hier aus$a+5
,5+$a
um es bei der Eingabe über die Befehlszeile entsprechend umzusetzen, aber ansonsten war es großartig. Vielen Dank!Pascal (FPC) ,
2670 BytesBearbeiten: + Eingabevariablen.
Probieren Sie es online!
Probieren Sie es online!
Ich hoffe, dass meine Antwort allen Regeln des Code-Golf entspricht. Es hat trotzdem Spaß gemacht.
quelle
C # (.NET Core) ,
43,48,47, 33 ByteBEARBEITEN: Versucht,% zu verwenden und anscheinend vergessen, wie man%. Vielen Dank an Arnauld für diesen Hinweis!
EDIT2: AdmBorkBork mit einem -1-Byte-Golf, der die Klammern so anordnet, dass sie sich neben dem Return befinden, sodass kein zusätzlicher Platz benötigt wird!
EDIT3: Danke an Dana für -14-Byte-Golf für die einzeilige Rücksprungverknüpfung und das Ausführen der Funktion (Ty Ausführungsform der Ignoranz für die Verknüpfung mit TIO).
C # (.NET Core) , 33 Byte
Probieren Sie es online!
quelle
C (gcc) , 33 Bytes
Probieren Sie es online!
Ich habe versucht, einen Ansatz zu finden, bei dem noch niemand versucht hat, ihn zu verwenden. Der Rückgabeausdruck ist äquivalent zu
a+b==5||((-6<a-b||a-b<6)&&(a-b)%5==0)
.quelle
Scala, 43 Bytes
Probieren Sie es online!
quelle
||
zu|
? Ich weiß, dass es in Java, C #, Python oder JavaScript möglich ist, aber ich bin mir nicht sicher, was Scala angeht.Perl 6 , 24 Bytes
-1 Byte danke an Grimy
Probieren Sie es online!
Dies nutzt die Any Junction aber technisch
^
könnte das auch funktionieren.Erläuterung:
quelle
{$^a-$^b==5|0|-5|5-2*$b}
C (gcc) ,
4134 BytesProbieren Sie es online!
quelle
f
zurücka
? Nur ein undefiniertes Verhalten?05AB1E ,
1312 BytesProbieren Sie es online!
Übernimmt die Eingabe als Liste von Ganzzahlen und speichert ein Byte. Vielen Dank @ Wisław!
Alternative 12-Byte-Antwort
Probieren Sie es online!
Dieser nimmt Eingaben in separaten Zeilen vor.
quelle
|
?OI`αª5¢IË~Ā
. Eingabe ist eine Liste von ganzen Zahlen.OIÆÄ)5QIËM
ist 10.05AB1E , 10 Bytes
Probieren Sie es online!
Versucht, es mit Nur-Stapel-Operationen zu tun, aber es war länger.
quelle
0
wie[5, -5]
OIÆÄ‚5QIËM
) hinterlassen haben, ist korrekt[5,-5]
.OsÆÄ‚5åsË~
. Es scheint fast identisch mit deinem zu sein. Probieren Sie es online!Rubin , 34 Bytes
Online-Auswertung - Dank nur an ASCII
quelle
.nil?
Überprüfung, um die Ausgabe im erforderlichen Format zu ermöglichen.->(a,b){[a+5,a-5,5-a,a].index(b).nil?}
Dies ist länger als die aktuelle.Tcl , 53 Bytes
Probieren Sie es online!
quelle
Japt ,
1413 BytesProbieren Sie es online!
quelle
Batch, 81 Bytes
Nimmt Eingaben als Befehlszeilenargumente und gibt bei Erfolg 1 aus, bei Fehlern nichts. Batch kann nicht leicht disjunktieren, daher verwandle ich es nach den Gesetzen von De Morgan in eine Konjunktion.
quelle
Kohle , 18 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Port der @ ArBo Python 2-Lösung.
quelle
Japt,
1312 BytesProbieren Sie es aus oder führen Sie alle Testfälle aus
quelle
[-5,5]
(sollte falsch sein)Common Lisp, 48 Bytes
quelle
Brachylog , 8 Bytes
Nimmt die Eingabe als Liste mit zwei Zahlen (
_
für Negative verwenden).Probieren Sie es online!Erläuterung
Ziemlich genau eine direkte Übersetzung der Spezifikation:
quelle
Retina 0.8.2 , 82 Bytes
Probieren Sie es online! Link enthält Testfälle. Erläuterung: Die ersten beiden Zeilen wandeln die Eingaben in unäre um. Die letzte Zeile prüft dann, ob eine der zulässigen Übereinstimmungen vorliegt:
Geschwenkt durch die letzte Spalte, die wir bekommen:
quelle