Einführung:
Ich habe gesehen, dass es im Moment nur eine weitere Herausforderung im Zusammenhang mit Badminton gibt . Da ich selbst Badminton spiele (seit 13 Jahren), habe ich mir gedacht, dass ich einige Herausforderungen im Zusammenhang mit Badminton hinzufügen würde. Hier der erste:
Herausforderung:
Eingabe: Zwei Ganzzahlen
Ausgabe: Eine von drei eindeutigen Ausgaben Ihrer Wahl. Eine, die angibt, dass die Eingabe eine gültige Badminton-Punktzahl ist UND der Satz mit einem Gewinner endet. eine, die angibt, dass die Eingabe eine gültige Badminton-Punktzahl ist UND der Satz noch im Spiel ist; Ein Wert, der die Eingabe angibt, ist keine gültige Badminton-Punktzahl.
Beim Badminton beginnen beide (Paar-) Spieler mit 0 Punkten, und Sie hören auf, wenn einer der beiden (Paar-) Spieler eine Punktzahl von 21 mit mindestens 2 Punkten Unterschied von maximal 30 bis 29 erreicht hat.
Das sind also alle möglichen Eingabepaare (in beliebiger Reihenfolge), die anzeigen, dass es sich um eine gültige Badminton-Punktzahl handelt UND der Satz beendet ist:
[[0,21],[1,21],[2,21],[3,21],[4,21],[5,21],[6,21],[7,21],[8,21],[9,21],[10,21],[11,21],[12,21],[13,21],[14,21],[15,21],[16,21],[17,21],[18,21],[19,21],[20,22],[21,23],[22,24],[23,25],[24,26],[25,27],[26,28],[27,29],[28,30],[29,30]]
Und dies sind alle möglichen Eingabepaare (in beliebiger Reihenfolge), die anzeigen, dass es sich um eine gültige Badminton-Punktzahl handelt, ABER das Set ist noch im Spiel:
[[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15],[0,16],[0,17],[0,18],[0,19],[0,20],[1,1],[1,2],[1,3],[1,4],[1,5],[1,6],[1,7],[1,8],[1,9],[1,10],[1,11],[1,12],[1,13],[1,14],[1,15],[1,16],[1,17],[1,18],[1,19],[1,20],[2,2],[2,3],[2,4],[2,5],[2,6],[2,7],[2,8],[2,9],[2,10],[2,11],[2,12],[2,13],[2,14],[2,15],[2,16],[2,17],[2,18],[2,19],[2,20],[3,3],[3,4],[3,5],[3,6],[3,7],[3,8],[3,9],[3,10],[3,11],[3,12],[3,13],[3,14],[3,15],[3,16],[3,17],[3,18],[3,19],[3,20],[4,4],[4,5],[4,6],[4,7],[4,8],[4,9],[4,10],[4,11],[4,12],[4,13],[4,14],[4,15],[4,16],[4,17],[4,18],[4,19],[4,20],[5,5],[5,6],[5,7],[5,8],[5,9],[5,10],[5,11],[5,12],[5,13],[5,14],[5,15],[5,16],[5,17],[5,18],[5,19],[5,20],[6,6],[6,7],[6,8],[6,9],[6,10],[6,11],[6,12],[6,13],[6,14],[6,15],[6,16],[6,17],[6,18],[6,19],[6,20],[7,7],[7,8],[7,9],[7,10],[7,11],[7,12],[7,13],[7,14],[7,15],[7,16],[7,17],[7,18],[7,19],[7,20],[8,8],[8,9],[8,10],[8,11],[8,12],[8,13],[8,14],[8,15],[8,16],[8,17],[8,18],[8,19],[8,20],[9,9],[9,10],[9,11],[9,12],[9,13],[9,14],[9,15],[9,16],[9,17],[9,18],[9,19],[9,20],[10,10],[10,11],[10,12],[10,13],[10,14],[10,15],[10,16],[10,17],[10,18],[10,19],[10,20],[11,11],[11,12],[11,13],[11,14],[11,15],[11,16],[11,17],[11,18],[11,19],[11,20],[12,12],[12,13],[12,14],[12,15],[12,16],[12,17],[12,18],[12,19],[12,20],[13,13],[13,14],[13,15],[13,16],[13,17],[13,18],[13,19],[13,20],[14,14],[14,15],[14,16],[14,17],[14,18],[14,19],[14,20],[15,15],[15,16],[15,17],[15,18],[15,19],[15,20],[16,16],[16,17],[16,18],[16,19],[16,20],[17,17],[17,18],[17,19],[17,20],[18,18],[18,19],[18,20],[19,19],[19,20],[20,20],[20,21],[21,21],[21,22],[22,22],[22,23],[23,23],[23,24],[24,24],[24,25],[25,25],[25,26],[26,26],[26,27],[27,27],[27,28],[28,28],[28,29],[29,29]]
Jedes andere ganzzahlige Paar wäre ein ungültiger Badminton-Score.
Herausforderungsregeln:
- I / O ist flexibel, also:
- Sie können die Eingabe als Liste mit zwei Zahlen annehmen. zwei durch STDIN oder Funktionsparameter getrennte Zahlen; zwei Saiten; etc.
- Es werden drei unterschiedliche und eindeutige Werte Ihrer Wahl ausgegeben. Kann ganze Zahlen sein (dh
[0,1,2]
,[1,2,3]
,[-1,0,1]
, etc.); kann boolesch sein (dh[true,false,undefined/null/empty]
); kann Zeichen / Strings sein (zB["valid & ended","valid","invalid"]
); etc. - Bitte geben Sie die E / A an, die Sie in Ihrer Antwort verwendet haben!
- Sie können die vorbestellten Eingabe-Ganzzahlen vom niedrigsten zum höchsten Wert oder umgekehrt verwenden.
- Die Eingabe-Ganzzahlen können negativ sein. In diesem Fall sind sie natürlich ungültig.
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln mit Standard-E / A-Regeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp, verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu (z. B. TIO ).
- Außerdem wird dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
Testfälle:
Diese Testfälle sind gültig und der Satz wurde beendet:
0 21
12 21
21 23
28 30
29 30
Diese Testfälle sind gültig, aber das Set ist noch im Spiel:
0 0
0 20
12 12
21 21
21 22
Diese Testfälle sind ungültig:
-21 19
-19 21
-1 1
12 22
29 31
30 30
42 43
1021 1021
b-61<~a<a>b/22*b-3
) können Sie 3 Bytes einsparen.lambda a,b:-(a<0)|cmp(2+max(19,a)%30-a/29,b)
JavaScript (ES6),
55 5348 ByteVielen Dank an @KevinCruijssen für die Feststellung, dass ich nicht vollständig vona≤b ausgegangen bin (5 Byte gespart)
Nimmt Eingaben wiea≤b . Gibt 0 (gültig), 1 (beendet) oder 2 (ungültig) zurück.
(a)(b)
beiProbieren Sie es online!
quelle
C # (Visual C # Interactive Compiler) ,
5352 ByteGenannt als
f(max)(min)
. Gibt 3 für ungültig, 1 für beendet und 2 für fortlaufend zurück.Dank Kevin Cruijjsen 1 Byte gespeichert
Probieren Sie es online!
quelle
Gelee , 25 Bytes
Probieren Sie es online!
Linkes Argument: Minimum. Richtiges Argument: maximal.
Ungültig:
0
. Andauernd:1
. Beendet:2
.Mathematisch funktioniert dies wie folgt (das linke Argument istx , das rechte ist y ):
Erläuterung:
quelle
VDM-SL , 80 Bytes
Diese Funktion nimmt die Bewertungen in aufsteigender Reihenfolge und gibt die leere Menge zurück, wenn die Bewertung ungültig ist oder die Menge enthält, ob die Menge vollständig ist (also {true}, wenn die Menge vollständig und gültig ist und {false}, wenn die Menge unvollständig ist und gültig)
Ein vollständiges Programm könnte so aussehen:
Erläuterung:
quelle
Java (JDK) ,
5948 BytesProbieren Sie es online!
Gibt eine zurück
Object
, dieInteger
0
für ungültige Spiele und dieBoolean
strue
undfalse
für gültige laufende Spiele bzw. für gültige beendete Spiele gilt. Nimmt die bestellte Punktzahl (und die Curry-Punktzahl), wobei die höhere Punktzahl an erster Stelle steht.-2 bytes
durch Umkehren der Spielende-Prüfung.-11 bytes
durch Currying, Verwendung von bitweisen Operatoren und einige Tricks beim Autoboxing von Rückgabetypen - danke an @KevinCruijssenUngolfed
quelle
APL (Dyalog Unicode) , 35 Byte SBCS
Infix-implizite Funktion, bei der "ended" 2 ist, "running" 1 ist, "invalid" 0 ist und kleinere und größere Scores übrig bleiben.
Probieren Sie es online!
Implementiert Erik der Outgolfer mathematische Formeln kombiniert in
und direkt in APL übersetzt (was streng rechtsassoziativ ist, daher vermeiden wir einige Klammern):
Welches ist unsere Lösung?
(,≡30 31|,)×(⊢<2+X)×1+⊢>X←29⌊20⌈1+⊣
:⊣
1+
20⌈
29⌊
X←
X
⊢>
1+
(
)×
2+X
X
⊢<
(
)×
,
30 31|
,≡
quelle
x86-Assembly, 42 Bytes
Nimmt Eingaben auf
ECX
undEDX
registriert sie. Beachten Sie,ECX
dass größer als sein mussEDX
.Ausgabe in
EAX
, wobei0
bedeutet, dass das Spiel noch läuft,1
das Spiel als beendet und-1
(akaFFFFFFFF
) eine ungültige Punktzahl darstellt.Oder besser lesbar in Intel Syntax:
Tolles Faktum: Diese Funktion folgt fast den Regeln der C Calling Convention, welche Register erhalten bleiben sollen, außer ich musste puffern
EBX
, um ein paar Bytes bei der Stapelverwendung zu sparen.Optional (nicht in der Byteanzahl enthalten)
Indem Sie die folgenden 6 Bytes direkt vor dem Start des obigen Codes hinzufügen, können Sie übergeben
ECX
undEDX
ungeordnet:Welches ist das Folgende in lesbarer Intel-Syntax:
quelle
Retina 0,8,2 , 92 Bytes
Probieren Sie es online! Link enthält Testfälle. Nimmt die Eingabe in aufsteigender Reihenfolge vor. Erläuterung: Die erste Stufe wird einfach von dezimal nach unär konvertiert, damit die Ergebnisse richtig verglichen werden können. Die zweite Stufe enthält sechs alternative Muster, die in drei Gruppen eingeteilt sind, so dass drei unterschiedliche Werte ausgegeben werden können, die
10
für den Gewinn,01
für den Fortbestand und00
für den illegalen Gebrauch sind. Die Muster sind:quelle
APL (Dyalog Unicode) ,
3332 Byte SBCSProbieren Sie es online!
in: ein Paar in absteigender Reihenfolge
out: 2 = läuft, 1 = beendet, 0 = ungültig
Tests gestohlen von Adáms Antwort
quelle
Bash 4+,
97899188 BytesAngenommen, die Eingaben sind aufsteigend. Verwendete Konzepte von VDM-SL antworten. Online ausprobieren
z==0
- Spiel läuftz==1
- Spiel beendetz==2
- ungültig-8 durch Klammerbereinigung von
(( & | ))
Bedingungen+2 Fehlerbehebung dank Kevin Cruijssen
-3 Logikverbesserungen von Kevin Cruijssen
quelle
1
statt2
für auszugeben0 30
. Ihre 97-Byte-Version funktionierte ordnungsgemäß. Wenn Sie sie also nicht beheben können, können Sie jederzeit ein Rollback durchführen. Upvoted für diese 97-Version. :)29 30
:( Es sollte "abgeschlossen" seini>29
solltej>29
im zweiten Ternär sein, um es zu reparieren.