Étant donné une liste de mots et une grille de lettres, recherchez tous les mots dans la grille et supprimez toutes les lettres qui ne font partie d'aucun des mots. Les mots peuvent être en avant, en arrière, en haut, en bas ou en diagonale. Vous pouvez supposer qu'aucun mot de la liste n'apparaîtra à plus d'un endroit de la grille.
La saisie sera toujours: une liste de mots, 1 par ligne, suivie d'une ligne vierge, suivie de la grille de lettres.
Exemples
Contribution
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
Production
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
Contribution
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
Production
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
C'est le code-golf - la solution la plus courte l'emporte.
Réponses:
Rubis 1.9,
214210206182177173 173172166la source
Perl - 230 caractères
Le nombre inclut 4 pour les options de ligne de commande "-ln".
Non golfé:
la source
.{$n}
partie de l'expression rationnelle (avec l'/s
option) s'enroule autour des diagonales (et directement vers le bas) pour implémenter la composante descendante de la direction de correspondance. Votre préoccupation est-elle une fausse correspondance qui se termine? AFAICT, cela ne peut pas donner de fausses correspondances, à cause des sauts de ligne dans la chaîne. Supposons que la lettre i d'un mot correspond dans la colonne la plus à droite, et nous vérifions la diagonale SE. La.{$n}
partie saute les prochains caractères $ W + 1, qui sont les \ n immédiatement suivants et toute la ligne suivante. La lettre i + 1 ne correspondra pas au \ n suivant, donc aucune correspondance globale.JavaScript: 342 caractères
Version Code-Golfed:
Version formatée:
Le concept derrière cette solution est d'itérer sur toutes les positions sur la carte, d'initialiser les valeurs d'un tableau 2D à '' pour chaque position, puis de considérer toutes les directions et décalages de mots potentiels. Si un mot correspondant est trouvé, la valeur du tableau pour cette position est mise à jour dans la bonne lettre. Enfin, le tableau est converti en chaîne et renvoyé.
la source
Scala
697, 666649dégouliné:
la source
stdin
au lieu defromFile
. Je n'ai pas précisé d'où vient l'entrée.