feat(math5): Глава 1 §10–§12 — степень, деление с остатком, НОД и НОК
§10 Степень (a^n, основание/показатель; квадрат из клеток a×a + тренажёр степеней). §11 Деление с остатком (a=bq+r; точки по b в ряд, остаток красным + тренажёр неполного частного). §12 Делители/кратные, НОД/НОК (делители-чипсы с подсветкой общих → НОД + тренажёр НОК). Шпаргалки/типсы §10–12. Тесты math5: 8/8. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -832,6 +832,223 @@ function buildP9(){
|
||||
})();
|
||||
}
|
||||
|
||||
/* ===================== § 10. СТЕПЕНЬ ЧИСЛА ===================== */
|
||||
function buildP10(){
|
||||
var box=document.getElementById('p10-body'); var h='';
|
||||
h+=makeCard('oral','Где это в жизни','10.0',
|
||||
'<p>Степень прячется там, где что-то многократно повторяется. Площадь квадратного ковра со стороной $3$ м — это $3^2=9$ м². Объём кубика со стороной $2$ см — $2^3=8$ см³. А если каждый день репост видят вдвое больше людей — рост идёт степенями двойки.</p>');
|
||||
h+=makeCard('theory','Что такое степень','10.1',
|
||||
'<p><b>Степенью</b> числа $a$ с натуральным показателем $n$ называют произведение $n$ одинаковых множителей $a$:</p>'
|
||||
+'<p>$a^n=\\underbrace{a\\cdot a\\cdot \\ldots \\cdot a}_{n}$. Здесь $a$ — <b>основание</b>, $n$ — <b>показатель</b>.</p>'
|
||||
+'<p>$a^2$ читают «$a$ в квадрате», $a^3$ — «$a$ в кубе». Принято $a^1=a$.</p>');
|
||||
h+=makeCard('example','Примеры','10.2',
|
||||
'<p>$2^3=2\\cdot2\\cdot2=8$. $5^2=25$. $10^4=10\\,000$. $1^{100}=1$.</p>');
|
||||
h+=makeCard('example','Разбор по шагам','10.3',
|
||||
'<p>Вычислим $2^4$.</p>'
|
||||
+'<ol style="padding-left:22px;line-height:2">'
|
||||
+'<li>Показатель $4$ — берём $4$ множителя: $2\\cdot2\\cdot2\\cdot2$.</li>'
|
||||
+'<li>$2\\cdot2=4$, затем $4\\cdot2=8$, затем $8\\cdot2=16$.</li>'
|
||||
+'<li>Ответ: $2^4=16$.</li>'
|
||||
+'</ol>');
|
||||
h+=makeCard('theory','А знаешь ли ты?','10.4',
|
||||
'<p>По легенде, изобретатель шахмат попросил у правителя «всего лишь» зёрнышко за первую клетку, $2$ за вторую, $4$ за третью и так далее — удваивая. На $64$-й клетке вышло $2^{63}$ зёрен — больше, чем во всех амбарах мира! Вот как быстро растут степени двойки.</p>');
|
||||
h+='<div class="wg" id="p10-iv1"><div class="wg-header"><span class="wg-badge">Интерактив 1</span><div class="wg-title">Квадрат числа</div></div>'
|
||||
+'<div class="wg-help">Клетки образуют квадрат со стороной $a$. Сколько всего клеток ($a^2$)?</div>'
|
||||
+'<div class="score-display"><span>Вопрос <b id="p10-i">1</b> / 5</span><span>Очки: <b id="p10-s">0</b> / 5</span></div>'
|
||||
+'<div id="p10-fig" style="text-align:center;margin:8px 0"></div>'
|
||||
+'<div style="display:flex;gap:10px;justify-content:center;align-items:center;flex-wrap:wrap"><input type="number" id="p10-a" class="tinp" style="width:90px;text-align:center"><button class="btn primary" id="p10-go">Проверить</button></div>'
|
||||
+'<div class="feedback" id="p10-fb"></div></div>';
|
||||
h+='<div class="wg" id="p10-iv2"><div class="wg-header"><span class="wg-badge">Интерактив 2</span><div class="wg-title">Вычисли степень</div></div>'
|
||||
+'<div class="wg-help">Вычисли значение степени.</div>'
|
||||
+'<div class="score-display"><span>Пример <b id="p10-pi">1</b> / 6</span><span>Очки: <b id="p10-ps">0</b> / 6</span></div>'
|
||||
+'<div id="p10-pq" class="qbox"></div>'
|
||||
+'<div style="display:flex;gap:10px;justify-content:center;align-items:center;flex-wrap:wrap"><input type="number" id="p10-pa" class="tinp" style="width:120px;text-align:center"><button class="btn primary" id="p10-pgo">Проверить</button></div>'
|
||||
+'<div class="feedback" id="p10-pfb"></div></div>';
|
||||
h+=secNav('p9','p11')+readBtn('p10');
|
||||
box.innerHTML=h; renderMath(box);
|
||||
|
||||
(function(){
|
||||
var i=0,score=0,cur=null;
|
||||
function sqSVG(a){ var u=Math.min(26,Math.floor(150/a)),x0=4,W=x0*2+a*u; var s='<svg viewBox="0 0 '+W+' '+W+'" width="'+Math.min(W,220)+'" style="max-width:100%">';
|
||||
for(var r=0;r<a;r++)for(var c=0;c<a;c++) s+='<rect x="'+(x0+c*u)+'" y="'+(x0+r*u)+'" width="'+(u-2)+'" height="'+(u-2)+'" rx="2" fill="#a5b4fc" stroke="#4f46e5"/>';
|
||||
return s+'</svg>'; }
|
||||
function gen(){ cur=_ri(2,9); }
|
||||
function show(){ if(i>=5){ document.getElementById('p10-fig').innerHTML='<b>Готово! '+score+' / 5</b>'; if(score>=4){addXp(15,'p10-iv1');bumpProgress('p10',30);}else if(score>=2){addXp(8,'p10-iv1');bumpProgress('p10',16);} return; }
|
||||
gen(); document.getElementById('p10-i').textContent=i+1;
|
||||
document.getElementById('p10-fig').innerHTML=sqSVG(cur)+'<div style="margin-top:4px;color:var(--muted);font-size:.9rem">сторона '+cur+', значит '+cur+'<sup>2</sup></div>';
|
||||
document.getElementById('p10-a').value=''; document.getElementById('p10-fb').style.display='none'; }
|
||||
function go(){ if(i>=5)return; var fb=document.getElementById('p10-fb'), a=parseInt(document.getElementById('p10-a').value,10);
|
||||
if(isNaN(a)){ feedback(fb,false,'Введи число.'); return; }
|
||||
if(a===cur*cur){ score++; feedback(fb,true,'✓ Верно! $'+cur+'^2='+(cur*cur)+'$.'); renderMath(fb); } else { feedback(fb,false,'✗ Нет. $'+cur+'^2='+(cur*cur)+'$.'); renderMath(fb); }
|
||||
document.getElementById('p10-s').textContent=score; i++; setTimeout(show,1200); }
|
||||
document.getElementById('p10-go').addEventListener('click',go);
|
||||
document.getElementById('p10-a').addEventListener('keydown',function(e){ if(e.key==='Enter')go(); });
|
||||
show();
|
||||
})();
|
||||
|
||||
(function(){
|
||||
var i=0,score=0,cur=null;
|
||||
function gen(){ var a=_ri(2,7), n=_pick([2,2,3,3,4]); if(a>=6)n=_pick([2,3]); cur={a:a,n:n,ans:Math.pow(a,n)}; }
|
||||
function show(){ if(i>=6){ document.getElementById('p10-pq').innerHTML='<b>Готово! '+score+' / 6</b>'; if(score>=5){addXp(15,'p10-iv2');bumpProgress('p10',30);}else if(score>=3){addXp(8,'p10-iv2');bumpProgress('p10',16);} return; }
|
||||
gen(); document.getElementById('p10-pi').textContent=i+1;
|
||||
document.getElementById('p10-pq').innerHTML='Вычисли $'+cur.a+'^{'+cur.n+'}$'; renderMath(document.getElementById('p10-pq'));
|
||||
document.getElementById('p10-pa').value=''; document.getElementById('p10-pfb').style.display='none'; }
|
||||
function go(){ if(i>=6)return; var fb=document.getElementById('p10-pfb'), a=parseInt(document.getElementById('p10-pa').value,10);
|
||||
if(isNaN(a)){ feedback(fb,false,'Введи число.'); return; }
|
||||
if(a===cur.ans){ score++; feedback(fb,true,'✓ Верно! Ответ '+cur.ans+'.'); } else feedback(fb,false,'✗ Нет. Правильно: '+cur.ans+'.');
|
||||
document.getElementById('p10-ps').textContent=score; i++; setTimeout(show,1200); }
|
||||
document.getElementById('p10-pgo').addEventListener('click',go);
|
||||
document.getElementById('p10-pa').addEventListener('keydown',function(e){ if(e.key==='Enter')go(); });
|
||||
show();
|
||||
})();
|
||||
}
|
||||
|
||||
/* ===================== § 11. ДЕЛЕНИЕ С ОСТАТКОМ ===================== */
|
||||
function buildP11(){
|
||||
var box=document.getElementById('p11-body'); var h='';
|
||||
h+=makeCard('oral','Где это в жизни','11.0',
|
||||
'<p>Разделить $25$ конфет на $4$ детей поровну не получится — по $6$ и ещё одна лишняя. Эта «лишняя» — <b>остаток</b>. Деление с остатком повсюду: дни недели, страницы по тетрадям, ученики по командам.</p>');
|
||||
h+=makeCard('rule','Деление с остатком','11.1',
|
||||
'<p>Разделить $a$ на $b$ с остатком — значит найти такие числа $q$ и $r$, что</p>'
|
||||
+'<p style="text-align:center;font-size:1.1rem">$a = b\\cdot q + r$, где $0\\le r < b$.</p>'
|
||||
+'<p>$q$ — <b>неполное частное</b>, $r$ — <b>остаток</b>. Остаток всегда <b>меньше делителя</b>.</p>');
|
||||
h+=makeCard('example','Примеры','11.2',
|
||||
'<p>$47:5=9$ (ост. $2$), ведь $5\\cdot9+2=47$. $30:6=5$ (ост. $0$) — делится нацело.</p>');
|
||||
h+=makeCard('example','Разбор по шагам','11.3',
|
||||
'<p>Разделим $47$ на $5$ с остатком.</p>'
|
||||
+'<ol style="padding-left:22px;line-height:2">'
|
||||
+'<li>Ищем наибольшее число «пятёрок» в $47$: $5\\cdot9=45$, а $5\\cdot10=50$ — уже много.</li>'
|
||||
+'<li>Значит неполное частное $q=9$.</li>'
|
||||
+'<li>Остаток: $47-45=2$. Проверяем: $2<5$. Верно.</li>'
|
||||
+'<li>Ответ: $47=5\\cdot9+2$.</li>'
|
||||
+'</ol>');
|
||||
h+=makeCard('theory','А знаешь ли ты?','11.4',
|
||||
'<p>Часы — это деление с остатком! Если сейчас $10$ часов, то через $5$ часов будет не $15$, а $3$ часа: $15:12=1$ (ост. $3$). Математики называют такой счёт «арифметикой остатков», и на ней держится вся компьютерная защита данных.</p>');
|
||||
h+='<div class="wg" id="p11-iv1"><div class="wg-header"><span class="wg-badge">Интерактив 1</span><div class="wg-title">Найди остаток</div></div>'
|
||||
+'<div class="wg-help">Точки раскладывают по $b$ в ряд. Сколько точек останется в неполном ряду?</div>'
|
||||
+'<div class="score-display"><span>Вопрос <b id="p11-i">1</b> / 6</span><span>Очки: <b id="p11-s">0</b> / 6</span></div>'
|
||||
+'<div id="p11-fig" style="text-align:center;margin:8px 0;overflow-x:auto"></div>'
|
||||
+'<div style="display:flex;gap:10px;justify-content:center;align-items:center;flex-wrap:wrap"><input type="number" id="p11-a" class="tinp" style="width:90px;text-align:center" min="0"><button class="btn primary" id="p11-go">Проверить</button></div>'
|
||||
+'<div class="feedback" id="p11-fb"></div></div>';
|
||||
h+='<div class="wg" id="p11-iv2"><div class="wg-header"><span class="wg-badge">Интерактив 2</span><div class="wg-title">Неполное частное</div></div>'
|
||||
+'<div class="wg-help">Найди неполное частное $q$ (сколько целых раз делитель помещается в делимом).</div>'
|
||||
+'<div class="score-display"><span>Вопрос <b id="p11-qi">1</b> / 5</span><span>Очки: <b id="p11-qs">0</b> / 5</span></div>'
|
||||
+'<div id="p11-qq" class="qbox"></div>'
|
||||
+'<div style="display:flex;gap:10px;justify-content:center;align-items:center;flex-wrap:wrap"><input type="number" id="p11-qa" class="tinp" style="width:90px;text-align:center" min="0"><button class="btn primary" id="p11-qgo">Проверить</button></div>'
|
||||
+'<div class="feedback" id="p11-qfb"></div></div>';
|
||||
h+=secNav('p10','p12')+readBtn('p11');
|
||||
box.innerHTML=h; renderMath(box);
|
||||
|
||||
(function(){
|
||||
var i=0,score=0,cur=null;
|
||||
function dotsSVG(a,b){ var u=15,x0=6,cols=b,rows=Math.ceil(a/b),W=x0*2+cols*u,H=x0*2+rows*u; var s='<svg viewBox="0 0 '+W+' '+H+'" width="'+Math.min(W,360)+'" style="max-width:100%">',k=0;
|
||||
for(var r=0;r<rows;r++)for(var c=0;c<cols;c++){ if(k>=a)break; var rem=k>=a-(a%b||b)&&(a%b)!==0&&r===rows-1; s+='<circle cx="'+(x0+c*u+u/2)+'" cy="'+(x0+r*u+u/2)+'" r="5" fill="'+(rem?'#e11d48':'#4f46e5')+'"/>'; k++; } return s+'</svg>'; }
|
||||
function gen(){ var b=_ri(3,7), q=_ri(3,8), r=_ri(1,b-1); cur={a:b*q+r,b:b,r:r}; }
|
||||
function show(){ if(i>=6){ document.getElementById('p11-fig').innerHTML='<b>Готово! '+score+' / 6</b>'; if(score>=5){addXp(15,'p11-iv1');bumpProgress('p11',30);}else if(score>=3){addXp(8,'p11-iv1');bumpProgress('p11',16);} return; }
|
||||
gen(); document.getElementById('p11-i').textContent=i+1;
|
||||
document.getElementById('p11-fig').innerHTML=dotsSVG(cur.a,cur.b)+'<div style="margin-top:4px;color:var(--muted);font-size:.9rem">'+cur.a+' точек по '+cur.b+' в ряд</div>';
|
||||
document.getElementById('p11-a').value=''; document.getElementById('p11-fb').style.display='none'; }
|
||||
function go(){ if(i>=6)return; var fb=document.getElementById('p11-fb'), a=parseInt(document.getElementById('p11-a').value,10);
|
||||
if(isNaN(a)){ feedback(fb,false,'Введи число.'); return; }
|
||||
if(a===cur.r){ score++; feedback(fb,true,'✓ Верно! Остаток '+cur.r+' (красные точки).'); } else feedback(fb,false,'✗ Нет. Остаток '+cur.r+'.');
|
||||
document.getElementById('p11-s').textContent=score; i++; setTimeout(show,1300); }
|
||||
document.getElementById('p11-go').addEventListener('click',go);
|
||||
document.getElementById('p11-a').addEventListener('keydown',function(e){ if(e.key==='Enter')go(); });
|
||||
show();
|
||||
})();
|
||||
|
||||
(function(){
|
||||
var i=0,score=0,cur=null;
|
||||
function gen(){ var b=_ri(3,12), q=_ri(4,15), r=_ri(0,b-1); cur={a:b*q+r,b:b,q:q}; }
|
||||
function show(){ if(i>=5){ document.getElementById('p11-qq').innerHTML='<b>Готово! '+score+' / 5</b>'; if(score>=4){addXp(15,'p11-iv2');bumpProgress('p11',30);}else if(score>=2){addXp(8,'p11-iv2');bumpProgress('p11',16);} return; }
|
||||
gen(); document.getElementById('p11-qi').textContent=i+1;
|
||||
document.getElementById('p11-qq').innerHTML='Раздели $'+cur.a+'$ на $'+cur.b+'$ с остатком. Чему равно <b>неполное частное</b>?'; renderMath(document.getElementById('p11-qq'));
|
||||
document.getElementById('p11-qa').value=''; document.getElementById('p11-qfb').style.display='none'; }
|
||||
function go(){ if(i>=5)return; var fb=document.getElementById('p11-qfb'), a=parseInt(document.getElementById('p11-qa').value,10);
|
||||
if(isNaN(a)){ feedback(fb,false,'Введи число.'); return; }
|
||||
if(a===cur.q){ score++; feedback(fb,true,'✓ Верно! '+cur.a+'='+cur.b+'·'+cur.q+'+'+(cur.a-cur.b*cur.q)+'.'); } else feedback(fb,false,'✗ Нет. Неполное частное '+cur.q+'.');
|
||||
document.getElementById('p11-qs').textContent=score; i++; setTimeout(show,1300); }
|
||||
document.getElementById('p11-qgo').addEventListener('click',go);
|
||||
document.getElementById('p11-qa').addEventListener('keydown',function(e){ if(e.key==='Enter')go(); });
|
||||
show();
|
||||
})();
|
||||
}
|
||||
|
||||
/* ===================== § 12. ДЕЛИТЕЛИ И КРАТНЫЕ. НОД И НОК ===================== */
|
||||
function buildP12(){
|
||||
var box=document.getElementById('p12-body'); var h='';
|
||||
h+=makeCard('oral','Где это в жизни','12.0',
|
||||
'<p>Чтобы рассадить $24$ ученика за столы поровну, нужны <b>делители</b> числа $24$. Чтобы два светофора, мигающие через $4$ и $6$ секунд, мигнули одновременно, ищут общее <b>кратное</b>. Эти понятия — основа всей работы с дробями.</p>');
|
||||
h+=makeCard('theory','Делители и кратные','12.1',
|
||||
'<p><b>Делитель</b> числа $a$ — число, на которое $a$ делится нацело. Делители $12$: $1,2,3,4,6,12$.</p>'
|
||||
+'<p><b>Кратное</b> числа $a$ — число, которое делится на $a$ нацело. Кратные $4$: $4,8,12,16,\\dots$</p>');
|
||||
h+=makeCard('rule','НОД и НОК','12.2',
|
||||
'<p><b>НОД</b> (наибольший общий делитель) — самое большое число, на которое делятся <b>оба</b> числа.</p>'
|
||||
+'<p><b>НОК</b> (наименьшее общее кратное) — самое маленькое число, которое делится на <b>каждое</b> из них.</p>'
|
||||
+'<p>Полезно: $\\text{НОД}(a,b)\\cdot\\text{НОК}(a,b)=a\\cdot b$.</p>');
|
||||
h+=makeCard('example','Разбор по шагам','12.3',
|
||||
'<p>Найдём НОД$(12,18)$ и НОК$(12,18)$.</p>'
|
||||
+'<ol style="padding-left:22px;line-height:2">'
|
||||
+'<li>Делители $12$: $1,2,3,4,6,12$. Делители $18$: $1,2,3,6,9,18$.</li>'
|
||||
+'<li>Общие: $1,2,3,6$. Наибольший — $6$. Значит НОД$=6$.</li>'
|
||||
+'<li>НОК: кратные $18$: $18,36,54,\\dots$; $36$ делится на $12$. Значит НОК$=36$.</li>'
|
||||
+'<li>Проверка: $6\\cdot36=216=12\\cdot18$. Верно!</li>'
|
||||
+'</ol>');
|
||||
h+=makeCard('theory','А знаешь ли ты?','12.4',
|
||||
'<p>Быстрый способ найти НОД придумал ещё Евклид $2300$ лет назад: большее число заменяют остатком от деления на меньшее — и так, пока остаток не станет нулём. Это один из древнейших алгоритмов, и он до сих пор работает в компьютерах!</p>');
|
||||
h+='<div class="wg" id="p12-iv1"><div class="wg-header"><span class="wg-badge">Интерактив 1</span><div class="wg-title">Найди НОД</div></div>'
|
||||
+'<div class="wg-help">Общие делители подсвечены. Введи наибольший из них (НОД).</div>'
|
||||
+'<div class="score-display"><span>Вопрос <b id="p12-i">1</b> / 5</span><span>Очки: <b id="p12-s">0</b> / 5</span></div>'
|
||||
+'<div id="p12-fig" style="margin:8px 0"></div>'
|
||||
+'<div style="display:flex;gap:10px;justify-content:center;align-items:center;flex-wrap:wrap"><input type="number" id="p12-a" class="tinp" style="width:90px;text-align:center"><button class="btn primary" id="p12-go">Проверить</button></div>'
|
||||
+'<div class="feedback" id="p12-fb"></div></div>';
|
||||
h+='<div class="wg" id="p12-iv2"><div class="wg-header"><span class="wg-badge">Интерактив 2</span><div class="wg-title">Найди НОК</div></div>'
|
||||
+'<div class="wg-help">Найди наименьшее общее кратное двух чисел.</div>'
|
||||
+'<div class="score-display"><span>Вопрос <b id="p12-ki">1</b> / 5</span><span>Очки: <b id="p12-ks">0</b> / 5</span></div>'
|
||||
+'<div id="p12-kq" class="qbox"></div>'
|
||||
+'<div style="display:flex;gap:10px;justify-content:center;align-items:center;flex-wrap:wrap"><input type="number" id="p12-ka" class="tinp" style="width:90px;text-align:center"><button class="btn primary" id="p12-kgo">Проверить</button></div>'
|
||||
+'<div class="feedback" id="p12-kfb"></div></div>';
|
||||
h+=secNav('p11','p13')+readBtn('p12');
|
||||
box.innerHTML=h; renderMath(box);
|
||||
|
||||
function divisors(n){ var d=[]; for(var k=1;k<=n;k++)if(n%k===0)d.push(k); return d; }
|
||||
function gcd(a,b){ while(b){ var t=b; b=a%b; a=t; } return a; }
|
||||
|
||||
(function(){
|
||||
var i=0,score=0,cur=null;
|
||||
function gen(){ var pairs=[[12,18],[8,12],[16,24],[15,20],[18,24],[14,21],[20,30],[9,12]]; cur=_pick(pairs); cur=cur.slice(); cur.g=gcd(cur[0],cur[1]); }
|
||||
function chips(n,common){ var ds=divisors(n),s='<div style="margin:4px 0"><b>Делители '+n+':</b> '; ds.forEach(function(d){ var hot=common.indexOf(d)>=0; s+='<span style="display:inline-block;margin:2px;padding:2px 8px;border-radius:6px;font-weight:700;'+(hot?'background:#fde68a;color:#92400e':'background:var(--pri-soft);color:var(--pri2)')+'">'+d+'</span>'; }); return s+'</div>'; }
|
||||
function show(){ if(i>=5){ document.getElementById('p12-fig').innerHTML='<b>Готово! '+score+' / 5</b>'; if(score>=4){addXp(15,'p12-iv1');bumpProgress('p12',30);}else if(score>=2){addXp(8,'p12-iv1');bumpProgress('p12',16);} return; }
|
||||
gen(); document.getElementById('p12-i').textContent=i+1;
|
||||
var common=divisors(cur[0]).filter(function(d){ return cur[1]%d===0; });
|
||||
document.getElementById('p12-fig').innerHTML=chips(cur[0],common)+chips(cur[1],common);
|
||||
document.getElementById('p12-a').value=''; document.getElementById('p12-fb').style.display='none'; }
|
||||
function go(){ if(i>=5)return; var fb=document.getElementById('p12-fb'), a=parseInt(document.getElementById('p12-a').value,10);
|
||||
if(isNaN(a)){ feedback(fb,false,'Введи число.'); return; }
|
||||
if(a===cur.g){ score++; feedback(fb,true,'✓ Верно! НОД('+cur[0]+','+cur[1]+')='+cur.g+'.'); } else feedback(fb,false,'✗ Нет. НОД='+cur.g+' (наибольший общий делитель).');
|
||||
document.getElementById('p12-s').textContent=score; i++; setTimeout(show,1300); }
|
||||
document.getElementById('p12-go').addEventListener('click',go);
|
||||
document.getElementById('p12-a').addEventListener('keydown',function(e){ if(e.key==='Enter')go(); });
|
||||
show();
|
||||
})();
|
||||
|
||||
(function(){
|
||||
var i=0,score=0,cur=null;
|
||||
function gen(){ var pairs=[[4,6],[6,9],[8,12],[3,5],[10,15],[4,10],[6,8],[9,12]]; var p=_pick(pairs); cur={a:p[0],b:p[1],ans:p[0]*p[1]/gcd(p[0],p[1])}; }
|
||||
function show(){ if(i>=5){ document.getElementById('p12-kq').innerHTML='<b>Готово! '+score+' / 5</b>'; if(score>=4){addXp(15,'p12-iv2');bumpProgress('p12',30);}else if(score>=2){addXp(8,'p12-iv2');bumpProgress('p12',16);} return; }
|
||||
gen(); document.getElementById('p12-ki').textContent=i+1;
|
||||
document.getElementById('p12-kq').innerHTML='Найди НОК$('+cur.a+';\\,'+cur.b+')$'; renderMath(document.getElementById('p12-kq'));
|
||||
document.getElementById('p12-ka').value=''; document.getElementById('p12-kfb').style.display='none'; }
|
||||
function go(){ if(i>=5)return; var fb=document.getElementById('p12-kfb'), a=parseInt(document.getElementById('p12-ka').value,10);
|
||||
if(isNaN(a)){ feedback(fb,false,'Введи число.'); return; }
|
||||
if(a===cur.ans){ score++; feedback(fb,true,'✓ Верно! НОК='+cur.ans+'.'); } else feedback(fb,false,'✗ Нет. НОК('+cur.a+','+cur.b+')='+cur.ans+'.');
|
||||
document.getElementById('p12-ks').textContent=score; i++; setTimeout(show,1300); }
|
||||
document.getElementById('p12-kgo').addEventListener('click',go);
|
||||
document.getElementById('p12-ka').addEventListener('keydown',function(e){ if(e.key==='Enter')go(); });
|
||||
show();
|
||||
})();
|
||||
}
|
||||
|
||||
/* ===================== ДАННЫЕ САЙДБАРА / ГЛОССАРИЯ ===================== */
|
||||
var SIDEBARS = {
|
||||
p1:{ title:'Шпаргалка § 1', rows:[
|
||||
@@ -880,6 +1097,21 @@ var SIDEBARS = {
|
||||
['Деление','обратно умножению'],
|
||||
['Проверка','частное · делитель = делимое'],
|
||||
['Распределит.','$a(b+c)=ab+ac$'] ]},
|
||||
p10:{ title:'Шпаргалка § 10', rows:[
|
||||
['Степень','$a^n=a\\cdot a\\cdots a$ ($n$ раз)'],
|
||||
['Основание','$a$ — что умножаем'],
|
||||
['Показатель','$n$ — сколько множителей'],
|
||||
['$a^2$ / $a^3$','квадрат / куб'] ]},
|
||||
p11:{ title:'Шпаргалка § 11', rows:[
|
||||
['Формула','$a=b\\cdot q+r$'],
|
||||
['$q$','неполное частное'],
|
||||
['$r$','остаток, всегда $r<b$'],
|
||||
['$47:5$','$=9$ (ост. $2$)'] ]},
|
||||
p12:{ title:'Шпаргалка § 12', rows:[
|
||||
['Делитель','делит число нацело'],
|
||||
['Кратное','делится на число нацело'],
|
||||
['НОД','наибольший общий делитель'],
|
||||
['НОК','наименьшее общее кратное'] ]},
|
||||
final:{ title:'Финал главы 1', rows:[
|
||||
['5 боссов','разряды, округление, действия, степень'],
|
||||
['Победа','4 из 5 и больше'],
|
||||
@@ -899,7 +1131,7 @@ var GLOSSARY = [
|
||||
{ term:'разряд', def:'Место цифры в записи числа: единицы, десятки, сотни и т. д.', sec:'p2', aliases:['разряд','разряда','разряде','разряды','разрядов'] },
|
||||
{ term:'класс', def:'Группа из трёх соседних разрядов: единицы, тысячи, миллионы.', sec:'p2', aliases:['класс','класса','классе','классы','классов'] }
|
||||
];
|
||||
var BUILDERS = { p1:buildP1, p2:buildP2, p3:buildP3, p4:buildP4, p5:buildP5, p6:buildP6, p7:buildP7, p8:buildP8, p9:buildP9, final:buildFinal };
|
||||
var BUILDERS = { p1:buildP1, p2:buildP2, p3:buildP3, p4:buildP4, p5:buildP5, p6:buildP6, p7:buildP7, p8:buildP8, p9:buildP9, p10:buildP10, p11:buildP11, p12:buildP12, final:buildFinal };
|
||||
Object.assign(window.M6, { sidebars:SIDEBARS, tips:TIPS, glossary:GLOSSARY, builders:BUILDERS });
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user