feat(trainer): C — расширение «Многоугольники» и «Подобие» (+6)

Многоугольники (5→8):
- poly-triangles-count — на (n−2) треугольника из одной вершины, с чертежом (L1).
- poly-diag-from-vertex — n−3 диагонали из вершины, с чертежом (L1).
- poly-find-n-by-sum — число сторон по сумме углов (инверс, без чертежа) (L3).

Подобие (6→9):
- sim-midline — средняя линия треугольника = половина основания (L1).
- sim-area-scale — площадь подобной через k² (L2).
- sim-shadow — высота по тени (подобные треугольники), бытовой сюжет (L2).

Все с пошаговыми решениями. Смоук 5647 ассертов, 0 ошибок (self-check, приём
ответа, LaTeX-рендер, фигуры, нет остаточного x при answerSym). Итого 222.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-06-29 22:15:23 +03:00
parent a2b13bcb56
commit ee94ca2346
+90
View File
@@ -830,6 +830,52 @@
]
},
/* на сколько треугольников делится n-угольник диагоналями из одной вершины */
{
id: 'poly-triangles-count', topic: 'g-poly', order: 3, subject: 'geometry', grade: 8, kind: 'compute',
title: 'Треугольники в многоугольнике',
figure: { type: 'regular-polygon', n: 'n' },
figurePrompt: 'На сколько треугольников разбивают многоугольник диагонали из одной вершины?',
pick: { n: [4, 12] }, derive: { val: 'n - 2' },
lhs: 'x', rhs: '{n} - 2', display: 'На сколько треугольников разбивается выпуклый {n}-угольник диагоналями из одной вершины?',
answerVar: 'x', answer: 'val', integerAnswer: true,
solution: [
{ note: 'Из одной вершины проводят все диагонали — многоугольник делится на (n − 2) треугольника.', tex: 'x = n - 2' },
{ note: 'Подставляем n = {n}.', tex: 'x = {n} - 2' },
{ note: 'Считаем.', tex: 'x = {ans}' }
]
},
/* число диагоналей из одной вершины = n − 3 */
{
id: 'poly-diag-from-vertex', topic: 'g-poly', order: 4, subject: 'geometry', grade: 8, kind: 'compute',
title: 'Диагонали из одной вершины',
figure: { type: 'regular-polygon', n: 'n' },
figurePrompt: 'Сколько диагоналей выходит из одной вершины этого многоугольника?',
pick: { n: [4, 12] }, derive: { val: 'n - 3' },
lhs: 'x', rhs: '{n} - 3', display: 'Сколько диагоналей можно провести из одной вершины выпуклого {n}-угольника?',
answerVar: 'x', answer: 'val', integerAnswer: true,
solution: [
{ note: 'Из вершины нельзя провести диагональ в неё саму и в две соседние — остаётся (n − 3) вершины.', tex: 'x = n - 3' },
{ note: 'Подставляем n = {n}.', tex: 'x = {n} - 3' },
{ note: 'Считаем.', tex: 'x = {ans}' }
]
},
/* число сторон по сумме углов (инверс) */
{
id: 'poly-find-n-by-sum', topic: 'g-poly', order: 5, subject: 'geometry', grade: 8, kind: 'compute',
title: 'Число сторон по сумме углов',
pick: { n: [3, 14] }, derive: { S: '180*(n - 2)', val: 'n' },
lhs: 'x', rhs: '{S}/180 + 2', display: 'Сумма углов выпуклого многоугольника равна {S}°. Сколько у него сторон?',
answerVar: 'x', answer: 'val', integerAnswer: true,
solution: [
{ note: 'Сумма углов равна 180°·(n − 2). Отсюда n − 2 = сумма ÷ 180.', tex: 'n - 2 = {S}/180' },
{ note: 'Находим n: прибавляем 2.', tex: 'x = {S}/180 + 2' },
{ note: 'Получаем число сторон.', tex: 'x = {ans}' }
]
},
/* ═══ Тема: Подобие (геометрия, 8 класс) ═══ */
/* сходственная сторона по коэффициенту подобия */
@@ -864,6 +910,48 @@
]
},
/* средняя линия треугольника = половина основания */
{
id: 'sim-midline', topic: 'g-sim', order: 3, subject: 'geometry', grade: 8, kind: 'compute',
title: 'Средняя линия треугольника', answerSym: 'm',
pick: { h: [2, 15] }, derive: { a: 'h*2', val: 'h' },
lhs: 'x', rhs: '{a}/2', display: 'Основание треугольника равно {a}. Найдите среднюю линию, параллельную основанию.',
answerVar: 'x', answer: 'val', integerAnswer: true,
solution: [
{ note: 'Средняя линия треугольника параллельна основанию и равна его половине.', tex: 'm = a/2' },
{ note: 'Подставляем основание {a}.', tex: 'x = {a}/2' },
{ note: 'Считаем.', tex: 'x = {ans}' }
]
},
/* площадь подобной фигуры через k² */
{
id: 'sim-area-scale', topic: 'g-sim', order: 4, subject: 'geometry', grade: 8, kind: 'compute',
title: 'Площадь подобной фигуры', answerSym: 'S',
pick: { s: [2, 12], k: [2, 4] }, derive: { val: 's*k*k', k2: 'k*k' },
lhs: 'x', rhs: '{s}*{k}*{k}', display: 'Фигуры подобны с коэффициентом {k}. Площадь первой равна {s}. Найдите площадь второй.',
answerVar: 'x', answer: 'val', integerAnswer: true,
solution: [
{ note: 'Площади подобных фигур относятся как квадрат коэффициента подобия.', tex: 'S = s*k^2' },
{ note: 'Коэффициент {k}, значит площадь умножаем на {k}² = {k2}.', tex: 'x = {s}*{k2}' },
{ note: 'Считаем.', tex: 'x = {ans}' }
]
},
/* высота по тени (подобие) */
{
id: 'sim-shadow', topic: 'g-sim', order: 5, subject: 'geometry', grade: 8, kind: 'compute',
title: 'Высота по тени', answerSym: 'H',
pick: { h: [1, 3], t: [1, 4], r: [2, 6] }, derive: { T: 't*r', val: 'h*r' },
lhs: 'x', rhs: '{h}*{T}/{t}', display: 'Столб высотой {h} м даёт тень {t} м. В тот же момент дерево даёт тень {T} м. Найдите высоту дерева (в метрах).',
answerVar: 'x', answer: 'val', integerAnswer: true,
solution: [
{ note: 'Предметы и их тени образуют подобные треугольники: высота относится к тени одинаково.', tex: 'H/T = h/t' },
{ note: 'Отсюда высота дерева = высота столба × (тень дерева ÷ тень столба).', tex: 'x = {h}*{T}/{t}' },
{ note: 'Считаем.', tex: 'x = {ans}' }
]
},
/* ═══ Тема: Дроби (5–6 класс) ═══
kind:'compute'; ответ может быть дробным — ученик вводит «3/4» (SimExpr посчитает). */
@@ -3483,6 +3571,8 @@
'area-parallelogram': 2, 'area-trapezoid': 3, 'area-rhombus': 2,
// Геометрия — Многоугольники / Подобие
'poly-angles-sum': 1, 'poly-regular-angle': 2, 'sim-side': 1, 'sim-perimeter': 2,
'poly-triangles-count': 1, 'poly-diag-from-vertex': 1, 'poly-find-n-by-sum': 3,
'sim-midline': 1, 'sim-area-scale': 2, 'sim-shadow': 2,
// Геометрия — Окружность
'circ-length': 1, 'circ-diam': 1, 'circ-area': 2, 'circ-arc': 3,
// V4.1 — Линейные: новые формы