Задания для теста и ключи к ним найдены в Сети и, возможно, не имеют ничего общего с авторским тестом!
Прилагаемый файл test.json содержит:
- 72 задания для теста
- 8 дихотомийных признаков
- 16 соционических типов
- 16 названий типов по Аушре А.
- 16 типов по MBTI
Далее даются примеры, как использовать этот тест с точки зрения программирования.
> var test = require('./test.json') // Assume we use Node.jsВ тесте 72 задания:
> Object.keys(test.select).length
72В каждом задании предлагается выбор в рамках одной дихотомии. Например, первое задание:
> test.select[0]
{ S: 'Доверяю приобретенному опыту, а не интуиции',
N: 'Полагаюсь на свои предположения и догадки' }В тесте — по 18 заданий на каждую дихотомию. Например, на сенсорику-интуицию:
> test.select.filter(function (o) { return o.S && o.N; } ).length
18
> test.select.filter(function (o) { return o.S || o.N; } ).length
18Допустим, кто-то совершает случайный выбор в каждом задании:
var choice = test.select.map(function (o) { return Object.keys(o)[Math.random() * 2 | 0]; })Расчитаем вероятность признака "Сенсорик", в процентах:
> 100 * choice.filter(function (c) { return c === 'S'; } ).length / 18
61.11Сумма верятностей признаков в любой дихотомии равна 100%. Убедимся:
> 100 * choice.filter(function (c) { return c === 'N'; } ).length / 18
38.89Преобразуем выбор по заданиям в выбор по каждому признаку:
> choice = choice.reduce(function (o, c) { o[c] |= 0; o[c] += 1; return o; }, {})
{ S: 11, E: 8, I: 10, J: 13, P: 5, F: 12, T: 6, N: 7 }Выбор, в процентах:
> Object.keys(choice).reduce(function (o, c) { o[c] = Math.round(o[c] * 100 / 18); return o; }, choice)
{ S: 61, E: 44, I: 56, J: 72, P: 28, F: 67, T: 33, N: 39 }Вероятность каждого социотипа:
> var result = Object.keys(test.types).reduce(function (o, t) { o[t] = t.split('').reduce(function (sum, c) { return sum *= (choice[c] / 100); }, 1); return o; }, {})
{ ENTP: 0.016,
...
ISTP: 0.032 }Отсортируем по убыванию вероятности, и преобразим коды соцотипов в названия, к примеру, по Аушре:
> Object.keys(result).sort(function(a, b) { return result[b] - result[a]; }).map(function (c) { return test.types.aushra[c]; })
[ 'Драйзер',
'Гюго',
'Достоевский',
...
'Жуков',
'Бальзак',
'Дон Кихот' ]