From 2a50ff740ab7ac68d21ca50bb7115859f39e74d2 Mon Sep 17 00:00:00 2001 From: Maxim Dolgolyov Date: Thu, 25 Jun 2026 17:44:20 +0300 Subject: [PATCH] =?UTF-8?q?fix(trainer):=20=D1=80=D0=B5=D1=88=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=9D=D0=9E=D0=94/=D0=9D=D0=9E=D0=9A=20=D0=B1?= =?UTF-8?q?=D0=B5=D0=B7=20=D1=81=D1=82=D0=B5=D0=BF=D0=B5=D0=BD=D0=B5=D0=B9?= =?UTF-8?q?=20=E2=80=94=20=D0=BF=D1=80=D0=BE=D0=B8=D0=B7=D0=B2=D0=B5=D0=B4?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC=20=D0=BF=D1=80=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=8B=D1=85=20=D0=BC=D0=BD=D0=BE=D0=B6=D0=B8=D1=82=D0=B5=D0=BB?= =?UTF-8?q?=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit По просьбе: показывать разложение без показателей (2·2·7-стиль вместо 2²·7). Из-за статичных шаблонов переменное число множителей со степенями не развернуть, поэтому модель упрощена и стала нагляднее: - a = p·q, b = p·r (три различных простых из {2,3,5,7}); общий множитель p стоит ПЕРВЫМ в обеих строках разложения → общее видно сразу - НОД = p (общий множитель), НОК = p·q·r (все множители, общий один раз) - разложение печатается как 10 = 5·2, 15 = 5·3 → НОД = 5; НОК(6,15): 3·2·5 = 30 — без степеней - gcd/lcm дают эталон проверки; смоук движка 1154/1154, эмодзи 0 Co-Authored-By: Claude Opus 4.8 (1M context) --- frontend/js/trainer/generators.js | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/frontend/js/trainer/generators.js b/frontend/js/trainer/generators.js index 9d53543..02f211a 100644 --- a/frontend/js/trainer/generators.js +++ b/frontend/js/trainer/generators.js @@ -847,22 +847,20 @@ { id: 'gcd-pair', topic: 'gcd-lcm', order: 1, subject: 'algebra', grade: 5, kind: 'compute', title: 'НОД двух чисел', - pick: { ip: [0, 3], iq: [0, 3], e1: [1, 2], e2: [1, 2], f1: [1, 2], f2: [1, 2] }, - constraint: 'ip < iq', + pick: { ip: [0, 3], iq: [0, 3], ir: [0, 3] }, + constraint: 'ip != iq && ip != ir && iq != ir', derive: { p: '(ip==0)?2:((ip==1)?3:((ip==2)?5:7))', q: '(iq==0)?2:((iq==1)?3:((iq==2)?5:7))', - a: 'p^e1 * q^f1', b: 'p^e2 * q^f2', - me: 'min(e1, e2)', mf: 'min(f1, f2)', val: 'gcd(a, b)' + r: '(ir==0)?2:((ir==1)?3:((ir==2)?5:7))', + a: 'p*q', b: 'p*r', val: 'gcd(a, b)' }, - require: 'a != b && a <= 400 && b <= 400', lhs: 'x', rhs: 'gcd({a}, {b})', display: 'Найдите наибольший общий делитель (НОД) чисел {a} и {b}.', answerVar: 'x', answer: 'val', integerAnswer: true, solution: [ - { note: 'Разложим {a} на простые множители:', tex: '{a} = {p}^{e1} * {q}^{f1}' }, - { note: 'Разложим {b} на простые множители:', tex: '{b} = {p}^{e2} * {q}^{f2}' }, - { note: 'НОД — произведение ОБЩИХ простых множителей в НАИМЕНЬШИХ степенях:', tex: 'x = {p}^{me} * {q}^{mf}' }, - { note: 'Перемножаем:', tex: 'x = {ans}' } + { note: 'Разложим {a} на простые множители:', tex: '{a} = {p} * {q}' }, + { note: 'Разложим {b} на простые множители:', tex: '{b} = {p} * {r}' }, + { note: 'Общий простой множитель у обоих чисел — {p}. Значит, НОД равен {p}:', tex: 'x = {p}' } ] }, @@ -870,21 +868,20 @@ { id: 'lcm-pair', topic: 'gcd-lcm', order: 2, subject: 'algebra', grade: 6, kind: 'compute', title: 'НОК двух чисел', - pick: { ip: [0, 3], iq: [0, 3], e1: [1, 2], e2: [1, 2], f1: [1, 2], f2: [1, 2] }, - constraint: 'ip < iq', + pick: { ip: [0, 3], iq: [0, 3], ir: [0, 3] }, + constraint: 'ip != iq && ip != ir && iq != ir', derive: { p: '(ip==0)?2:((ip==1)?3:((ip==2)?5:7))', q: '(iq==0)?2:((iq==1)?3:((iq==2)?5:7))', - a: 'p^e1 * q^f1', b: 'p^e2 * q^f2', - Me: 'max(e1, e2)', Mf: 'max(f1, f2)', val: 'lcm(a, b)' + r: '(ir==0)?2:((ir==1)?3:((ir==2)?5:7))', + a: 'p*q', b: 'p*r', val: 'lcm(a, b)' }, - require: 'a != b && a <= 400 && b <= 400', lhs: 'x', rhs: 'lcm({a}, {b})', display: 'Найдите наименьшее общее кратное (НОК) чисел {a} и {b}.', answerVar: 'x', answer: 'val', integerAnswer: true, solution: [ - { note: 'Разложим {a} на простые множители:', tex: '{a} = {p}^{e1} * {q}^{f1}' }, - { note: 'Разложим {b} на простые множители:', tex: '{b} = {p}^{e2} * {q}^{f2}' }, - { note: 'НОК — произведение ВСЕХ простых множителей в НАИБОЛЬШИХ степенях:', tex: 'x = {p}^{Me} * {q}^{Mf}' }, + { note: 'Разложим {a} на простые множители:', tex: '{a} = {p} * {q}' }, + { note: 'Разложим {b} на простые множители:', tex: '{b} = {p} * {r}' }, + { note: 'НОК — произведение всех множителей, общий ({p}) берём один раз:', tex: 'x = {p} * {q} * {r}' }, { note: 'Перемножаем:', tex: 'x = {ans}' } ] },