Disclaimer: пост пятничный, всерьёз не принимать.

Хронологически всё началось с Wordle. Про эту внезапно популярную игру говорили из каждого утюга, делались ролики на youtube, писались боты (а потом из каждого утюга и youtube рассказывали про этих ботов). Даже на Хабре появилось несколько статей на тему. Я тоже сыграл несколько раз.

В какой-то скучный выходной я не выдержал и захотел уже найти оптимальное слово, с которого надо начинать игру. Оптимальное — значит максимально уменьшающее пространство поиска, после которого в среднем останется как можно меньше слов, подходящих под ответ. Про саму программу я писать особо не буду, там все довольно просто, перебирается в лоб, код одноразовый, пишется минут за 10-15, считает секунд 15-20. Нашёл roate, потом оказалось, что можно было просто нагуглить.

Потом решил найти два стартовых слова, это уже считалось подольше, нашло пару carse + doilt, после которой в среднем останется всего четыре слова. И тут Остапа понесло.

Эти слова — оптимальные в среднем. А какие слова будут лучшими даже в самом худшем случае? Чтоб не тянуть интригу — это serai и пара tired + loans. Даже в самом худшем случае, какое бы слово не было бы загадано, после tired loans гарантировано останется не более 16 слов. Это результат для самых отъявленных пессимистов, которые всегда ожидают от жизни самого худшего.

Эти программы как перебирают — для каждого возможного слова из множества отгадок (или для каждой пары) перебирают все возможные загаданные слова и считают сколько подходящих слов должно остаться после ответа игры. И считают среднее или берут максимум. Но ведь кроме среднего реалиста и крайнего пессимиста могут быть и всякие промежуточные варианты. Можно ли как-то этот расчет обобщить?

Оказывается можно (спойлер прямо в названии). Есть такая штука — называется среднее степенное, хотя мне больше нравится название среднее обобщённое:

A_k= \left( {1 \over N} \sum_{i=1}^N a_i^k \right)^{1\over k}

В чём прелесть этой формулы? При k = 1 она даёт среднее арифметическое. При k = 2 получается среднее квадратичное, при k = -1 будет среднее гармоническое, при k = 0 (точнее, в пределе, при k  0) — среднее геометрическое. Все четыре средних! А на плюс бесконечности получится как раз максимум из ai. На минус бесконечности — минимум, это в Worlde для тех неисправимых оптимистов, которые верят, что угадают с первой попытки.

Таким образом, каждый может выбрать себе k соответствующее своему собственному личному уровню пессимизма и подобрать слова для Wordle, оптимальные именно на этом уровне. Вот только как найти свой уровень пессимизма?

Можно провести обратную процедуру. Оценить на глаз среднее нескольких чисел. Чем оно ближе к максимальному — тем оценка оптимистичней. Ну или к минимальному, тут важна семантика. Пусть числа соответствуют сумме денег, которую вам дарят, чем больше — тем лучше. Тогда чем оценка ближе к максимальному числу — тем она оптимистичней. Подобрав соответствующий k можно получить численное значение уровня оптимизма. Но поскольку шкала от минус до плюс бесконечности, с нейтральной точкой в единице несколько неудобна в обращении, можно спроецировать числовую ось на полуокружность, получив шкалу от -1 (пессимист) до +1 (оптимист), с нейтральной точкой (реалист) в нуле.

И, конечно же, выложив этот тест в онлайн, потому что, а на что он еще годится?

Мне даже что-то подсказывает, что пройдя этот тест несколько раз можно натренироваться угадывать среднее значительно точнее. И, значит, стать гораздо более реалистом (на самом деле нет).

Комментарии (1)


  1. Krasnoarmeec
    19.02.2022 10:05
    +1

    Такая свежая, элегантная статья и ни одного комментария. Просто удивительно. Спасибо за статью! Хабр местами очень даже торт! ;-)

    В онлайн тесте было бы неплохо вставить словесную расшифровку: "пессимист", "реалист" и "оптимист", а то приходится опять открывать статью.