Вчера мне стало интересно, смогу ли я написать программу для прохождения по заданному слову и вывода ответов. Это было на самом деле удивительно легко. Теперь интересно, как мало мы можем получить.
правила
- Ваш первый ввод - это строка или набор из n строк, каждая из которых имеет длину n символов
- Ваш второй вход представляет собой список слов в любом формате, чтобы найти в головоломке
- Все слова в списке поиска гарантированно будут в загадке
- Слова могут быть ориентированы в любом из четырех основных направлений, а также по диагонали вперед и назад.
- В загадке будут присутствовать только заглавные буквы AZ
- Ваш код должен найти каждое слово в строке поиска и вывести координату начальной буквы, где 0,0 - верхний левый символ.
- В случае, если вы найдете более одного экземпляра одного и того же слова, вы можете обрабатывать его так, как вам нравится. Выведите его несколько раз или только один раз, решать вам
Примеры / Тестовые случаи
Учитывая следующую доску:
ABCD
EFGH
IJKL
MNOP
И следующая строка поиска:
ABCD,CGKO,POMN,NJF,AFKP,CFI,LGB,MJGD
Ваша программа должна вывести следующее в любом порядке:
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
Как всегда, самый короткий ответ выигрывает
code-golf
string
word-search
morpen
источник
источник
Ответы:
JavaScript (Node.js) ,
154152150141 байтвозвращает массив локаций (раньше это была строка с новыми строками)
Попробуйте онлайн!
источник
Python 2 , 213 байт
Попробуйте онлайн!
g
принимает начальное местоположениеi,j
и направлениеu,v
и посредством рекурсии извлекает строку, начинающуюся в этом месте в этом направлении.f
затем посещает каждое начальное местоi,j
и направлениеU/3-1,U%3-1
и проверяет каждое слово,w
чтобы увидеть, начинается ли результирующая строкаw
.источник
Питон 3 ,
149147 байтПопробуйте онлайн!
Неуправляемая версия
Основная идея заключается в том, чтобы
b[i::d]
выбрать срез из игрового поля. Срез начинается как позицияi
и продолжается в направленииd
. Например,d = h+1
соответствует юго-восточной диагонали, тогда какd = ~h
, что совпадает с-h-1
, соответствует северо-западной диагонали.[:len(y)]
отрезает ломтик на той же длине, что и искомое слово.источник