feat(biochem): Фаза 5.3 — 3D-build challenge с проверкой структуры
biochemController.js: structuralMatch/canonicalHash (Morgan-подобный канонический хеш графа) — для build-задания с data.requireStructure проверяется связность против эталонной молекулы (molecule_id), а не только формула. Отличает изомеры: этанол != диметиловый эфир при одной формуле C2H6O. seed_biochem_challenges.js: +4 structure-build задания (CO2, этилен, этанол, уксусная кислота). biochem.html: сообщение об ошибке wrong_structure. Проверено на реальном коде против БД: этанол==этанол true, ==диметиловый эфир false. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -81,6 +81,25 @@ const CHALLENGES = [
|
||||
{ type: 'complete', difficulty: 1, xp: 40, title: 'Заверши: горение углерода',
|
||||
desc: 'Какой продукт образуется при избытке кислорода?',
|
||||
data: { equation: 'C + O₂ → ?', choices: ['CO2', 'CO', 'C2O', 'O3'], answer: 'CO2' } },
|
||||
|
||||
// ── build со структурной проверкой (3D-build, Фаза 5.3) ───────────────────
|
||||
// target_formula — в Hill-нотации (как считает контроллер); эталон по molecule_id.
|
||||
{ type: 'build', difficulty: 1, xp: 45, title: 'Собери: углекислый газ (структура)', target: 'CO2',
|
||||
desc: 'Построй CO₂: углерод с двумя двойными связями к кислороду. Проверяется связность.',
|
||||
hint: 'O=C=O — две двойные связи',
|
||||
data: { requireStructure: true, molecule_id: 2 } },
|
||||
{ type: 'build', difficulty: 2, xp: 55, title: 'Собери: этилен (структура)', target: 'C2H4',
|
||||
desc: 'Построй этилен C₂H₄: двойная связь C=C и по два H на каждом углероде.',
|
||||
hint: 'H₂C=CH₂ — двойная связь между углеродами',
|
||||
data: { requireStructure: true, molecule_id: 12 } },
|
||||
{ type: 'build', difficulty: 2, xp: 60, title: 'Собери: этанол (структура)', target: 'C2H6O',
|
||||
desc: 'Построй этанол: скелет C–C–O, заполни валентности водородами. Важна именно связность (не диметиловый эфир!).',
|
||||
hint: 'CH₃–CH₂–OH: цепочка C–C–O',
|
||||
data: { requireStructure: true, molecule_id: 14 } },
|
||||
{ type: 'build', difficulty: 3, xp: 70, title: 'Собери: уксусную кислоту (структура)', target: 'C2H4O2',
|
||||
desc: 'Построй уксусную кислоту CH₃COOH: метил + карбоксильная группа (C=O и C–O–H).',
|
||||
hint: 'CH₃–COOH: карбоксил −COOH',
|
||||
data: { requireStructure: true, molecule_id: 15 } },
|
||||
];
|
||||
|
||||
let order = (getMaxOrder.get().m || 0);
|
||||
|
||||
Reference in New Issue
Block a user