feat(trainer): V4.1 группа 3 — 20 генераторов (выражения + новые формулировки)
Третья волна плана v4 (упрощение/формулы/степени) + новые форматы условий. Все «корень-вперёд»; simplify проверяется эквивалентностью, compute — целым. Упрощение (simplify): simp-like-multivar (две буквы), simp-like-const (со числом), simp-sub-bracket (вычесть скобку — знаки), simp-distribute-combine (раскрыть+привести), simp-factor-common (вынести множитель), simp-factor-group (группировка), simp-eval-at (упростить и вычислить при x=x0). Формулы (formulas): diff-sq-factor (разложить разность квадратов, обратно), sq-trinom-factor (свернуть в квадрат), sq-sum-coef (квадрат суммы с коэф.), cube-sum (куб суммы), sum-cubes-factor (сумма кубов), fmt-blank-square (вставь число в тождество), fmt-fix-square (найди ошибку). Степени (powers): pow-div (частное), pow-product-base (степень произведения), pow-frac-combine (дробь степеней), pow-numeric-laws (произведение степеней числом), pow-standard-form (стандартный вид), pow-which-law (какой показатель). Новые ФОРМУЛИРОВКИ: вставь-пропуск, найди-ошибку, какой-закон, упрости-и-вычисли, разложить (обратные формулы) — разнообразие условий по запросу. Итого 116 генераторов. Смоук 26148 проверок (simplify: приём канон. answerExpr + отказ off-by-one; compute: целое+приём; все шаги→LaTeX); геометрия не задета (6968/0). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1607,6 +1607,299 @@
|
||||
{ note: 'Сколько это процентов от закупочной цены — делим на {c} и умножаем на 100.', tex: 'x = 100 * ({s} - {c}) / {c}' },
|
||||
{ note: 'Считаем.', tex: 'x = {ans}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* ═══════════════════════════════════════════════════════════════════════
|
||||
V4.1 — Группа 3: выражения (упрощение/формулы/степени) + новые формулировки
|
||||
(вставь-пропуск, найди-ошибку, какой закон, упрости-и-вычисли). simplify —
|
||||
проверка эквивалентностью (любая равная форма принимается); compute — целое.
|
||||
═══════════════════════════════════════════════════════════════════════ */
|
||||
|
||||
/* ── Упрощение ── */
|
||||
|
||||
/* привести подобные с двумя переменными */
|
||||
{
|
||||
id: 'simp-like-multivar', topic: 'simplify', order: 3, subject: 'algebra', grade: 7, kind: 'simplify',
|
||||
title: 'Подобные (две буквы)',
|
||||
pick: { a: [2, 7], b: [2, 7], c: [1, 6], d: [1, 6] },
|
||||
derive: { sx: 'a + c', sy: 'b + d' },
|
||||
srcExpr: '{a}*x + {b}*y + {c}*x + {d}*y', answerExpr: '{sx}*x + {sy}*y', answerVars: ['x', 'y'],
|
||||
display: 'Упростите: {a}x + {b}y + {c}x + {d}y',
|
||||
solution: [
|
||||
{ note: 'Группируем подобные: слагаемые с x и слагаемые с y отдельно.', tex: '({a} + {c})x + ({b} + {d})y' },
|
||||
{ note: 'Складываем коэффициенты.', tex: '{sx}x + {sy}y' }
|
||||
]
|
||||
},
|
||||
|
||||
/* привести подобные со свободным членом */
|
||||
{
|
||||
id: 'simp-like-const', topic: 'simplify', order: 4, subject: 'algebra', grade: 7, kind: 'simplify',
|
||||
title: 'Подобные с числом',
|
||||
pick: { a: [2, 8], c: [1, 7], b: [1, 9], d: [1, 9] },
|
||||
derive: { sx: 'a + c', sc: 'b + d' },
|
||||
srcExpr: '{a}*x + {b} + {c}*x + {d}', answerExpr: '{sx}*x + {sc}', answerVars: ['x'],
|
||||
display: 'Упростите: {a}x + {b} + {c}x + {d}',
|
||||
solution: [
|
||||
{ note: 'Складываем отдельно слагаемые с x и отдельно числа.', tex: '({a} + {c})x + ({b} + {d})' },
|
||||
{ note: 'Получаем.', tex: '{sx}x + {sc}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* вычесть скобку (знаки) */
|
||||
{
|
||||
id: 'simp-sub-bracket', topic: 'simplify', order: 5, subject: 'algebra', grade: 7, kind: 'simplify',
|
||||
title: 'Вычесть скобку',
|
||||
pick: { a: [4, 9], c: [1, 3], b: [5, 12], d: [1, 4] },
|
||||
constraint: 'c < a && d < b',
|
||||
derive: { sx: 'a - c', sc: 'b - d' },
|
||||
srcExpr: '{a}*x + {b} - ({c}*x + {d})', answerExpr: '{sx}*x + {sc}', answerVars: ['x'],
|
||||
display: 'Упростите: {a}x + {b} − ({c}x + {d})',
|
||||
solution: [
|
||||
{ note: 'Раскрываем скобку: знак «минус» перед ней меняет знаки ВСЕХ слагаемых внутри.', tex: '{a}x + {b} - {c}x - {d}' },
|
||||
{ note: 'Приводим подобные.', tex: '{sx}x + {sc}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* раскрыть и привести */
|
||||
{
|
||||
id: 'simp-distribute-combine', topic: 'simplify', order: 6, subject: 'algebra', grade: 7, kind: 'simplify',
|
||||
title: 'Раскрыть и привести',
|
||||
pick: { a: [2, 6], b: [1, 8], c: [1, 7] },
|
||||
derive: { ab: 'a*b', sx: 'a + c' },
|
||||
srcExpr: '{a}*(x + {b}) + {c}*x', answerExpr: '{sx}*x + {ab}', answerVars: ['x'],
|
||||
display: 'Упростите: {a}(x + {b}) + {c}x',
|
||||
solution: [
|
||||
{ note: 'Раскрываем скобку — умножаем {a} на каждое слагаемое.', tex: '{a}x + {ab} + {c}x' },
|
||||
{ note: 'Приводим подобные при x.', tex: '{sx}x + {ab}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* вынести общий множитель */
|
||||
{
|
||||
id: 'simp-factor-common', topic: 'simplify', order: 7, subject: 'algebra', grade: 7, kind: 'simplify',
|
||||
title: 'Вынести множитель',
|
||||
pick: { a: [2, 6], c: [2, 7], d: [1, 8] },
|
||||
derive: { ac: 'a*c', ad: 'a*d' },
|
||||
srcExpr: '{ac}*x + {ad}', answerExpr: '{a}*({c}*x + {d})', answerVars: ['x'],
|
||||
display: 'Вынесите общий множитель: {ac}x + {ad}',
|
||||
solution: [
|
||||
{ note: 'Оба слагаемых делятся на {a} — это общий множитель.', tex: '{ac}x + {ad}' },
|
||||
{ note: 'Выносим {a} за скобку.', tex: '{a}*({c}x + {d})' }
|
||||
]
|
||||
},
|
||||
|
||||
/* группировка */
|
||||
{
|
||||
id: 'simp-factor-group', topic: 'simplify', order: 8, subject: 'algebra', grade: 8, kind: 'simplify',
|
||||
title: 'Группировка',
|
||||
pick: { a: [1, 7], b: [1, 7] },
|
||||
srcExpr: 'x*(x + {a}) + {b}*(x + {a})', answerExpr: '(x + {a})*(x + {b})', answerVars: ['x'],
|
||||
display: 'Разложите на множители: x(x + {a}) + {b}(x + {a})',
|
||||
solution: [
|
||||
{ note: 'В обоих слагаемых есть общая скобка (x + {a}). Выносим её.', tex: '(x + {a})*(x + {b})' },
|
||||
{ note: 'Это и есть разложение на множители.', tex: '(x + {a})(x + {b})' }
|
||||
]
|
||||
},
|
||||
|
||||
/* упростить и вычислить при x = x0 */
|
||||
{
|
||||
id: 'simp-eval-at', topic: 'simplify', order: 9, subject: 'algebra', grade: 7, kind: 'compute',
|
||||
title: 'Упростить и вычислить',
|
||||
pick: { a: [2, 7], b: [2, 7], x0: [1, 5] },
|
||||
derive: { s: 'a + b', val: '(a + b)*x0' },
|
||||
lhs: 'x', rhs: '({a} + {b})*{x0}', display: 'Упростите {a}x + {b}x и найдите значение при x = {x0}.',
|
||||
answerVar: 'x', answer: 'val', integerAnswer: true,
|
||||
solution: [
|
||||
{ note: 'Приводим подобные: {a}x + {b}x = {s}x.', tex: '{a}x + {b}x = {s}x' },
|
||||
{ note: 'Подставляем x = {x0}.', tex: 'x = {s} * {x0}' },
|
||||
{ note: 'Считаем.', tex: 'x = {ans}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* ── Формулы сокращённого умножения (обратные + расширенные) ── */
|
||||
|
||||
/* разложить разность квадратов (обратно) */
|
||||
{
|
||||
id: 'diff-sq-factor', topic: 'formulas', order: 4, subject: 'algebra', grade: 8, kind: 'simplify',
|
||||
title: 'Разложить разность квадратов',
|
||||
pick: { a: [2, 9] },
|
||||
derive: { a2: 'a*a' },
|
||||
srcExpr: 'x^2 - {a2}', answerExpr: '(x - {a})*(x + {a})', answerVars: ['x'],
|
||||
display: 'Разложите на множители: x² − {a2}',
|
||||
solution: [
|
||||
{ note: 'Это разность квадратов: x² − {a2} = x² − {a}². Применяем формулу a² − b² = (a − b)(a + b).', tex: 'x^2 - {a}^2' },
|
||||
{ note: 'Получаем произведение.', tex: '(x - {a})*(x + {a})' }
|
||||
]
|
||||
},
|
||||
|
||||
/* свернуть полный квадрат (обратно) */
|
||||
{
|
||||
id: 'sq-trinom-factor', topic: 'formulas', order: 5, subject: 'algebra', grade: 8, kind: 'simplify',
|
||||
title: 'Свернуть в квадрат',
|
||||
pick: { a: [1, 9] },
|
||||
derive: { a2: 'a*a', a2x: '2*a' },
|
||||
srcExpr: 'x^2 + {a2x}*x + {a2}', answerExpr: '(x + {a})^2', answerVars: ['x'],
|
||||
display: 'Разложите на множители: x² + {a2x}x + {a2}',
|
||||
solution: [
|
||||
{ note: 'Это полный квадрат: средний член {a2x}x = 2·{a}·x, свободный {a2} = {a}².', tex: 'x^2 + 2*{a}*x + {a}^2' },
|
||||
{ note: 'Сворачиваем по формуле (x + {a})².', tex: '(x + {a})^2' }
|
||||
]
|
||||
},
|
||||
|
||||
/* квадрат суммы с коэффициентом */
|
||||
{
|
||||
id: 'sq-sum-coef', topic: 'formulas', order: 6, subject: 'algebra', grade: 8, kind: 'simplify',
|
||||
title: 'Квадрат суммы (с коэф.)',
|
||||
pick: { a: [1, 6], b: [2, 4] },
|
||||
derive: { b2: 'b*b', a2: 'a*a', mid: '2*a*b' },
|
||||
srcExpr: '({b}*x + {a})^2', answerExpr: '{b2}*x^2 + {mid}*x + {a2}', answerVars: ['x'],
|
||||
display: 'Раскройте: ({b}x + {a})²',
|
||||
solution: [
|
||||
{ note: 'Формула квадрата суммы: (bx + a)² = (bx)² + 2·bx·a + a².', tex: '({b}x)^2 + 2*{b}*{a}*x + {a}^2' },
|
||||
{ note: 'Считаем коэффициенты.', tex: '{b2}*x^2 + {mid}*x + {a2}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* куб суммы */
|
||||
{
|
||||
id: 'cube-sum', topic: 'formulas', order: 7, subject: 'algebra', grade: 9, kind: 'simplify',
|
||||
title: 'Куб суммы',
|
||||
pick: { a: [1, 5] },
|
||||
derive: { c1: '3*a', c2: '3*a*a', c3: 'a*a*a' },
|
||||
srcExpr: '(x + {a})^3', answerExpr: 'x^3 + {c1}*x^2 + {c2}*x + {c3}', answerVars: ['x'],
|
||||
display: 'Раскройте: (x + {a})³',
|
||||
solution: [
|
||||
{ note: 'Куб суммы: (x + a)³ = x³ + 3a·x² + 3a²·x + a³.', tex: 'x^3 + 3*{a}*x^2 + 3*{a}^2*x + {a}^3' },
|
||||
{ note: 'Считаем коэффициенты.', tex: 'x^3 + {c1}*x^2 + {c2}*x + {c3}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* сумма кубов (разложение) */
|
||||
{
|
||||
id: 'sum-cubes-factor', topic: 'formulas', order: 8, subject: 'algebra', grade: 9, kind: 'simplify',
|
||||
title: 'Сумма кубов',
|
||||
pick: { a: [2, 5] },
|
||||
derive: { a3: 'a*a*a', a2: 'a*a' },
|
||||
srcExpr: 'x^3 + {a3}', answerExpr: '(x + {a})*(x^2 - {a}*x + {a2})', answerVars: ['x'],
|
||||
display: 'Разложите на множители: x³ + {a3}',
|
||||
solution: [
|
||||
{ note: 'Это сумма кубов: x³ + {a3} = x³ + {a}³. Формула a³ + b³ = (a + b)(a² − ab + b²).', tex: 'x^3 + {a}^3' },
|
||||
{ note: 'Получаем произведение.', tex: '(x + {a})*(x^2 - {a}*x + {a2})' }
|
||||
]
|
||||
},
|
||||
|
||||
/* вставь пропущенное число в тождестве */
|
||||
{
|
||||
id: 'fmt-blank-square', topic: 'formulas', order: 9, subject: 'algebra', grade: 8, kind: 'compute',
|
||||
title: 'Вставь число (тождество)',
|
||||
pick: { a: [1, 9] },
|
||||
derive: { a2x: '2*a', val: 'a*a' },
|
||||
lhs: 'x', rhs: '{val}', display: 'Вставьте пропущенное число: (x + {a})² = x² + {a2x}x + ▢',
|
||||
answerVar: 'x', answer: 'val', integerAnswer: true,
|
||||
solution: [
|
||||
{ note: 'Квадрат суммы: (x + {a})² = x² + 2·{a}·x + {a}². Пропущен свободный член {a}².', tex: 'x = {a}^2' },
|
||||
{ note: 'Считаем.', tex: 'x = {ans}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* найди ошибку: пропущенный средний член */
|
||||
{
|
||||
id: 'fmt-fix-square', topic: 'formulas', order: 10, subject: 'algebra', grade: 8, kind: 'compute',
|
||||
title: 'Найди ошибку',
|
||||
pick: { a: [2, 9] },
|
||||
derive: { a2: 'a*a', val: '2*a' },
|
||||
lhs: 'x', rhs: '{val}', display: 'Ученик записал (x + {a})² = x² + {a2}. Это неверно: пропущен средний член. Чему равен коэффициент при x?',
|
||||
answerVar: 'x', answer: 'val', integerAnswer: true,
|
||||
solution: [
|
||||
{ note: 'В формуле (x + {a})² есть средний член 2·{a}·x. Ученик его потерял.', tex: 'x = 2 * {a}' },
|
||||
{ note: 'Считаем коэффициент.', tex: 'x = {ans}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* ── Степени ── */
|
||||
|
||||
/* частное степеней */
|
||||
{
|
||||
id: 'pow-div', topic: 'powers', order: 4, subject: 'algebra', grade: 8, kind: 'simplify',
|
||||
title: 'Частное степеней',
|
||||
pick: { a: [5, 9], b: [1, 4] }, constraint: 'a > b',
|
||||
derive: { d: 'a - b' },
|
||||
srcExpr: 'x^{a}/x^{b}', answerExpr: 'x^{d}', answerVars: ['x'],
|
||||
display: 'Упростите: x^{a} / x^{b}',
|
||||
solution: [
|
||||
{ note: 'При делении степеней с одинаковым основанием показатели вычитаются: {a} − {b}.', tex: 'x^{a} / x^{b}' },
|
||||
{ note: 'Получаем.', tex: 'x^{d}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* степень произведения */
|
||||
{
|
||||
id: 'pow-product-base', topic: 'powers', order: 5, subject: 'algebra', grade: 8, kind: 'simplify',
|
||||
title: 'Степень произведения',
|
||||
pick: { a: [2, 4], n: [2, 3] },
|
||||
derive: { an: 'a^n' },
|
||||
srcExpr: '({a}*x)^{n}', answerExpr: '{an}*x^{n}', answerVars: ['x'],
|
||||
display: 'Раскройте степень: ({a}x)^{n}',
|
||||
solution: [
|
||||
{ note: 'В степень возводится каждый множитель: ({a}x)^{n} = {a}^{n}·x^{n}.', tex: '{a}^{n}*x^{n}' },
|
||||
{ note: 'Считаем {a}^{n}.', tex: '{an}*x^{n}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* дробь степеней (объединить и сократить) */
|
||||
{
|
||||
id: 'pow-frac-combine', topic: 'powers', order: 6, subject: 'algebra', grade: 8, kind: 'simplify',
|
||||
title: 'Дробь степеней',
|
||||
pick: { a: [2, 5], b: [2, 5], c: [1, 4] }, require: 'a + b - c >= 1',
|
||||
derive: { d: 'a + b - c' },
|
||||
srcExpr: '(x^{a}*x^{b})/x^{c}', answerExpr: 'x^{d}', answerVars: ['x'],
|
||||
display: 'Упростите: (x^{a} · x^{b}) / x^{c}',
|
||||
solution: [
|
||||
{ note: 'В числителе складываем показатели: {a} + {b}.', tex: 'x^({a} + {b}) / x^{c}' },
|
||||
{ note: 'При делении вычитаем показатель знаменателя: ({a} + {b}) − {c}.', tex: 'x^{d}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* степени одного основания — число */
|
||||
{
|
||||
id: 'pow-numeric-laws', topic: 'powers', order: 7, subject: 'algebra', grade: 8, kind: 'compute',
|
||||
title: 'Произведение степеней (число)',
|
||||
pick: { b: [2, 3], a: [2, 3], c: [1, 2] },
|
||||
derive: { val: 'b^(a + c)' },
|
||||
lhs: 'x', rhs: '{b}^{a}*{b}^{c}', display: 'Вычислите {b}^{a} · {b}^{c} (запишите числом).',
|
||||
answerVar: 'x', answer: 'val', integerAnswer: true,
|
||||
solution: [
|
||||
{ note: 'У одинакового основания показатели складываются: {a} + {c}.', tex: 'x = {b}^({a} + {c})' },
|
||||
{ note: 'Считаем.', tex: 'x = {ans}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* стандартный вид числа */
|
||||
{
|
||||
id: 'pow-standard-form', topic: 'powers', order: 8, subject: 'algebra', grade: 8, kind: 'compute',
|
||||
title: 'Стандартный вид числа',
|
||||
pick: { a: [2, 9], n: [2, 4] },
|
||||
derive: { val: 'a*10^n' },
|
||||
lhs: 'x', rhs: '{a}*10^{n}', display: 'Запишите число {a}·10^{n} в обычном виде.',
|
||||
answerVar: 'x', answer: 'val', integerAnswer: true,
|
||||
solution: [
|
||||
{ note: '{a}·10^{n} — это {a} с {n} нулями.', tex: 'x = {a} * 10^{n}' },
|
||||
{ note: 'Считаем.', tex: 'x = {ans}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* какой показатель (закон степеней) */
|
||||
{
|
||||
id: 'pow-which-law', topic: 'powers', order: 9, subject: 'algebra', grade: 8, kind: 'compute',
|
||||
title: 'Какой показатель',
|
||||
pick: { a: [2, 6], b: [2, 6] },
|
||||
derive: { val: 'a + b' },
|
||||
lhs: 'x', rhs: '{a} + {b}', display: 'В какую степень нужно возвести x, чтобы x^{a} · x^{b} = x^▢ ?',
|
||||
answerVar: 'x', answer: 'val', integerAnswer: true,
|
||||
solution: [
|
||||
{ note: 'При умножении степеней с одинаковым основанием показатели складываются.', tex: 'x = {a} + {b}' },
|
||||
{ note: 'Считаем.', tex: 'x = {ans}' }
|
||||
]
|
||||
}
|
||||
|
||||
];
|
||||
@@ -1658,6 +1951,12 @@
|
||||
'prop-direct-word': 1, 'prop-inverse-word': 2, 'prop-scale-map': 2, 'prop-compound': 3, 'prop-share-ratio': 2,
|
||||
'pct-increase': 2, 'pct-decrease': 2, 'pct-change': 3, 'pct-simple-interest': 2, 'pct-compound-2y': 3, 'pct-restore-before': 3,
|
||||
'app-meet': 2, 'app-overtake': 3, 'app-upstream': 2, 'app-work-joint': 3, 'app-mix-blend': 3, 'app-profit-pct': 3,
|
||||
// V4.1 — Выражения (упрощение/формулы/степени)
|
||||
'simp-like-multivar': 2, 'simp-like-const': 2, 'simp-sub-bracket': 3, 'simp-distribute-combine': 3,
|
||||
'simp-factor-common': 2, 'simp-factor-group': 3, 'simp-eval-at': 2,
|
||||
'diff-sq-factor': 3, 'sq-trinom-factor': 3, 'sq-sum-coef': 3, 'cube-sum': 3, 'sum-cubes-factor': 3,
|
||||
'fmt-blank-square': 2, 'fmt-fix-square': 3,
|
||||
'pow-div': 2, 'pow-product-base': 2, 'pow-frac-combine': 3, 'pow-numeric-laws': 2, 'pow-standard-form': 2, 'pow-which-law': 2,
|
||||
// НОД/НОК / Дроби / Десятичные / Отрицательные
|
||||
'gcd-pair': 1, 'lcm-pair': 2,
|
||||
'frac-of-number': 1, 'frac-add-same': 2,
|
||||
|
||||
Reference in New Issue
Block a user