Примечание. Это моя первая проблема/вопрос в Code Golf, поэтому я, возможно, не буду использовать правильный формат ниже. Я не уверен, как отметить этот конкретный вопрос, и должно ли это быть вики сообщества? Спасибо!
Этот вызов Code Golf предназначен для решения поисков слов!
Поиск по словам, как определено в Википедии, есть:
Поиск слов, поиск слов, поиск слов, слово сыщик или загадочное слово головоломка слово игра, которая является буквами слова в сетке, которая обычно имеет прямоугольной или квадратной формы. Цель этой головоломки - найти и отметьте все слова, скрытые внутри коробка. Слова могут быть горизонтально, вертикально или по диагонали. Часто список скрытых слова предоставляются, но больше сложные головоломки могут позволить игроку выяснить их. Много слова поиска у головоломок есть тема, в которой все скрытые слова связаны.
Слово ищет этот вызов будет прямоугольными сетками со списком слов для поиска. Слова могут быть написаны по вертикали, по горизонтали или по диагонали.
Input/Output
Пользователь вводит свой поиск слов, а затем вводит слово, которое можно найти в их сетке. Эти два входа передаются функции, которую вы будете писать. Это зависит от вас, как вы хотите объявлять и обрабатывать эти объекты.
Используя описанную ниже стратегию или свою собственную, функция находит конкретное слово в поиске и выводит свои начальные координаты (просто номер строки и номер столбца) и конечные координаты. Если вы обнаружите два вхождения слова, вы должны вывести оба набора координат. Если слово является палиндром, вы можете произвольно выбрать один конец как "начало" слова.
Пример
Input:
A I Y R J J Y T A S V Q T Z E
X B X G R Z P W V T B K U F O
E A F L V F J J I A G B A J K
R E S U R E P U S C Y R S Y K
F B B Q Y T K O I K H E W G N
G L W Z F R F H L O R W A R E
J A O S F U E H Q V L O A Z B
J F B G I F Q X E E A L W A C
F W K Z E U U R Z R T N P L D
F L M P H D F W H F E C G W Z
B J S V O A O Y D L M S T C R
B E S J U V T C S O O X P F F
R J T L C V W R N W L Q U F I
B L T O O S Q V K R O W G N D
B C D E J Y E L W X J D F X M
Слово, чтобы найти: codegolf
Вывод:
row 12, column 8 --> row 5, column 1
Стратегии
Вот несколько стратегий, которые вы можете использовать. Вам решать, какую стратегию вы хотите использовать; он не должен быть в этом списке.
- Ищем первую букву слова; в каждом случае, глядя на восемь окружающих букв, чтобы увидеть, есть ли следующая буква слова.
- То же, что и выше, за исключением того, что вы ищете часть слова, которое имеет две одинаковые буквы бок о бок.
- Подсчитайте, как часто каждая буква алфавита присутствует во всей сетке, затем выберите одну из наименее известных букв из слова, которое вы должны найти и найти письмо. В каждом случае буквы вы смотрите на восемь своих букв, чтобы увидеть, есть ли следующая и предыдущая буквы этого слова.