Решили с @dusjads поучаствовать в контесте квизлета.
Придумали 2 идеи игры:
1. Загадывается случайное слово. Можно вводить любые слова и смотреть, насколько они далеки по смыслу от загаданного.
Например, если загадано слово “кошка”, то “вода” будет далеко, “собака” ближе, “тигр” — совсем близко.
Для визуализации хотелось отмечать слова точками на карте. Если “кошка” где-то в Мюнхене, то “вода” — в Сиднее, “собака” — в Киеве, “тигр” — во Франкфурте.
Для реализации просто строить эмбеддинг, считая word2vec от слов, между векторами считать расстояние, понижать размерность от нескольких сотен до 2 измерений t-distributed stochastic neighbor embedding’ом, рисовать на react-globe.gl’e. Но кажется, такая идея не очень вписывается в формат квизлета, так что решили выбрать вторую.
2. Менее алгоритмическая, но людям было интереснее играть: загаданы N слов длины M, получается сетка M*N. Дальше слова разбиваются на случайные полимино, перемешиваются, цель игры — собрать слова снова.
Первый прототип уже был играбельным, так что остановились на этом.
Казалось, что займёт такая игра пару вечеров — механик мало, всё понятно, писать на Реакте в 2023 должно быть приятно. Оказалось, что гидрация и регегидрация — не панацея, и сейчас хочется просто пойти писать на Vanilla JS / Svelte / htmx. 🙃
Сегодня допишу тесты, завтра напишу про оптимизаци (отдельное спасибо Дане за советы про Next — очень помог)!
Придумали 2 идеи игры:
1. Загадывается случайное слово. Можно вводить любые слова и смотреть, насколько они далеки по смыслу от загаданного.
Например, если загадано слово “кошка”, то “вода” будет далеко, “собака” ближе, “тигр” — совсем близко.
Для визуализации хотелось отмечать слова точками на карте. Если “кошка” где-то в Мюнхене, то “вода” — в Сиднее, “собака” — в Киеве, “тигр” — во Франкфурте.
Для реализации просто строить эмбеддинг, считая word2vec от слов, между векторами считать расстояние, понижать размерность от нескольких сотен до 2 измерений t-distributed stochastic neighbor embedding’ом, рисовать на react-globe.gl’e. Но кажется, такая идея не очень вписывается в формат квизлета, так что решили выбрать вторую.
2. Менее алгоритмическая, но людям было интереснее играть: загаданы N слов длины M, получается сетка M*N. Дальше слова разбиваются на случайные полимино, перемешиваются, цель игры — собрать слова снова.
Первый прототип уже был играбельным, так что остановились на этом.
Казалось, что займёт такая игра пару вечеров — механик мало, всё понятно, писать на Реакте в 2023 должно быть приятно. Оказалось, что гидрация и регегидрация — не панацея, и сейчас хочется просто пойти писать на Vanilla JS / Svelte / htmx. 🙃
Сегодня допишу тесты, завтра напишу про оптимизаци (отдельное спасибо Дане за советы про Next — очень помог)!