Biorąc pod uwagę listę słów i siatkę liter, znajdź wszystkie słowa w siatce i usuń wszystkie litery, które nie są częścią żadnego ze słów. Słowa mogą być do przodu, do tyłu, w górę, w dół lub po przekątnej. Możesz założyć, że żadne słowo na liście nie pojawi się w więcej niż jednym miejscu w siatce.
Dane wejściowe zawsze będą: lista słów, 1 w wierszu, następnie pusty wiersz, a następnie siatka liter.
Przykłady
Wejście
ADA
ALGOL
ASSEMBLY
BASIC
COBOL
DELPHI
FORTRAN
JAVA
LABVIEW
LOGO
PASCAL
PERL
PHP
PYTHON
SMALLTALK
VISUALC
LLJKCABLFCI
OROLOBOCOIM
GELACSAPRSX
LPSTAHWVTAV
ANRLXLXQRBI
IHPLEDOXAHS
KJYAPHPYNOU
FABMADANZJA
EVISNOHTYPL
AAYLBMESSAC
WEIVBALOGOM
Wynik
LL K FC
OR LOBOCOI
GELACSAPRS
LP T TAV
A L RBI
IHPLED A S
J APHP N U
A MADA A
V SNOHTYPL
AYLBMESSAC
WEIVBALOGO
Wejście
BACKSPACE
BOLD
CLOSE
COMPACTDISC
COPY
CPU
CURSOR
DELETE
DESKTOP
DVD
EDIT
ENTER
EXIT
FLOPPY
FONT
HARDWARE
INTERNET
KEYBOARD
MONITOR
MOUSE
PASSWORD
PASTE
RETURN
SAVE
SOFTWARE
START
TEXT
TOWER
WORDPROCESSING
IAUERAWTFOSICPN
DGZPFLOPPYARFLU
RSNOCURSORVZDBM
AMNIUOMRNHEGUIN
OTBNSRMONITORNT
BEYTTSGPJBOLDRT
YRQEAHEHARDWARE
EOGRRNECECLOSEP
KIONTYKTODTOWER
ELCENSUPERPDKNN
ATRTPRYKELPVIEJ
GIEANPOTKSEDUSL
NXCMPASSWORDRUC
TEDITAGVSWJCTOV
CWOYPGYQKNLVXMW
Wynik
UERAWTFOS
DG PFLOPPYA
R NOCURSORV
A NI O E
OT NS MONITOR
B TTS P BOLD
Y EA EHARDWARE
E RRNECECLOSE
K NT KTO TOWER
E SUPER D
TRTPRY ELPVIE
IEANPOTKSED S
XC PASSWORDRUC
TEDITA O
P MW
To jest golf golfowy - wygrywa najkrótsze rozwiązanie.
Odpowiedzi:
Ruby 1.9,
214210206182177173172166źródło
Perl - 230 znaków
Liczba obejmuje 4 dla opcji wiersza polecenia „-ln”.
Nie golfowany:
źródło
.{$n}
(wraz z/s
opcją) zawija się po przekątnych (i prosto w dół), aby zastosować składową w dół kierunku dopasowania. Czy twoja obawa jest fałszywym dopasowaniem, które się kończy? AFAICT, to nie może dać fałszywych dopasowań, ze względu na nowe linie w ciągu. Załóżmy, że litera i słowa pasuje do prawej kolumny, a my sprawdzamy przekątną SE..{$n}
Część pomija obok $ W + 1 znaków, które są bezpośrednio po \ n i wszystkich w następnym wierszu. Litera i + 1 będzie niedopasowana do następnego \ n, a zatem nie będzie ogólnego dopasowania.JavaScript: 342 znaków
Wersja z golfem:
Wersja sformatowana:
Koncepcja tego rozwiązania polega na iteracji wszystkich pozycji na planszy, inicjalizacji wartości tablicy 2D na „” dla każdej pozycji, a następnie rozważeniu wszystkich potencjalnych kierunków słów i przesunięć słów. Jeśli znaleziono pasujące słowo, wartość tablicy dla tej pozycji jest aktualizowana do poprawnej litery. Na koniec tablica jest konwertowana na ciąg znaków i zwracana.
źródło
Scala
697, 666649degolfed:
źródło
stdin
zamiastfromFile
. Nie określiłem, skąd pochodzi dane wejściowe.