Учитывая список слов и сетку букв, найдите все слова в сетке и удалите все буквы, которые не являются частью какого-либо из слов. Слова могут быть вперед, назад, вверх, вниз или по диагонали. Вы можете предположить, что ни одно слово в списке не будет встречаться более чем в одном месте таблицы.
Ввод всегда будет: список слов, по 1 на строку, затем пустая строка, за которой следует сетка букв.
Примеры
вход
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
Выход
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
вход
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
Выход
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
Это код-гольф - выигрывает самое короткое решение.
Ответы:
Рубин 1.9,
214210206182177173172166источник
Perl - 230 символов
Количество включает 4 для параметров командной строки "-ln".
Ungolfed:
источник
.{$n}
Часть регулярного выражения (вместе с/s
опцией) действительно оборачивается для диагоналей (и прямо вниз) для реализации нисходящего компонента направления совпадения. Является ли ваше беспокойство ложным совпадением? AFAICT, это не может давать ложные совпадения из-за новых строк в строке. Предположим, буква i слова совпадает в крайнем правом столбце, и мы проверяем диагональ SE. Эта.{$n}
часть пропускает следующие символы $ W + 1, которые являются следующими непосредственно за \ n и всю следующую строку. Буква i + 1 будет несовместима со следующей \ n, поэтому полное совпадение не будет.JavaScript: 342 символа
Code-Golfed версия:
Отформатированная версия:
Концепция этого решения состоит в том, чтобы выполнить итерацию по всем позициям на доске, инициализировать значения 2D-массива для каждой позиции '' ', а затем рассмотреть все возможные направления слов и смещения слов. Если найдено подходящее слово, значение массива для этой позиции обновляется до правильной буквы. Наконец, массив преобразуется в строку и возвращается.
источник
Scala
697, 666649degolfed:
источник
stdin
вместоfromFile
. Я не указал, откуда поступает информация.