{"id":14270,"url":"\/distributions\/14270\/click?bit=1&hash=a51bb85a950ab21cdf691932d23b81e76bd428323f3fda8d1e62b0843a9e5699","title":"\u041b\u044b\u0436\u0438, \u043c\u0443\u0437\u044b\u043a\u0430 \u0438 \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a \u2014 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0433\u043e\u0440\u0435","buttonText":"\u041d\u0430 \u043a\u0430\u043a\u043e\u0439?","imageUuid":"f84aced9-2f9d-5a50-9157-8e37d6ce1060"}

125 английских слов и мультиплеер

Казалось бы, составление кроссворда — простейшая задача, для самой младшей школоты. «Примитивная логика, за час можно запрограммировать» — думал я пару месяцев назад. Спустя выходные безудержного кодинга в гугл щитс и пол тетради в клетку оно все таки получилось. Не знаю зачем, назовем это хобби. Еще через пару дней, наигравшись составлением всевозможных кроссвордов, я скормил этому ИИ английский частотный словарь, подумал, что может получиться что-нибудь полезное и забросил.

Вот так я тренировал скрипт составлять большие кроссворды

А потом, началось СамиЗнаетеЧто и снова нашлось время на творчество. Представляю кроссворд из самых популярных английских слов с мультиплеером «Проверь свой инглиш, амиго». Юзер френдли интерфейс адаптирован под Full HD монитор, если у вас не влазит, поставьте масштаб 75%.

Небольшое отступление.

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

Как оно работает

Не уверен, что все нижеописанное вам пригодится, но как говорил мой профессор в универе: “Не было публикации — не было научной работы”. Словом это для тех, кто любит заглядывать под капот и разбираться, как оно работает, ну и для меня в старости, чтобы ворчать, что можно было и поинтересней прожить.

Скрипты использовались только для автоматического составления кроссворда из набора слов, весь геймплей реализован стандартными формулами.

Алгоритм составления кроссворда:

  1. Из словаря удаляются слова короче 4 букв и омонимы, всякие who the her и дубликаты нам не нужны.
  2. По середине поля вставляется случайное слово и начинаются итерации.
  3. Каждая вертикаль и горизонталь поля записывается в следующем виде: , _,, _,, _,, _,, _,, _,, D,, =,, =,, D,, _ где: _ клетка, в которую можно поставить любую букву; = клетка, в которую нельзя ставить буквы (будут неприятные касания с другими словами); D (или другие буквы) клетка, в которой уже стоит буква, нужно ее учитывать при подборе слов.
  4. Из каждой записи выкидываются = и остаются участки-шаблоны для подбора слов.
  5. Шаблоны преобразуются в примерно такие регулярные выражения [A-Z]{0,1}E[A-Z]{1}D[A-Z]{1}H[A-Z]{0,4} по которым подбираются слова из словаря. Причем сначала берутся шаблоны с наибольшим количеством букв, то есть слова подбираются так, чтобы они образовывали как можно больше пересечений с существующими словами. Если в словаре нашлось слово подходящее под данный шаблон, он вписывается в поле, удаляется из словаря и возвращаемся к п. 3. Если подходящего слова в словаре не нашлось, берется следующий шаблон и так пока не переберем все. Если не удалось подобрать слово ни под один шаблон, значит в словаре нет слов, которые можно вписать в поле, составление кроссворда закончено.
​Случаи, когда нельзя вписывать буквы в красную клетку (черным обозначены уже стоящие в поле слова)

Для реализации геймплея потребовалось поле ввода слов и 3 игровых поля:

  • поле 1: решенный кроссворд (в клетках стоят буквы);
  • поле 2: этих же клетках стоят слова, проходящие через клетку (всего через каждую клетку может проходить 2 слова);
  • поле 3: в нем высвечиваются слова. Единственное, которое видят игроки, поля 1 и 2 на скрытых листах.

То есть каждой клетке поля 3 есть соответствующая клетка с буквой в поле 1 и клетка со словами в поле 2. В каждой клетке поля 3 стоит формула, проверяющая, есть ли в поле ввода слово, которое указано в соответствующей клетке поля 2. Если есть, то в клетку поля 3 подтягивается буква из поля 1.

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

Вот собственно и всё. Все скрипты и скрытые листы в документе, будут доступны если сделаете копию.

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

0
Комментарии
-3 комментариев
Раскрывать всегда