Einführung
Kürzlich beschlossen ich und ein paar meiner Freunde, ein paar Karten zu spielen, und einer von ihnen schlug das Spiel 'Irish Snap' vor, das die Inspiration für diese Herausforderung war. Später erfuhr ich jedoch, dass das Spiel viele verschiedene Regeln enthält, mit denen Sie spielen können, von denen einige hier aufgelistet sind . Die Regeln, die in dieser Herausforderung enthalten sind, sind derzeit nicht auf dieser Seite aufgeführt, daher der Name "Variantenregeln".
Die Herausforderung
Geben Sie bei einer Reihe von 3 Karten einen Wahrheits- oder Falschgeldwert aus, je nachdem, ob sie in einem irischen Snap-Spiel einen gültigen Snap erzielen.
Eingang
Die Eingabe besteht aus einem Array von 3 Zahlen mit einem Bereich von 1 bis einschließlich 13, wobei 1 ein Ass darstellt, 11 einen Buben, 12 eine Dame und 13 einen König. Die Eingabe kann in einer beliebigen Reihenfolge von oben, Mitte und unten erfolgen.
Regeln
Die 4 verschiedenen Kriterien für einen Irish Snap sind:
- Die oberen und mittleren Karten sind gleich
- Die oberen und mittleren Karten haben einen Unterschied von eins
- Die oberen und unteren Karten sind gleich
- Die oberen und unteren Karten haben einen Unterschied von eins
Wenn eines dieser Kriterien erfüllt ist, müssen Sie einen Wahrheitswert ausgeben. Außerdem wird für die beiden Kriterien, bei denen die Karten einen Unterschied von 1 aufweisen müssen, ein Umlauf ausgeführt, was bedeutet, dass ein Ass und ein König einen Unterschied von 1 aufweisen und umgekehrt.
Testfälle
Input (Bottom, Middle, Top) -> Output
1 13 7 -> False
1 4 13 -> True
9 3 6 -> False
8 9 7 -> True
2 6 5 -> True
12 5 11 -> True
10 4 8 -> False
12 13 7 -> False
9 7 10 -> True
7 3 1 -> False
4 2 3 -> True
quelle
top, [middle, bottom]
?0
fürfalse
und jede andere ganze Zahl fürtrue
oder sogar jede negative Zahl fürfalse
oder eine positive ganze Zahl fürtrue
?Antworten:
Python 3 , 38 Bytes
Probieren Sie es online!
Gibt eine nicht leere Menge (truey) zurück, wenn gültig, eine leere Menge (falsey), wenn nicht. Übernimmt die Eingabe in der Reihenfolge von oben nach unten, kann jedoch für dieselbe Codegröße neu angeordnet werden.
quelle
Perl 6 , 16 Bytes
Probieren Sie es online!
Unbekanntes Lambda, das Eingaben als nimmt
top, middle, bottom
und eine Junction zurückgibt, die mit True oder False ausgewertet wirdquelle
<
, dies war die perfekte Gelegenheit, um einen Herz-Smiley zu haben.05AB1E ,
76 BytesProbieren Sie es online!
Übernimmt Eingaben als
[middle, bottom], top
.In 05AB1E ist nur 1 wahr. 0! und 1! sind beide 1, während keine andere Zahl eine Fakultät von 1 hat.
quelle
J , 12 Bytes
Probieren Sie es online!
Nehmen Sie unten Mitte als linkes Argument, oben als rechtes Argument.
Die ursprüngliche Antwort wird als eine Liste eingegeben
J , 24 Bytes
Probieren Sie es online!
#:@3 5
Die Binärzahlen 3 und 5 sind0 1 1
und1 0 1
sind die Masken für die mittlere / obere bzw. untere / obere Karte(12||@-/)@#
Wir filtern die Eingabe mit diesen Masken, nehmen den abs-Wert der resultierenden Differenzen und dann den Rest, wenn er durch 12 geteilt wird (für den Ass-König-Fall).1 e.2>
ist eine der resultierenden Zahlen kleiner als 2, dh 0 oder 1?quelle
JavaScript (ES6), 29 Byte
Übernimmt die Eingabe als
([bottom, middle])(top)
.Der Ausgang ist invertiert.
Probieren Sie es online!
JavaScript (ES6),
37-30Bytes1 Byte dank @Grimy gespeichert
Übernimmt die Eingabe als
([bottom, middle])(top)
.Probieren Sie es online!
quelle
%144
könnte sein%72
%13
würde auch funktionieren.Kohle , 12 Bytes
Probieren Sie es online! Port of @ Grimys Antwort. Nimmt die Eingabe als drei separate Werte für bottom, middle, top und output unter Verwendung des booleschen Standardformats von Charcoal
-
für true, nichts für false. Erläuterung:quelle
Perl 5
-ap
, 31 BytesProbieren Sie es online!
Eingang:
Tatsächlich spielt die Reihenfolge von Mitte und Boden keine Rolle.
Ausgabe:
0
für falsch;1
für wahrquelle
Pyth ,
1211 BytesÜbernimmt die Eingabe als
[bottom, top, middle]
oder[middle, top, bottom]
(beide funktionieren). Ausgänge[]
(Falsy in Pyth) , wenn es keine gültige Snap, ein nicht-leeres Array anders.Probieren Sie es online!
Wenn ein konsistenter Wahrheits- / Falschwert erforderlich ist, geben Sie
.A
+2 Bytes voran . Dann wird ausgegebenTrue
oderFalse
.Erläuterung
Edit: -1 mit einem anderen Ansatz
quelle
Gelee , 6 Bytes
Probieren Sie es online!
quelle
C (gcc) ,
4743 BytesProbieren Sie es online!
quelle
Japt , 7 Bytes
Versuch es
quelle
Gelee , 6 Bytes
Probieren Sie es online!
Ein monadischer Link, der die Liste von
[middle, top, bottom]
als Argument verwendet und1
für Fang und0
für keinen Fang zurückgibt.quelle
T-SQL 2008, 40 Byte
Probieren Sie es online aus
quelle
[R], 23 Bytes
Eingabe als a = c (unten, oben, Mitte):
any(abs(diff(a))%%12<2)
quelle