Я сделал алгоритм поиска слов в C ++, который работает и работает быстро,
однако я заметил ошибку в этом.
Баг:
Когда на позиции, которая содержит два «правильных» слова, одно из слов пропускается.
пример:
4×4
T S E T
O O O E
O O O X
O O O T
Я знаю, как это исправить, но когда я это делаю, это просто решает проблему.
Дизайн:
current;
int main():
For every letter:
searchWords(letter, word);
if(current.successful) doStuff();
current.resetMembers();
void searchWords(params):
For every word:
if(letter == word[0]):
current.addLetter(letter);
For every 8 directions (top left, top, top right etc.):
If letterAtPos(letter + direction) == word[1]:
current.addLetter(letterAtPos(letter + direction));
if(dirSearch(word, direction, letter)) return;
bool dirSearch(params):
For pos = 2; pos < word.length(); pos++:
if letterAtPos(letter + direction * pos) != word[pos]:
current.resetMembers();
return false;
else
current.add(letterAtPos(letter + direction * pos));
Извините за код, похожий на python, но он чище, чем мой код для спагетти Вот
Примечание: для работы pastebin потребуются некоторые настройки, но они должны быть функциональными.
Задача ещё не решена.
Других решений пока нет …