Tradycyjny Zachodnia matryca jest kostka, na której liczby całkowite od 1 do 6 są oznaczone na twarzach. Pary, które dodają do 7, są umieszczane na przeciwległych powierzchniach.
Ponieważ jest to kostka, w danym momencie możemy zobaczyć tylko od 1 do 3 ścian (włącznie) 1 . Przeciwnych twarzy nigdy nie można zobaczyć jednocześnie.
Twoim zadaniem jest napisanie programu lub funkcji, która na podstawie listy liczb całkowitych reprezentujących boki na matrycy określa, czy można zobaczyć te twarze w tym samym czasie.
1 Okay, może widzisz 4 lub 5 twarzy parą oczu, ale na potrzeby tego wyzwania obserwujemy kość z jednego punktu.
Zasady:
- Twoje zgłoszenie może obejmować listę danych wejściowych:
- Jest niepusty
- Zawiera tylko wartości, które spełniają
1 ≤ n ≤ 6
. - Nie zawiera zduplikowanych elementów.
- Być może nie zakładać, że wejście jest posortowana.
- Twoje zgłoszenie powinno dawać wartość prawda / fałsz : prawda jest taka, że twarze można zobaczyć w tym samym czasie, a fałsz inaczej.
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź (w bajtach)!
- Standardowe luki są domyślnie zabronione.
Przypadki testowe
Prawda:
[6] (One face)
[6, 2] (Share a side)
[1, 3] (Share a side)
[2, 1, 3] (Share a vertex)
[3, 2, 6] (Share a vertex)
Falsy:
[1, 6] (1 and 6 are opposite)
[5, 4, 2] (2 and 5 are opposite)
[3, 1, 4] (3 and 4 are opposite)
[5, 4, 6, 2] (Cannot see 4 faces)
[1, 2, 3, 4, 5, 6] (Cannot see 6 faces)
code-golf
decision-problem
FlipTack
źródło
źródło
Odpowiedzi:
Python 2 , 35 bajtów
Wypróbuj online!
źródło
JavaScript (ES6),
38 34 30 2928 bajtówPobiera dane wejściowe jako dowolną liczbę oddzielnych parametrów. Zwraca
0
lub1
.Przypadki testowe
Pokaż fragment kodu
W jaki sposób?
Poniżej znajdują się uproszczone wersje głównego wyrażenia zgodnie z liczbą podanych parametrów, niezdefiniowane zmienne są wymuszane na 0 lub fałsz :
NB : Kolejność (a, b, c) nie ma znaczenia, ponieważ zawsze są razem XOR.
Najtrudniejszy przypadek to trzeci przypadek. Oto tabela pokazująca wszystkie możliwe kombinacje:
Alt. wersja nr 1, 32 bajty
Pobiera dane wejściowe jako tablicę. Zwraca wartość logiczną.
Przypadki testowe
Pokaż fragment kodu
Alt. wersja # 2, Chrome / Firefox, 34 bajty
Ten nadużywa metod sortowania w Chrome i Firefox. Nie działa z Edge.
Pobiera dane wejściowe jako tablicę. Zwraca
0
lub1
.Przypadki testowe
Pokaż fragment kodu
źródło
Haskell , 24 bajty
-3 bajty dzięki H.PWiz.
Wypróbuj online!
Wyjaśnienie
źródło
APL (Dyalog) , 7 bajtów
Wypróbuj online!
∘.+⍨
- tabela dodatków (każdy element z każdym elementem)7∊
- 7 istnieje?~
- negowaćAPL (Dyalog) , 7 bajtów
Wypróbuj online!
7-⊢
- odejmij każdy element od 7⊢∩
- przecinają się z oryginalną tablicą⍬≡
- pusty?źródło
R , 27 bajtów
dzięki Gregorowi za naprawienie błędu
Wypróbuj online!
Odpowiedź Porta Chasa Browna . Operacje wektoryzacji pomagają znacznie skrócić to w R.
źródło
(7-d)
, inned%in%d
mają pierwszeństwo.Mathematica, 20 bajtów
jest\[Function]
-12 bajtów od Martina Endera
-7 bajtów od Miszy Ławrow
Wypróbuj online!
źródło
Haskell , 26 bajtów
Wypróbuj online!
źródło
Pyth , 5 bajtów
Wypróbuj tutaj.
źródło
Właściwie 8 bajtów
Wypróbuj online! (uruchamia wszystkie przypadki testowe)
Wyjaśnienie:
źródło
Łuska , 5 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Siatkówka ,
2120 bajtówWypróbuj online! Link zawiera przypadki testowe. Edycja: Zapisano 1 bajt dzięki @MartinEnder. Wyjaśnienie:
Posortuj dane wejściowe.
Sprawdź parę przeciwnych stron (sortowanie 3 i 4 obok siebie). Zwraca 1 za nieprawidłową kostkę lub 0 za prawidłową.
Logicznie zaneguj wynik.
źródło
Galaretka , 5 bajtów
Wypróbuj online!
Port Chas Browna odpowiedź .
Wyjaśnienie
źródło
Alice , 18 bajtów
Wypróbuj online!
Drukuje
Jabberwocky
prawidłowe dane wejściowe i nic poza tym.Wyjaśnienie
Rozwijając zygzakowaty przepływ sterowania, program jest naprawdę po prostu:
źródło
Pyth , 5 bajtów
Zestaw testowy.
isaacg zapisał bajt!
źródło
Ruby ,
36 31 2423 bajtówWypróbuj online!
To było takie proste, cały czas szukałem rozwiązania niewłaściwego problemu.
źródło
05AB1E , 5 bajtów
Wypróbuj online!
Wyjaśnienie
Jeden z kilku sposobów, aby to zrobić w 5 bajtach w 05AB1E
źródło
Perl 5 , 51 + 1 (
-a
) = 52 bajtyWypróbuj online!
źródło
3 1 4
daje prawdę, a cosay 1>grep{$x=$_;grep$_+$x==7,@F}@F
Siatkówka , 20 bajtów
Wypróbuj online!
Alternatywa dla podejścia Neila.
Wyjaśnienie
Skręć w
6
,5
,4
na1
,2
,3
, odpowiednio.Spróbuj znaleźć powtarzające się postacie i policz liczbę dopasowań.
Upewnij się, że wynik był zerowy (faktycznie logiczna negacja).
źródło
Java (OpenJDK 8) , 43 bajty
Wypróbuj online!
źródło
GNU sed ,
3722 + 1 = 23 bajty+1 bajt dla
-r
flagi. Pobiera dane wejściowe jako cyfry; wypisuje dane wejściowe dla prawdy i0
fałszu.-10 bajtów dzięki @MartinEnder.
Wypróbuj online!
Wyjaśnienie
Podobne do odpowiedzi Alicji @ MartinEndera .
źródło
Perl 6 , 18 bajtów
Wypróbuj online!
1 & 6 | 2 & 5 | 3 & 4
to skrzyżowanie składające się z liczb 1 i 6, LUB liczb 2 i 5, LUB liczb 3 i 4. To połączenie jest elementem (∈
) listy wejściowej,*
jeśli zawiera 1 i 6 lub 2 i 5 lub 3 oraz 4. Ten wynik jest następnie negowany (!
), aby uzyskać wymaganą wartość logiczną.źródło
Haskell,
46 4137 bajtówBierze ze sobą kartezjański produkt z listy, a następnie sprawdza, czy wszystkie wynikowe listy nie sumują się do 7. (Jeśli którakolwiek z nich zsumuje się do 7, widoczne będą przeciwległe twarze, a „nie wszystkie” jest krótsze niż „nie any do ”.)
źródło
J , 12 bajtów
To prawie tak samo, jak pierwsze rozwiązanie APL firmy Uriel
Wypróbuj online!
źródło
Formuła IBM / Lotus Notes, 7 bajtów
Pobiera dane wejściowe z pola liczbowego o wielu wartościach i.
Rekurencyjnie odejmuje każdą wartość i od 7 i sprawdza, czy jest na oryginalnej liście. ! zmienia 1, jeśli ma wartość 0 (twarze nie są widoczne).
Przypadki testowe (brak dostępnych TIO dla Notes Formula)
źródło
Czysty , 49 bajtów
Wypróbuj online!
źródło
Szybki , 46 bajtów
Pobiera dane wejściowe jako
[Int]
(tablica liczb całkowitych) i zwraca wartośćBool
(boolean).Krótkie wyjaśnienie (bez golfa)
źródło
Clojure ,
898072 bajtów-9 bajtów, ponieważ zdałem sobie sprawę, że użycie
reduced
jest niepotrzebne-8 bajtów poprzez zmianę z używania
reduce
na używaniesome
Próbowałem to napisać, nie patrząc na sztuczki, których używają inne odpowiedzi. Może uda mi się to poprawić później.
Zwraca
true
w prawdziwych przypadkach,false
jeśli którakolwiek ze stron sumuje się do 7, anil
liczba stron jest nielegalna.źródło