2016-11-20 3 views
1

Я не уверен в правилах для создания матрицы для игры с головоломкой для поиска слов. Я могу создать матрицу с начальными значениями 0Создать матрицу головоломки поиска слов

Верно ли, что я случайно выбрать начальную точку (координаты), и случайное направление (по горизонтали, по вертикали, по диагонали, &) для слова а затем управлять, если он будет перекрываться с другим словом в матрице? Если это так, проверьте, одинаковы ли символы (хотя есть только небольшой шанс), тогда, если нет, я назначу его там. Проблема в том, что я уменьшаю вероятность совпадения слов.

Я также прочитал, что мне нужно сначала проверить слова с одинаковыми символами. Но если это так, кажется, что слова, которые я собираюсь помещать в матрицу, всегда перекрываются.

ответ

0

Я предпочел бы взглянуть на слова, которые уже есть, а затем случайным образом выбрать слово из набора слов, которые соответствуют этому. Конечно, вы можете не заполнить всю матрицу, как это. Если вы поместили одно слово где-нибудь, где оно блокирует все другие слова (никакое другое слово не подходит), вам может потребоваться отступить, но это убьет время выполнения.

Если вы действительно хотите заполнить всю матрицу, я буду перебирать все возможные стартовые позиции, видеть, сколько слов подходит там, а затем переписывать возможности начальной позиции с наименьшим количеством кандидатов. Это приведет к тому, что ваша программа распознает и покинет «тупики» на ранней стадии, что значительно улучшит время работы. Это мощный метод из алгоритмов фиксированных параметров, который мне нравится называть минимизацией ветвящихся векторов.

0

Начать с самого длинного слова. Прежде всего, вы должны найти все точки и направления, где это слово может поместиться. Например, слово «WORD» может поместиться, когда на первом pos есть NULL или W, на втором pos NULL или O, на третьем NULL или R и на четвертом NULL или D.

Затем вам следует сгруппировать он на позиции без NULLS, с одним NULL, с двумя NULL и так далее.

Затем выберите случайное положение из группы с наименьшим количеством NULLS. Если нет позитивных позиций, пропустите это слово.

Эта попытка позволит вам добавить больше слов и предотвратить ситуации, когда случайный поиск не может найти подходящее место (когда их лишь несколько).