Wczoraj zacząłem się zastanawiać, czy mógłbym napisać program, który przeczesuje dane słowo i wyszukuje odpowiedzi. To było naprawdę zaskakująco łatwe. Teraz zastanawiam się, jak małe możemy być.
Zasady
- Twoje pierwsze wejście to ciąg lub kolekcja n linii, z których każda ma długość n znaków
- Drugie wejście to lista słów w dowolnym formacie do znalezienia w układance
- Gwarantujemy, że wszystkie słowa na liście wyszukiwania znajdują się w układance
- Słowa mogą być zorientowane w dowolnym z czterech głównych kierunków, a także ukośnie, zarówno do przodu, jak i do tyłu
- W układance będą obecne tylko wielkie litery AZ
- Kod musi znaleźć każde słowo w ciągu wyszukiwania i podać współrzędne początkowej litery, gdzie 0,0 to lewy górny znak.
- W przypadku zlokalizowania więcej niż jednego wystąpienia tego samego słowa możesz sobie z tym poradzić w dowolny sposób. Wydrukuj go wiele razy lub tylko raz, to zależy od Ciebie
Przykłady / przypadki testowe
Biorąc pod uwagę następującą tablicę:
ABCD
EFGH
IJKL
MNOP
I następujący ciąg wyszukiwania:
ABCD,CGKO,POMN,NJF,AFKP,CFI,LGB,MJGD
Twój program powinien wypisać następujące, w dowolnej kolejności:
ABCD at 0,0
CGKO at 0,2
PONM at 3,3
NJF at 3,1
AFKP at 0,0
CFI at 0,2
LGB at 2,3
MJGD at 3,0
Jak zawsze, najkrótsza odpowiedź wygrywa
code-golf
string
word-search
morpen
źródło
źródło
Odpowiedzi:
JavaScript (Node.js) ,
154152150141 bajtówzwraca tablicę lokalizacji (wcześniej był to ciąg z nowymi liniami)
Wypróbuj online!
źródło
Python 2 , 213 bajtów
Wypróbuj online!
g
przyjmuje położenie początkowei,j
i kierunek,u,v
a poprzez rekurencję wyodrębnia ciąg rozpoczynający się w tym miejscu w tym kierunku.f
następnie odwiedza każdą początkową lokalizacjęi,j
i kierunekU/3-1,U%3-1
oraz sprawdza każde słowo,w
aby sprawdzić, czy wynikowy ciąg zaczyna się odw
.źródło
Python 3 ,
149147 bajtówWypróbuj online!
Wersja bez golfa
Główną ideą jest
b[i::d]
wybranie wycinka z planszy. Plasterek zaczyna się od pozycjii
i rozciąga w kierunkud
. Na przykładd = h+1
odpowiada południowo-wschodniej przekątnej, podczas gdyd = ~h
, która jest taka sama jak-h-1
, odpowiada północno-zachodniej przekątnej.[:len(y)]
odcina plasterek na tej samej długości, co wyszukiwane słowo.źródło