New York Times ma codzienną grę online o nazwie Letter Boxed (link znajduje się za zaporą; gra jest również opisana tutaj ), przedstawiona na kwadracie w następujący sposób:
Dostajesz 4 grupy po 3 litery (każda grupa odpowiada jednej stronie na zdjęciu); żadna litera nie pojawia się dwukrotnie. Celem gry jest znalezienie słów składających się z tych 12 liter (i tylko tych liter), aby:
- Każde słowo ma co najmniej 3 litery;
- Kolejne litery nie mogą być z tej samej strony;
- Ostatnia litera słowa staje się pierwszą literą następnego słowa;
- Wszystkie litery są używane co najmniej raz (litery można ponownie wykorzystać).
W tym wyzwaniu otrzymasz litery i listę słów. Celem jest sprawdzenie, czy lista słów jest prawidłowym rozwiązaniem w skrzynce na listy.
Wkład
Dane wejściowe składają się z (1) 4 grup po 3 litery i (2) listy słów. Może być w dowolnym odpowiednim formacie.
Wydajność
Prawdziwa wartość, jeśli lista słów jest prawidłowym rozwiązaniem wyzwania w skrzynce na listy dla tych liter 4 × 3, a w przeciwnym razie wartość falsey.
Przypadki testowe
Grupy liter = {{I,C,O}, {M,R,E}, {G,N,S}, {A,P,L}}
.
Prawdziwe wartości
- PIELGRZYMKA, OBEJMUJ
- CROPS, SAIL, LEAN, NOPE, ENIGMA
Wartości Falsey
- PIELGRZYMKA, GOSPODARKA (nie może mieć CO, ponieważ są po tej samej stronie)
- CROPS, SAIL, LEAN, NOPE (G i M nie były używane)
- PIELGRZYMKA, OBUDOWA (U nie jest jedną z 12 liter)
- OBEJMUJ, PIELGRZYMKA (ostatnia litera pierwszego słowa nie jest pierwszą literą drugiego słowa)
- Oszustwa, SO, ORGANIZACJA, ELOPE (wszystkie słowa muszą mieć co najmniej 3 litery).
Pamiętaj, że w tym wyzwaniu nie dbamy o to, czy słowa są poprawne (część słownika).
Punktacja:
Ten golfowy kod , najniższy wynik w bajtach wygrywa!
źródło
no letter appears twice
[]
i0
są falsey. Czy możemy generować wyniki, czy też nasze wyniki muszą być spójne?Odpowiedzi:
JavaScript (ES6),
130126 bajtówPobiera dane wejściowe jako0 1
(letters)(words)
. Zwraca lub .Wypróbuj online!
Krok 1
Najpierw iteracyjnego do budowy rur oddziela łańcuch składa się z wszystkich nieprawidłowych pary liter. Robiąc to, upewniamy się również, że każda litera pojawia się przynajmniej raz w jednym słowie.L. s
Krok 2
Teraz iterujemy nad aby przetestować każde słowo.W.
źródło
Galaretka ,
3029 bajtówWypróbuj online!
Dyadyczny link, który przyjmuje listę słów jako lewy argument, a spłaszczoną listę liter w polu jako prawy argument. Zwraca wartość
1
prawda i0
fałsz.Wyjaśnienie
źródło
05AB1E ,
37353332312928 bajtów-2 bajty, czerpiąc inspirację z
ê
podejścia @Emigna zastosowanego w jego odpowiedzi 05AB1E .-3 bajty dzięki @Grimy .
Pobiera listę znaków dla słów jako pierwsze wejście, a spłaszczoną listę dwunastu liter jako drugie wejście.
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
źródło
¹€g3@
->DO2@
po pierwszej kontroli ( TIO )05AB1E , 42 bajty
Wypróbuj online!
źródło
P
po mapach i używając)˜P
na końcu. 41 bajtów. Przyjemne podejścieê
! Zapisałem 2 bajty w mojej odpowiedzi 05AB1E.Python 2 , 171 bajtów
Wypróbuj online!
źródło
Galaretka , 34 bajty
Dyadyczny link akceptujący słowa po lewej stronie i grupy liter po prawej, które dają,
1
jeśli są prawidłowe, a0
jeśli nie.Wypróbuj online! Lub zobacz zestaw testowy .
źródło
Haskell , 231 bajtów
Wypróbuj online!
Nie najlepszy wynik. Niektórzy guru z Haskell prawdopodobnie będą w stanie uzyskać to poniżej 100 bajtów.
Stosowanie
Wyjaśnienie
źródło
Haskell , 231 bajtów
Inna odmiana Haskell, dokładnie taka sama jak @Paul Mutser :)
Wypróbuj online!
Nie golfił
źródło
Rubin , 126 bajtów
Wypróbuj online!
źródło
grep
.puts f[l,['PILGRIMAGE','ENCLOSE','EG']]
Zwracatrue
zamiastfalse
.Java (JDK) , 188 bajtów
Wypróbuj online!
Objaśnienia
Kredyty
źródło
Węgiel drzewny , 63 bajty
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Połącz poniższe wyrażenia i wyślij,
0
jeśli którekolwiek z nich zawiera0
inaczej1
.Dla każdego słowa w rozwiązaniu wypisz, czy jego długość wynosi co najmniej 3.
Dla każdej litery w rozwiązaniu wypisz, czy pojawia się ona w układance.
Dla każdej litery w wyjściu układanki, czy pojawia się w rozwiązaniu.
Dla każdej litery w rozwiązaniu sprawdź, czy poprzednia litera nie należy do tej samej grupy, chyba że jest to pierwsza litera słowa, w takim przypadku sprawdź, czy jest ona równa ostatniej literze poprzedniego słowa, chyba że jest to pierwsza litera rozwiązania, w którym to przypadku po prostu go zignoruj.
źródło
Python 2 ,
168156 bajtówWypróbuj online!
Zwraca
1
za prawdę,0
za falsey.źródło