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. Не стоит так ворчать, старина, это было не бесполезно. В конце концов в этом проекте ты разобрался с регулярными выражениями, наверняка ведь они пригодились в будущем.

{ "author_name": "Ринат Абдуллин", "author_type": "self", "tags": ["\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430","\u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439_\u044f\u0437\u044b\u043a","google_spreadsheets"], "comments": 0, "likes": 3, "favorites": 4, "is_advertisement": false, "subsite_label": "education", "id": 119695, "is_wide": false, "is_ugc": true, "date": "Mon, 13 Apr 2020 10:12:20 +0300", "is_special": false }
Лаборатория качества
Уходим в online: как в «коронавирусной» спешке защитить себя от возможных потерь
Команда разработчиков Microsoft каждый месяц допускает 30 тысяч ошибок в коде, а ведь ее системами пользуются…
Объявление на vc.ru
0
Комментариев нет
Популярные
По порядку

Прямой эфир