Irish Snap: Zasady wariantów


14

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

2
Czy możemy wziąć karty osobno? Lub wziąć wkład jako top, [middle, bottom]?
— Jo King

jasne, możesz zrobić jedno i drugie. zmienił pytanie, aby to odzwierciedlić
— EdgyNerd

Czy możemy odwrócić dane wyjściowe, tzn. Zwrócić False dla prawidłowych snapów i odwrotnie? Co powiesz na przypadek testowy, w którym ważne są zarówno środek, jak i dół?
— Jo King

Tak, możesz odwrócić dane wyjściowe. Ponadto dodano ten przypadek testowy
— EdgyNerd

Czy wartości wyjściowe muszą być spójne, czy możemy, na przykład, wyprowadzać 0dla falsei jakąkolwiek inną liczbę całkowitą dla true, a nawet jakąkolwiek ujemną liczbę całkowitą dla falselub jakąkolwiek liczbę całkowitą dodatnią dla true?
— Shaggy

Odpowiedzi:


4

Python 3 , 38 bajtów

lambda x,y,z:{x-y,x-z}&{0,1,12,-1,-12}

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.


4

Perl 6 , 16 bajtów

3>(*-(*|*)+1)%13

Wypróbuj online!

Anonimowa dowolna lambda, która pobiera dane wejściowe jako top, middle, bottomi zwraca Junction, które ma wartość Prawda lub Fałsz


Wcześniej wymagana <była zła biała spacja , była to idealna okazja, aby mieć buźkę z sercem.
— Grimmy,

3

05AB1E , 7 6 bajtów

α12%ß!

Wypróbuj online!

Przyjmuje dane wejściowe jako [middle, bottom], top.

α        # absolute difference
 12%     # mod 12
    ß    # minimum
     !   # factorial

Tylko 1 jest prawdą w 05AB1E. 0! i 1! są równe 1, podczas gdy żadna inna liczba nie ma silni 1.


2

J , 12 bajtów

1 e.2>12||@-

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

1 e.2>#:@3 5(12||@-/)@#]

Wypróbuj online!

  • #:@3 5Liczby binarne 3 i 5 to 0 1 1i 1 0 1któ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?

2

JavaScript (ES6), 29 bajtów

Pobiera dane wejściowe jako ([bottom, middle])(top).

Wyjście jest odwrócone.

a=>c=>a.every(n=>(n-c)/2%6|0)

Wypróbuj online!


JavaScript (ES6),  37  30 bajtów

Zapisano 1 bajt dzięki @Grimy

Pobiera dane wejściowe jako ([bottom, middle])(top).

a=>c=>a.some(n=>(n-=c)*n%72<2)

Wypróbuj online!


%144może być%72
— Grimmy

@Grimy Thanks! FWIW %13też by działało.
— Arnauld,

2

Węgiel drzewny , 12 bajtów

›²⌊﹪↔⁻E²NN¹²

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:

 ²              Literal 2
›               Is greater than
  ⌊             Minimum of
    ↔            Absolute value of (vectorised)
      E²N       First two numeric inputs as a list ([bottom, middle])
     ⁻          Minus (vectorised)
         N      Third input (top)
   ﹪            Modulo (vectorised)
          ¹²    Literal 12

1

Perl 5 -ap , 31 bajtów

$t=<>}{$\|=abs($t-$_)%12<2for@F

Wypróbuj online!

Wejście:

bottom middle
top

W rzeczywistości kolejność środka i dołu nie ma znaczenia.

Wynik:

0za fałsz; 1naprawdę


1

Pyth , 12 11 bajtów

Pobiera 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.

f>2%.aT12.+

Wypróbuj online!

Jeśli wymagana jest spójna wartość prawda / fałsz, dodaj .Az przodu dla +2 bajtów. Wtedy wyjście będzie Truelub False.

Wyjaśnienie

  f             # Filter on lambda T:
   >2           # 2 > 
      .aT       #     abs(T)
     %   12     #            % 12
           .+   # the list of deltas (difference between consecutive elements)

.A (if required)# Any truthy values in the above list?

Edycja: -1 z innym podejściem







0

[R], 23 bajty

przyjmuje dane wejściowe jako a = c (dół, góra, środek):

any(abs(diff(a))%%12<2)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.