Wprowadzenie
Niedawno ja i kilku moich przyjaciół zdecydowaliśmy się zagrać w kilka kart, a jedna z nich zaproponowała grę „Irish Snap”, która była inspiracją do tego wyzwania. Jednak później dowiedziałem się, że gra ma wiele różnych zasad, z którymi możesz grać, z których niektóre są wymienione tutaj . Reguły, które są w tym wyzwaniu, nie są obecnie wymienione na tej stronie, stąd nazwa „Reguły wariantów”
Wyzwanie
Biorąc pod uwagę tablicę 3 kart, wypisz wartość prawdy lub falseya w zależności od tego, czy wykonają prawidłowy snap w grze irlandzkiego snap.
Wejście
Dane wejściowe to tablica 3 liczb, od 1 do 13 włącznie, przy czym 1 reprezentuje asa, 11 reprezentuje waleta, 12 reprezentuje królową, a 13 reprezentuje króla. Dane wejściowe mogą być w dowolnej kolejności: góra, środek, dół.
Zasady
4 różne kryteria, jeśli karty dokonują irlandzkiego przyciągania, to:
- Górna i środkowa karta są takie same
- Górne i środkowe karty różnią się jedną
- Górne i dolne karty są takie same
- Górne i dolne karty różnią się jedną
Jeśli którekolwiek z tych kryteriów są spełnione, musisz podać prawdziwą wartość. Oprócz tego, dla dwóch kryteriów, które wymagają, aby karty różniły się jednym, „owija się”, co oznacza, że as i król mają różnicę jednego i odwrotnie.
Przypadki testowe
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
źródło
top, [middle, bottom]
?0
dlafalse
i jakąkolwiek inną liczbę całkowitą dlatrue
, a nawet jakąkolwiek ujemną liczbę całkowitą dlafalse
lub jakąkolwiek liczbę całkowitą dodatnią dlatrue
?Odpowiedzi:
Python 3 , 38 bajtów
Wypróbuj online!
Zwraca niepusty zestaw (prawda), jeśli jest poprawny, pusty zestaw (falsey), jeśli nie. Pobiera dane wejściowe w kolejności góra-środek-dół, ale można zmienić kolejność dla tego samego rozmiaru kodu.
źródło
Perl 6 , 16 bajtów
Wypróbuj online!
Anonimowa dowolna lambda, która pobiera dane wejściowe jako
top, middle, bottom
i zwraca Junction, które ma wartość Prawda lub Fałszźródło
<
była zła biała spacja , była to idealna okazja, aby mieć buźkę z sercem.05AB1E ,
76 bajtówWypróbuj online!
Przyjmuje dane wejściowe jako
[middle, bottom], top
.Tylko 1 jest prawdą w 05AB1E. 0! i 1! są równe 1, podczas gdy żadna inna liczba nie ma silni 1.
źródło
J , 12 bajtów
Wypróbuj online!
Biorąc dolny środek jako lewy arg, górny jak prawy arg.
oryginalna odpowiedź przyjmująca dane wejściowe jako jedną listę
J , 24 bajty
Wypróbuj online!
#:@3 5
Liczby binarne 3 i 5 to0 1 1
i1 0 1
które są maskami odpowiednio dla środkowej / górnej i dolnej / górnej karty(12||@-/)@#
Filtrujemy dane wejściowe za pomocą tych masek, bierzemy wartość abs wynikowych różnic, a następnie resztę dzielimy przez 12 (w przypadku asa-króla)1 e.2>
czy jedna z uzyskanych liczb jest mniejsza niż 2, tj. 0 lub 1?źródło
JavaScript (ES6), 29 bajtów
Pobiera dane wejściowe jako
([bottom, middle])(top)
.Wyjście jest odwrócone.
Wypróbuj online!
JavaScript (ES6),
3730 bajtówZapisano 1 bajt dzięki @Grimy
Pobiera dane wejściowe jako
([bottom, middle])(top)
.Wypróbuj online!
źródło
%144
może być%72
%13
też by działało.Węgiel drzewny , 12 bajtów
Wypróbuj online! Port odpowiedzi @ Grimy. Pobiera dane wejściowe jako trzy osobne wartości: dolną, środkową, górną i wyjściową przy użyciu domyślnego logicznego formatu Charcoal
-
dla true, nic dla false. Wyjaśnienie:źródło
Perl 5
-ap
, 31 bajtówWypróbuj online!
Wejście:
W rzeczywistości kolejność środka i dołu nie ma znaczenia.
Wynik:
0
za fałsz;1
naprawdęźródło
Pyth ,
1211 bajtówPobiera dane wejściowe jako
[bottom, top, middle]
lub[middle, top, bottom]
(obie działają). Wyjścia[]
(Falsy w Pyth) jeśli nie ma ważny przystawki, niepusty tablica inaczej.Wypróbuj online!
Jeśli wymagana jest spójna wartość prawda / fałsz, dodaj
.A
z przodu dla +2 bajtów. Wtedy wyjście będzieTrue
lubFalse
.Wyjaśnienie
Edycja: -1 z innym podejściem
źródło
Galaretka , 6 bajtów
Wypróbuj online!
źródło
C (gcc) ,
4743 bajtówWypróbuj online!
źródło
Japt , 7 bajtów
Spróbuj
źródło
Galaretka , 6 bajtów
Wypróbuj online!
Monadyczny link przyjmujący listę
[middle, top, bottom]
jako argument i zwracający się1
do przystawki i0
bez przystawki.źródło
T-SQL 2008, 40 bajtów
Wypróbuj online
źródło
[R], 23 bajty
przyjmuje dane wejściowe jako a = c (dół, góra, środek):
any(abs(diff(a))%%12<2)
źródło