Я сделал некоторый поиск Google, но не мог найти то, что я искал.
Я разрабатываю словесную игру царапать-типа в направляющих и задавался вопросом, был ли простой способ проверить то, что входы для плеера в игре на самом деле слово. Они вывели бы слово.
Проверка против своего рода английской базы данных словаря языка загружена в рамках приложения лучший способ решить эту проблему? Если так, есть ли какие-либо библиотеки, которые предлагают этот вид функциональности? В противном случае, что Вы предложили бы?
Спасибо за помощь!
Здесь есть совет, не зависящий от языка: если вас волнует только существование слова (что в таком случае вам и нужно), и вы планируете загрузить все базу данных в приложение (которое, как предполагает ваш запрос, вы рассматриваете), тогда DAWG позволит вам проверить существование во временной сложности O (n), где n - размер слова (размер словаря не имеет эффект - в целом поиск по сути O (1)), хотя он является относительно минимальной структурой с точки зрения памяти (действительно, некоторые вставки фактически уменьшают размер структуры, DAWG для «сверху, касания, касания, вершины» имеет меньше узлов, чем один для "вершин, тапай").
Вам понадобятся две вещи:
Список слов - сложная часть.В большинстве систем Unix есть список слов по адресу / usr / share / dict / words
или / usr / dict / words
- см. http: //en.wikipedia. org / wiki / Words_ (Unix) для получения более подробной информации. На моем Mac 234 936 слов. Но это не все подходящие слова Scrabble. Таким образом, вам придется каким-то образом приобрести словарь Scrabble, убедиться, что у вас есть соответствующая лицензия на его использование, и обработать его так, чтобы это был текстовый файл.
(Обновление: список слов для LetterPress теперь с открытым исходным кодом , а доступен на GitHub ].)
Код не является проблемой в простой случай. Вот сценарий, который я только что придумал:
words = {}
File.open("/usr/share/dict/words") do |file|
file.each do |line|
words[line.strip] = true
end
end
p words["magic"]
p words["saldkaj"]
Это выведет
true
nil
Я оставляю его в качестве упражнения для читателя, чтобы он превратился в правильный объект Words. (Технически это не Словарь, поскольку в нем нет определений.) Или использовать DAWG вместо хеша, даже если хеш, вероятно, подходит для ваших нужд.