Я пытаюсь создать игру Судоку с буквами вместо цифр. Будут такие коробки: коробка 3 на 3
И пользователь попытается найти правильную перестановку букв, чтобы все горизонтальные и все вертикальные буквы образовывали слова. Один игровой режим заключается в том, что пользователь может использовать подмножество букв для заполнения полей. Для этой игры я использую специальный список слов из текстового файла, поэтому я не могу использовать стандартную библиотеку словарей.
Вот пример правильно заполненного пазла:
собранная головоломка
В этой версии судоку, созданной для игроков в скрэббл, допустимо слово oxo. В любом случае, как бы я построил алгоритм для проверки того, что горизонтальные и все вертикальные буквы образуют слова?
@Ken Lee, мой код написан на Java и состоит из нескольких файлов. Я просил общий алгоритм, а не чтобы кто-то написал мне код.
Для такой коробки 3 X 3 есть только 6 слов (по горизонтали + по вертикали). Так что просто проверки на 6 слов уже будет достаточно.
@KenLee Правильно, однако, это легче сказать, чем сделать. Если я скажем 6 строк, содержащих вертикальные и горизонтальные слова, как мне проверить, что все шесть «слов» (3 буквы, введенные пользователем) действительно найдены в файле? Буду ли я создавать 6 разных объектов сканера?
Вопрос касается проверки того, являются ли 6 строк допустимыми словами из словаря.
Псевдокод-иш Java для этого:
String[] boardWords = getWordsFromBoard(); // Should be a 6 element array.
Set<String> dictionary = loadDictionary(); // Read all words from dictionary file into a Set.
for (String word : boardWords) {
if (!dictionary.contains(word)) return false;
}
return true;
Ваши комментарии в вопросе, похоже, указывают на то, что вам интересно, как проверить 6 строк по словарю, и спрашиваете, нужно ли вам сканировать словарь 6 раз. Как вы можете видеть в приведенном выше коде, вы можете загрузить содержимое словаря в коллекцию один раз, а затем просто перебирать слова и проверять, встречаются ли они в коллекции.
покажите нам, что вы сделали (поделитесь своими кодами)