Какой эффективный способ проверить, существует ли слово при сравнении с сотнями тысяч слов? - PullRequest
1 голос
/ 20 марта 2012

Я некоторое время работал с target-c, и я хочу попытаться создать приложение. Приложение будет похоже на игру типа «Эрудит». Там будут перетаскивать плитки (я уже знаю, как это программировать) и кнопку отправки. Единственное, с чем у меня возникают проблемы, - это выяснить, как я собираюсь сравнивать буквы на доске с сотнями тысяч слов, не затягивая мою программу слишком сильно. Пока я имею в виду хранить эти слова в базе данных. Есть ли в target-c какие-либо встроенные API, которые могут обращаться к стандартной словарной базе данных? Я имею в виду не словарный массив, а реальную базу данных со словами и, возможно, определениями. Есть мысли по этому поводу?

Ответы [ 3 ]

3 голосов
/ 21 марта 2012

Похоже, вы довольны решением за 20 долларов. Для более интересной структуры данных, которую вы хотели бы узнать, это попытки .

Представьте себе дерево с 26 дочерними элементами корня, по одному на каждую букву в алфавите. Теперь представьте, что у каждого ребенка тоже есть 26 детей. Вы можете написать любое слово длиной N, сделав N шагов от корня до листа. Теперь представьте, что вы обрезаете дерево, чтобы оно содержало только правильные слова. Это ваше (очень быстрое) слово валидатор. Это займет в среднем столько же времени, сколько и средняя длина слова.

3 голосов
/ 20 марта 2012

Я использовал Lexicontext , это 20 долларов, но оно того стоит, на мой взгляд, очень быстро, есть демоверсия и содержит API для форматирования определений с помощью CSS.

2 голосов
/ 20 марта 2012

В зависимости от того, насколько "скрэббл" похожа ваша игра на самом деле ....

Собираетесь ли вы проверять слово, когда игрок нажимает «Отправить»?

Это не так, как работает Эрудит. Игрок может сыграть любое (не) слово, если противники не бросают ему вызов.

Таким образом, вам потребуется проверка слова в системе «вызов», но это не должно произойти, как только игрок сыграет слово. Недобросовестный игрок может просто поместить слова «возможно» и нажать «Отправить», чтобы проверить, действительно ли это слово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...