{"id":14291,"url":"\/distributions\/14291\/click?bit=1&hash=257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","hash":"257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","title":"\u0420\u0435\u043a\u043b\u0430\u043c\u0430 \u043d\u0430 Ozon \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043c \u043d\u0435 \u043f\u0440\u043e\u0434\u0430\u0451\u0442","buttonText":"","imageUuid":""}

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 комментариев
Раскрывать всегда