Структура данных за 30 вопросами

Интерфейс теста SBTI выглядит просто — 30 вопросов, 3 варианта каждый, кликай и всё. Но за секунды между нажатиями «далее» бэкенд уже строит психологическую модель на тебя.

Ключевой момент: эти 30 вопросов не расставлены случайно. Они точно распределены по 15 психологическим измерениям, по 2 вопроса на каждое. Измерения идут от S1 до So3 в порядке: Я (S1-S3), Эмоции (E1-E3), Установки (A1-A3), Действие (Ac1-Ac3), Социальность (So1-So3). Вопросы 1-2 — S1 (Самооценка), вопросы 3-4 — S2 (Ясность Я), и так далее.

Каждый вопрос с тремя вариантами: 1 балл, 2 балла, 3 балла. Деталь, которую легко пропустить: не во всех вопросах варианты идут по возрастанию. Некоторые инвертированы — первый вариант стоит 3 балла, последний — 1. Этот реверсивный дизайн не даёт манипулировать результатом механическим выбором «всегда первый» или «всегда последний».

После 30 вопросов у системы 30 значений. Дальше суммирование по измерениям — 2 вопроса каждого дают сырой балл в диапазоне от 2 до 6. Эти 15 сырых баллов — фундамент всего результата.


От баллов к уровням: три ступени

Когда сырые баллы на руках, следующий шаг — классификация. Логика проста до удивления:

  • 2-3 балла → L (Low, Низкий)
  • 4 балла → M (Medium, Средний)
  • 5-6 баллов → H (High, Высокий)

Обрати внимание на распределение: L покрывает два значения (2 и 3), H покрывает два (5 и 6), а M соответствует только одному значению — ровно 4. Получить M — наименее вероятный исход: два вопроса должны сложиться точно в 4. Дизайн намеренно избегает «ловушки середины» — не даёт большинству людей осесть в серой зоне, а толкает к экстремумам. Это делает финальный портрет личности чётче, «характернее» и лучше подходящим для скриншота.

После классификации всех 15 измерений получается 15-буквенная строка, например: HMH-LML-HHM-LMH-HML. Это твоя «ДНК личности» — вход для всех дальнейших вычислений SBTI.


Паттерн-мэтчинг: твоя ДНК против 25 стандартных шаблонов

С ДНК личности на руках система должна сравнить её с 25 стандартными ДНК обычных типов и найти ближайшее совпадение.

У каждого типа — предопределённая 15-символьная строка паттерна. Например, стандартный паттерн CTRL — HHH-HMH-MHH-HHH-MHM, а DEAD — LLL-LLM-LML-LLL-LHM. Разница видна невооружённым глазом: CTRL — почти сплошь H, DEAD — почти сплошь L.

Метод сравнения — Манхэттенское расстояние. Сначала L/M/H маппятся в числа: L=1, M=2, H=3. Потом строка типа вычитается из твоей, берутся абсолютные значения и суммируются. Меньше расстояние = больше похожесть.

Конверсия в похожесть: max(0, round((1 - расстояние/30) × 100))%. Теоретически максимальное расстояние — 30 (15 измерений × макс. разница 2 на каждое).


Ранжирование, фоллбэк и та самая бутылка

После расчёта расстояния до всех 25 обычных типов система сортирует от ближайшего к дальнему. Но перед объявлением результата есть два барьера.

Первый — порог похожести. Если лучшее совпадение имеет похожесть ниже 60%, система решает, что «существующие шаблоны тебя не вмещают» и присваивает тебе HHHH (Хохотун). Это инженерный «фоллбэк» — гарантия результата для любого паттерна ответов.

Второй барьер хронологически стоит раньше: проверка DRUNK. После 30 основных вопросов система показывает дополнительный вопрос про алкоголь. Если активируешь «алкогольный путь» — вопрос с 4 вариантами, потом подтверждение с 2 вариантами — система полностью пропускает весь паттерн-мэтчинг и выдаёт DRUNK. Твои 30 тщательных ответов? В корзину.

Полный поток определения результата: проверить DRUNK → если не активирован, запустить паттерн-мэтчинг → лучшее совпадение ≥ 60%? → использовать → ниже 60%? → HHHH.


Кодировка результата: 16 цифр для шеринга

После определения результата — последний шаг: закодировать его в формат для шеринга.

Ссылка для шеринга SBTI содержит 16-значную строку. Первые 15 — твои сырые баллы по 15 измерениям (одна цифра на измерение, диапазон 2-6), последняя — флаг DRUNK (0 или 1). Например, 5342364553423420 означает: S1=5, S2=3, S3=4, E1=2, E2=3, E3=6, A1=4, A2=5, A3=5, Ac1=3, Ac2=4, Ac3=2, So1=3, So2=4, So3=2, DRUNK=0.

Эта кодировка встроена в параметр ?result= URL-а для шеринга. Когда кто-то открывает твою ссылку, система восстанавливает все баллы и полный результат из этого кода — без необходимости перепроходить тест. Вот почему шеринг SBTI такой бесшовный: кликнул, увидел результат — и можно сразу делать CP-мэтчинг.

Эта кодировка также означает: твоя ссылка для шеринга содержит все 15 сырых баллов твоих измерений. Кто разбирается в технике — может прочитать их прямо из URL-а. Эти 16 цифр — полный психологический снимок, просто сжатый в невинно выглядящую числовую строку.


Зачем знать алгоритм

Кто-то спросит: зачем знать эти алгоритмические детали? Хочу просто пройти тест и скинуть результат.

Ценность знания алгоритма не в том, чтобы «играть лучше», а в том, чтобы правильно понять смысл и ограничения результата.

Зная, что у каждого измерения всего 2 вопроса, понимаешь, почему результат меняется при повторном тесте — изменение одного ответа может перебросить измерение из H в M или даже L, перевернув весь мэтчинг. Зная, как работает Манхэттенское расстояние, понимаешь реальную разницу между «63% похожести» и «95% похожести».

Алгоритм SBTI не сложный, но элегантный. Из минимума входных данных (30 выборов) он строит 15-мерный психологический профиль и простейшим расчётом расстояния сопоставляет его с ярлыком, у которого есть характер, визуальный импакт и от которого хочется сделать скриншот. Вся система от входа до выхода спроектирована под одну цель: дать тебе то, чем захочется поделиться.