Тест состоит из 200 вопросов. На каждый нужно ответить «Да» или «Нет». Отвечайте честно — первая реакция обычно самая точная.
Итог — профиль по 10 шкалам, отражающим разные черты личности.
Каждая шкала даёт значение от −100 до +100. Положительный полюс — благоприятная черта, отрицательный — противоположная.
Модель восстановлена точно (выравнивание с reference-реализацией OCA + ~8500 измерений на эмуляторе оригинального бинарника; валидация max|err| = 0 на 400 свежих случайных паттернах). Каждый вопрос влияет ровно на одну шкалу: ответ «Да» добавляет dy, «Нет» — dn, «Не уверен» — 0. Сырая сумма по шкале переводится в итоговое значение ступенчатой норм-таблицей, зависящей от пола и возраста (4 комбинации).
Расчёт выполняется на сервере: браузер отправляет ответы, пол и возраст, сервер возвращает готовые значения шкал. Веса вопросов и норм-таблицы на клиент не отдаются.
для каждой шкалы s из A..J:
raw[s] = Σ по 20 вопросам шкалы ( dy[q] при ответе «Да»
+ dn[q] при ответе «Нет» ) // «Не уверен» = 0
результат[s] = norm_table[s][пол × возраст][raw[s]] // целое, обычно −99..+98
// IQ оригинальная программа не вычисляет
Для калибровки использовался профиль «чередование Да/Нет начиная с Да» (Q1=Да, Q2=Нет, Q3=Да,… Q200=Нет) прогнанный в оригинальной DOS-программе для каждой комбинации пол × возраст. Цифры ниже — то, что выдала сама программа:
OCA_TST.EXE — тест-раннер, 534 908 байт. MS-DOS MZ EXE, сборка Clipper 5 + Turbo-C runtime. Не сжат.OCA_RED.EXE — редактор архива результатов, 152 914 байт. Сжат WWPACK.TEXT.DAT (+ индекс TXT_OCA.K01, memo TXT_OCA.MEM) — База Clarion с текстами вопросов и интерпретациями.ARH.DAT — архив результатов ранее пройденных тестов.JNN — шаблон ASCII-графика кривой результатов.TEXT.DAT через cp866-декодирование записей Clarion DB.OCA_TST.EXE на офсете ≈ 0x24D00.original_result).
VOPROSNIK, PASA, TOLK). Константы P-кода Clipper не хранятся непрерывной таблицей — они разбросаны по байткоду как tagged-литералы рядом с инструкциями. Публичного дизассемблера Clipper 5 P-кода нет.autotest/exe_analysis/ (Ghidra).
| Регион | Офсет | Содержимое |
|---|---|---|
| MZ header | 0x00000 | Entry point = 0x2231F |
| Сегмент кода + данных | 0x06200 | Turbo-C runtime и Clipper VM |
| Описания шкал A–J | ≈0x24D00 | cp866 русские строки заголовков и описаний |
| Таблица символов Clipper | 0x6FD6E | 57 записей имен процедур и модулей |
| P-код процедур | 0x70260+ | Байткод Clipper 5 с зашитыми весами |
| Таблица релокаций | 0x6200 | 6202 записи, 5025 указывают на BSS-сегмент 0x3BE0 |
autotest/final_model_v2.json — точная модель подсчёта (веса + норм-таблицы).autotest/align/ — выравнивание с reference-реализацией, извлечённые таблицы, валидация.autotest/emulator/ — headless-эмулятор OCA_TST.EXE (Unicorn) и эталонные прогоны.autotest/exe_analysis/ — статический анализ EXE (Ghidra).reference_impl/ — независимый JS-порт оригинального OCA (roppa/oca), использован для выравнивания.questions.json — 200 вопросов.OCA/ — сама оригинальная DOS-программа.