diff --git a/frontend/js/trainer/generators.js b/frontend/js/trainer/generators.js index 32c6ab1..29c8fa3 100644 --- a/frontend/js/trainer/generators.js +++ b/frontend/js/trainer/generators.js @@ -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; });