feat(trainer): контент 5-6 кл — десятичные дроби + отрицательные числа

- НОВАЯ тема Десятичные (5 кл): сложение/вычитание/умножение десятичных. Строятся через десятые/сотые (целые ÷10, ÷100) → ответ печатается чисто, без float-мусора (0.8, 0.07, 0.16)
- НОВАЯ тема Отрицательные (6 кл): сумма/разность/произведение с отрицательными. Словесные формулировки («Найдите сумму чисел -8 и 9», «Из числа 6 вычтите -12») — без двусмысленных операторов; constraint гарантирует хотя бы одно отрицательное
- всё kind compute (движок не трогал); LEVELS проставлены
- 58 генераторов, 19 тем; смоук движка 1114/1114, страница 40/40; эмодзи 0

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-06-25 17:17:22 +03:00
parent db5c6b80ec
commit 169501f12a
+90 -2
View File
@@ -33,6 +33,8 @@
{ key: 'quadratic', label: 'Квадратные', subject: 'algebra', grade: 8, order: 9 },
{ key: 'progressions', label: 'Прогрессии', subject: 'algebra', grade: 9, order: 10 },
{ key: 'fractions', label: 'Дроби', subject: 'algebra', grade: 5, order: 1.5 },
{ key: 'decimals', label: 'Десятичные', subject: 'algebra', grade: 5, order: 1.6 },
{ key: 'negatives', label: 'Отрицательные', subject: 'algebra', grade: 6, order: 1.7 },
{ key: 'applied', label: 'Задачи', subject: 'algebra', grade: 7, order: 11 },
{ key: 'g-angles', label: 'Углы', subject: 'geometry', grade: 7, order: 12 },
{ key: 'g-pyth', label: 'Пифагор', subject: 'geometry', grade: 8, order: 13 },
@@ -829,6 +831,90 @@
{ note: 'При одинаковом знаменателе складываем числители, знаменатель оставляем:', tex: 'x = ({a} + {b})/{n}' },
{ note: 'Получаем значение:', tex: 'x = {ans}' }
]
},
/* ═══ Тема: Десятичные дроби (5 класс) ═══
Строим через десятые/сотые (целые ÷10, ÷100) → ответ печатается чисто. */
/* сложение десятичных */
{
id: 'dec-add', topic: 'decimals', order: 1, subject: 'algebra', grade: 5, kind: 'compute',
title: 'Сложение десятичных',
pick: { a: [1, 9], b: [1, 9] }, derive: { da: 'a/10', db: 'b/10', val: '(a + b)/10' },
lhs: 'x', rhs: '({a} + {b})/10', display: 'Вычислите {da} + {db}.',
answerVar: 'x', answer: 'val',
solution: [
{ note: 'Складываем десятичные дроби поразрядно (запятая под запятой):', tex: 'x = {da} + {db}' },
{ note: 'Получаем:', tex: 'x = {ans}' }
]
},
/* вычитание десятичных */
{
id: 'dec-sub', topic: 'decimals', order: 2, subject: 'algebra', grade: 5, kind: 'compute',
title: 'Вычитание десятичных',
pick: { a: [2, 9], b: [1, 8] }, constraint: 'a > b', derive: { da: 'a/10', db: 'b/10', val: '(a - b)/10' },
lhs: 'x', rhs: '({a} - {b})/10', display: 'Вычислите {da} {db}.',
answerVar: 'x', answer: 'val',
solution: [
{ note: 'Вычитаем десятичные дроби поразрядно:', tex: 'x = {da} - {db}' },
{ note: 'Получаем:', tex: 'x = {ans}' }
]
},
/* умножение десятичных */
{
id: 'dec-mult', topic: 'decimals', order: 3, subject: 'algebra', grade: 5, kind: 'compute',
title: 'Умножение десятичных',
pick: { a: [1, 9], b: [1, 9] }, derive: { da: 'a/10', db: 'b/10', val: '(a*b)/100' },
lhs: 'x', rhs: '({a}*{b})/100', display: 'Вычислите {da} · {db}.',
answerVar: 'x', answer: 'val',
solution: [
{ note: 'Перемножаем без запятых как целые, затем отделяем 2 знака после запятой (по сумме знаков у множителей):', tex: 'x = {da} * {db}' },
{ note: 'Получаем:', tex: 'x = {ans}' }
]
},
/* ═══ Тема: Отрицательные числа (6 класс) ═══
Словесные формулировки — без двусмысленных операторов в условии. */
/* сумма с отрицательными */
{
id: 'neg-add', topic: 'negatives', order: 1, subject: 'algebra', grade: 6, kind: 'compute',
title: 'Сумма (отрицательные)',
pick: { a: [-12, 12], b: [-12, 12] }, constraint: 'a != 0 && b != 0 && (a < 0 || b < 0)', derive: { val: 'a + b' },
lhs: 'x', rhs: '{a} + {b}', display: 'Найдите сумму чисел {a} и {b}.',
answerVar: 'x', answer: 'val', integerAnswer: true,
solution: [
{ note: 'Складываем с учётом знаков: при одинаковых знаках складываем модули; при разных — из большего модуля вычитаем меньший и ставим знак большего:', tex: 'x = {a} + {b}' },
{ note: 'Получаем:', tex: 'x = {ans}' }
]
},
/* разность с отрицательными */
{
id: 'neg-sub', topic: 'negatives', order: 2, subject: 'algebra', grade: 6, kind: 'compute',
title: 'Разность (отрицательные)',
pick: { a: [-12, 12], b: [-12, 12] }, constraint: 'a != 0 && b != 0 && (a < 0 || b < 0)', derive: { val: 'a - b' },
lhs: 'x', rhs: '{a} - ({b})', display: 'Из числа {a} вычтите {b}.',
answerVar: 'x', answer: 'val', integerAnswer: true,
solution: [
{ note: 'Вычесть число — значит прибавить ему противоположное:', tex: 'x = {a} - ({b})' },
{ note: 'Получаем:', tex: 'x = {ans}' }
]
},
/* произведение с отрицательными */
{
id: 'neg-mult', topic: 'negatives', order: 3, subject: 'algebra', grade: 6, kind: 'compute',
title: 'Произведение (отрицательные)',
pick: { a: [-9, 9], b: [-9, 9] }, constraint: 'a != 0 && b != 0 && (a < 0 || b < 0)', derive: { val: 'a*b' },
lhs: 'x', rhs: '{a}*{b}', display: 'Найдите произведение чисел {a} и {b}.',
answerVar: 'x', answer: 'val', integerAnswer: true,
solution: [
{ note: 'Перемножаем модули; знак минус — если множители разных знаков, плюс — если одинаковых:', tex: 'x = {a}*{b}' },
{ note: 'Получаем:', tex: 'x = {ans}' }
]
}
];
@@ -869,8 +955,10 @@
'area-parallelogram': 2, 'area-trapezoid': 3, 'area-rhombus': 2,
// Геометрия — Многоугольники / Подобие
'poly-angles-sum': 1, 'poly-regular-angle': 2, 'sim-side': 1, 'sim-perimeter': 2,
// Дроби
'frac-of-number': 1, 'frac-add-same': 2
// Дроби / Десятичные / Отрицательные
'frac-of-number': 1, 'frac-add-same': 2,
'dec-add': 1, 'dec-sub': 1, 'dec-mult': 2,
'neg-add': 1, 'neg-sub': 2, 'neg-mult': 2
};
GENERATORS.forEach(function (g) { g.level = LEVELS[g.id] || 1; });