feat: exam9 — Экзамен 9 класс по математике (80 вариантов)

Новый отдельный модуль /exam9 в стиле LearnSpace:
- 80 вариантов × 10 заданий = 800 задач с разбором (KaTeX + SVG)
- Сайдбар: пункт «Экзамен 9 класс» (clipboard-check)
- Feature flag: feature_exam9_enabled (мигр. 002)
- Видим всем авторизованным; рендер на стороне клиента
- Прогресс в localStorage: подсветка вариантов (done/partial)
- Возобновление последнего варианта при возврате

Структура:
  frontend/exam9.html              — страница (LearnSpace layout)
  frontend/js/exam9/app.js         — рендерер
  frontend/js/exam9/variants/      — 80 файлов с данными
  frontend/img/exam9/              — 22 PNG/JPG фигур заданий

Картинки путей _tmp/ → /img/exam9/ переписаны автоматически.

Все маршруты проверены: 200 OK на /exam9, /js/exam9/*, /img/exam9/*.
This commit is contained in:
Maxim Dolgolyov
2026-05-16 12:53:49 +03:00
parent ae31e4c4e8
commit 6cff327e88
107 changed files with 16507 additions and 0 deletions
+202
View File
@@ -0,0 +1,202 @@
VARIANTS[23] = {
label: "Вариант 23",
tasks: [
{
text: `Какая из следующих точек является центром окружности,
заданной уравнением $(x-3)^2 + (y+1)^2 = 1$:`,
opts: [
["а", "$A(-3;\\;1)$"], ["б", "$B(-3;\\;{-1})$"], ["в", "$C(3;\\;{-1})$"],
["г", "$D(3;\\;1)$"], ["д", "$E(-1;\\;3)$"],
],
sol: `Стандартное уравнение окружности: $(x-a)^2+(y-b)^2=R^2$, центр $= (a,\\,b)$.
<br>Сравниваем: $(x-3)^2+(y+1)^2=1$ — здесь $a=3$, $b=-1$.
<div class="sol-ans">Ответ: в)&ensp;$C(3;\\;{-1})$</div>`
},
{
text: `Произведение дробей $\\dfrac{a}{a+b} \\cdot \\dfrac{a+b}{b}$ равно:`,
opts: [
["а", "$\\dfrac{a}{b}$"], ["б", "$\\dfrac{a+b}{b}$"], ["в", "$\\dfrac{a+b}{a}$"],
["г", "$1$"], ["д", "$a+b$"],
],
sol: `Сокращаем множитель $(a+b)$:
$$\\dfrac{a}{a+b}\\cdot\\dfrac{a+b}{b} = \\dfrac{a\\cdot(a+b)}{(a+b)\\cdot b} = \\dfrac{a}{b}$$
<div class="sol-ans">Ответ: а)&ensp;$\\dfrac{a}{b}$</div>`
},
{
text: `Какое из следующих утверждений <b>НЕ</b> верно:`,
opts: [
["а", "через точку, лежащую на окружности, можно провести только одну касательную к этой окружности;"],
["б", "площадь прямоугольного треугольника равна произведению катетов;"],
["в", "если два угла одного треугольника равны $20^{\\circ}$ и $80^{\\circ}$, другого — $80^{\\circ}$ и $20^{\\circ}$, то треугольники подобны между собой;"],
["г", "$\\cos 30^{\\circ} = \\dfrac{\\sqrt{3}}{2}$?"],
],
sol: `<ul>
<li>а) Единственная касательная через точку на окружности — <b>верно</b></li>
<li>б) «Площадь прямоугольного треугольника равна произведению катетов» — <b style="color:#dc2626">НЕВЕРНО</b>. Правильная формула: $S = \\dfrac{1}{2}\\cdot a\\cdot b$ (половина произведения катетов). Без множителя $\\tfrac{1}{2}$ формула неверна.</li>
<li>в) Одинаковые наборы углов ($20°, 80°, 80°$) ⟹ треугольники подобны — <b>верно</b></li>
<li>г) $\\cos30° = \\dfrac{\\sqrt{3}}{2}$ — <b>верно</b></li>
</ul>
<div class="sol-ans">Ответ: б)</div>`
},
{
text: `Определите, принадлежит ли точка $A(1;\\;{-1})$ графику функции $y = 4x + 3$.
Ответ обоснуйте.`,
sol: `Подставляем координаты точки $A(1;\\,-1)$ в уравнение $y=4x+3$:
$$y = 4\\cdot1+3 = 7$$
Получили $y=7$, но у точки $A$ координата $y=-1$.
<br>Так как $-1\\neq 7$, точка $A(1;\\,-1)$ <b>не принадлежит</b> графику.
<div class="sol-ans">Ответ: нет, не принадлежит</div>`
},
{
text: `Учащемуся в возрасте $12$ лет требуется не менее $8$$9$ часов сна.
Выполняется ли это требование, если он спит $\\dfrac{1}{3}$ суток? Ответ обоснуйте.`,
sol: `<b>Правило нахождения части от числа:</b> чтобы найти $\\dfrac{m}{n}$ от числа $A$, нужно умножить $A$ на $\\dfrac{m}{n}$. <b>Длительность суток:</b> $24$ часа.
<br><b>Шаг 1.</b> Найдём, сколько часов составляет $\\dfrac{1}{3}$ суток:
$$\\dfrac{1}{3}\\cdot 24 = \\dfrac{24}{3} = 8\\text{ ч}.$$
<b>Шаг 2.</b> Сравним полученное время с нижней границей нормы. По условию требуется <b>не менее $8$ часов</b> сна, значит нужно, чтобы фактическое время сна было $\\geq 8$ ч.
<br>Так как $8\\geq 8$, требование выполняется: продолжительность сна равна нижней границе нормы.
<div class="sol-ans">Ответ: да, требование выполняется — ровно $8$ часов сна</div>`
},
{
text: `Сравните значение выражения
$\\dfrac{16}{7} \\cdot \\left(-\\dfrac{7}{8}\\right) - \\dfrac{1}{4} \\cdot \\left(-\\dfrac{5}{8}\\right) + \\dfrac{1}{5} \\cdot \\left(-\\dfrac{2}{5}\\right)$
с числом $-2{,}5$.`,
sol: `<b>Порядок действий:</b> сначала выполняем умножения, затем сложение и вычитание. <b>Правило умножения дробей:</b> $\\dfrac{a}{b}\\cdot\\dfrac{c}{d}=\\dfrac{ac}{bd}$. <b>Знак произведения:</b> минус на плюс даёт минус, минус на минус — плюс.
<br><b>Шаг 1.</b> Вычислим каждое произведение по отдельности.
$$\\dfrac{16}{7}\\cdot\\left(-\\dfrac{7}{8}\\right) = -\\dfrac{16\\cdot 7}{7\\cdot 8} = -\\dfrac{16}{8} = -2;$$
$$\\dfrac{1}{4}\\cdot\\left(-\\dfrac{5}{8}\\right) = -\\dfrac{5}{32}\\;\\;\\text{(минус на плюс — минус)};$$
$$\\dfrac{1}{5}\\cdot\\left(-\\dfrac{2}{5}\\right) = -\\dfrac{2}{25}.$$
<b>Шаг 2.</b> Подставим найденные произведения. По условию второе слагаемое идёт со знаком «минус», поэтому $-\\left(-\\dfrac{5}{32}\\right)=+\\dfrac{5}{32}$:
$$-2 + \\dfrac{5}{32} - \\dfrac{2}{25}.$$
<b>Шаг 3.</b> Приведём дроби $\\dfrac{5}{32}$ и $\\dfrac{2}{25}$ к общему знаменателю $800$ (это наименьшее общее кратное $32$ и $25$):
$$\\dfrac{5}{32}=\\dfrac{125}{800},\\qquad \\dfrac{2}{25}=\\dfrac{64}{800}.$$
$$-2 + \\dfrac{125}{800} - \\dfrac{64}{800} = -2 + \\dfrac{61}{800}.$$
<b>Шаг 4.</b> Запишем $-2$ как $-\\dfrac{1600}{800}$ и сложим:
$$-\\dfrac{1600}{800} + \\dfrac{61}{800} = -\\dfrac{1539}{800}.$$
<b>Шаг 5.</b> Сравним $-\\dfrac{1539}{800}$ и $-2{,}5=-\\dfrac{2000}{800}$. Из двух отрицательных чисел больше то, у которого модуль меньше:
$$|-1539|=1539\\lt 2000=|-2000| \\;\\implies\\; -\\dfrac{1539}{800}\\gt -\\dfrac{2000}{800}.$$
Значит, значение выражения больше, чем $-2{,}5$.
<div class="sol-ans">Ответ: выражение $\\gt -2{,}5$</div>`
},
{
text: `Найдите площадь треугольника со сторонами $9$ см, $12$ см и $15$ см.`,
sol: `<b>Теорема, обратная теореме Пифагора:</b> если для сторон $a$, $b$, $c$ треугольника выполняется $a^2+b^2=c^2$, то треугольник прямоугольный, $c$ — гипотенуза.
<br><b>Формула площади прямоугольного треугольника:</b> $S = \\dfrac{1}{2}\\cdot a\\cdot b$, где $a$ и $b$ — катеты.
<br><b>Шаг 1.</b> Проверим, является ли треугольник прямоугольным. Для этого квадрат большей стороны сравниваем с суммой квадратов двух других:
$$9^2+12^2 = 81+144 = 225$$
$$15^2 = 225$$
Поскольку $9^2+12^2=15^2$, треугольник прямоугольный, катеты — $9$ и $12$, гипотенуза — $15$.
<svg viewBox="0 0 162 168" xmlns="http://www.w3.org/2000/svg" style="max-width:162px;width:100%;height:auto;display:block;margin:8px 0">
<polygon points="20,148 110,148 20,28" fill="rgba(37,99,235,0.08)" stroke="#334155" stroke-width="1.8"/>
<polygon points="20,148 32,148 32,136 20,136" fill="none" stroke="#334155" stroke-width="1.3"/>
<text x="6" y="23" font-size="13" font-family="serif" font-style="italic">A</text>
<text x="112" y="157" font-size="13" font-family="serif" font-style="italic">B</text>
<text x="5" y="158" font-size="13" font-family="serif" font-style="italic">C</text>
<text x="4" y="92" font-size="11" fill="#334155">12 см</text>
<text x="55" y="162" font-size="11" fill="#334155">9 см</text>
<text x="72" y="78" font-size="11" fill="#334155">15 см</text>
</svg>
<b>Шаг 2.</b> Применяем формулу площади:
$$S = \\dfrac{1}{2}\\cdot 9\\cdot 12 = \\dfrac{108}{2} = 54\\text{ см}^2$$
<div class="sol-ans">Ответ: $54$ см²</div>`
},
{
text: `Найдите частное $a$ и $b$, если
$a = 3^6 \\cdot (5^{-1})^{-2} \\cdot \\dfrac{1}{4^{-2}}$
и $b = 3^8 \\cdot 5^3 \\cdot \\dfrac{1}{4^{-1}}$.`,
sol: `<b>Свойства степеней:</b> $(x^m)^n=x^{mn}$,&ensp; $\\dfrac{1}{x^{-n}}=x^n$,&ensp; $\\dfrac{x^m}{x^n}=x^{m-n}$,&ensp; $x^{-n}=\\dfrac{1}{x^n}$.
<br><b>Шаг 1.</b> Упростим выражение $a$. По правилу степени степени $(5^{-1})^{-2}=5^{(-1)\\cdot(-2)}=5^2$, а $\\dfrac{1}{4^{-2}}=4^2$:
$$a = 3^6\\cdot 5^2\\cdot 4^2.$$
<b>Шаг 2.</b> Упростим $b$. Аналогично $\\dfrac{1}{4^{-1}}=4^1=4$:
$$b = 3^8\\cdot 5^3\\cdot 4.$$
<b>Шаг 3.</b> Найдём частное. Сгруппируем одинаковые основания и применим правило $\\dfrac{x^m}{x^n}=x^{m-n}$:
$$\\dfrac{a}{b} = \\dfrac{3^6\\cdot 5^2\\cdot 4^2}{3^8\\cdot 5^3\\cdot 4} = 3^{6-8}\\cdot 5^{2-3}\\cdot 4^{2-1} = 3^{-2}\\cdot 5^{-1}\\cdot 4.$$
<b>Шаг 4.</b> Запишем отрицательные степени как дроби:
$$3^{-2}\\cdot 5^{-1}\\cdot 4 = \\dfrac{4}{3^2\\cdot 5} = \\dfrac{4}{9\\cdot 5} = \\dfrac{4}{45}.$$
<div class="sol-ans">Ответ: $\\dfrac{a}{b}=\\dfrac{4}{45}$</div>`
},
{
text: `Бобруйскому заводу тракторных деталей и агрегатов поступил заказ
на изготовление $800$ малогабаритных прицепов для трактора к определённому сроку.
Работая точно по графику, рабочие выполнили $25\\%$ заказа,
а затем стали собирать на $10$ прицепов больше и выполнили заказ за $2$ дня
до назначенного срока. За сколько дней рабочие выполнили заказ?`,
sol: `Пусть плановая выработка $= x$ прицепов в день.
<br><b>По плану:</b> весь заказ занял бы $\\dfrac{800}{x}$ дней.
<br><b>Фактически:</b>
<ul>
<li>$25\\%$ от $800 = 200$ прицепов — сделали за $\\dfrac{200}{x}$ дней по плану</li>
<li>Оставшиеся $600$ — делали с темпом $(x+10)$ за $\\dfrac{600}{x+10}$ дней</li>
</ul>
Закончили на $2$ дня раньше:
$$\\dfrac{800}{x} - \\left(\\dfrac{200}{x}+\\dfrac{600}{x+10}\\right) = 2$$
$$\\dfrac{600}{x} - \\dfrac{600}{x+10} = 2$$
Умножаем на $x(x+10)$:
$$600(x+10)-600x = 2x(x+10)$$
$$6000 = 2x^2+20x$$
$$x^2+10x-3000=0$$
$$D = 100+12000 = 12100 = 110^2$$
$$x = \\dfrac{-10+110}{2} = 50$$
<b>Плановый срок:</b> $\\dfrac{800}{50}=16$ дней. Фактически: $16-2=14$ дней.
<br><b>Проверка:</b> $\\dfrac{200}{50}+\\dfrac{600}{60} = 4+10 = 14$ дней ✓
<div class="sol-ans">Ответ: $14$ дней</div>`
},
{
text: `В окружности проведены две взаимно перпендикулярные хорды $AB$ и $CD$,
которые пересекаются в точке $K$, $AK = 2$, $KB = 6$, $DK = 3$.
Найдите площадь круга, ограниченного этой окружностью.`,
sol: `<b>Шаг 1. Находим $CK$ — теорема о пересекающихся хордах.</b>
<br>При пересечении хорд произведения отрезков равны: $AK\\cdot KB = CK\\cdot KD$:
$$2\\cdot6 = CK\\cdot3 \\implies CK = 4$$
Длины хорд: $AB = 2+6 = 8$ см,&ensp;$CD = 4+3 = 7$ см.
<br><b>Шаг 2. Серединные перпендикуляры проходят через центр.</b>
<br>Обозначим $M$ — середина $AB$, $N$ — середина $CD$. По свойству хорд:
$$OM \\perp AB \\quad \\text{и} \\quad ON \\perp CD$$
<b>Шаг 3. Строим прямоугольник $ONKM$.</b>
<br>Так как $AB \\perp CD$:
<ul>
<li>$OM\\perp AB$ и $AB\\perp CD$$OM\\parallel CD$</li>
<li>$ON\\perp CD$ и $AB\\perp CD$$ON\\parallel AB$</li>
</ul>
Четырёхугольник $ONKM$ — <b>прямоугольник</b>. Его стороны:
$$KM = AM - AK = 4 - 2 = 2$$
Точка $N$ — середина $CD$, $CN=\\dfrac{7}{2}=3{,}5$. Так как $CK=4>3{,}5$, то $N$ лежит между $C$ и $K$:
$$KN = CK - CN = 4 - 3{,}5 = 0{,}5 = \\dfrac{1}{2}$$
Противоположные стороны прямоугольника равны:
$$ON = KM = 2, \\qquad OM = KN = \\dfrac{1}{2}$$
<svg viewBox="0 0 270 228" xmlns="http://www.w3.org/2000/svg" style="max-width:400px;width:100%;height:auto;display:block;margin:10px 0">
<circle cx="145" cy="110" r="81" fill="rgba(37,99,235,0.05)" stroke="#334155" stroke-width="1.5"/>
<polygon points="145,110 105,110 105,120 145,120" fill="rgba(234,179,8,0.18)" stroke="#ca8a04" stroke-width="1.3" stroke-dasharray="4,2"/>
<line x1="65" y1="120" x2="225" y2="120" stroke="#2563eb" stroke-width="1.8"/>
<line x1="105" y1="40" x2="105" y2="180" stroke="#dc2626" stroke-width="1.8"/>
<polygon points="105,120 113,120 113,112 105,112" fill="none" stroke="#334155" stroke-width="1.3"/>
<line x1="65" y1="120" x2="145" y2="110" stroke="rgba(22,163,74,0.5)" stroke-width="1.5"/>
<circle cx="145" cy="120" r="3" fill="#ca8a04"/>
<circle cx="105" cy="110" r="3" fill="#ca8a04"/>
<circle cx="145" cy="110" r="3.5" fill="#1e293b"/>
<circle cx="105" cy="120" r="3" fill="#1e293b"/>
<text x="48" y="124" font-size="13" font-family="serif" font-style="italic" fill="#2563eb">A</text>
<text x="227" y="124" font-size="13" font-family="serif" font-style="italic" fill="#2563eb">B</text>
<text x="108" y="34" font-size="13" font-family="serif" font-style="italic" fill="#dc2626">C</text>
<text x="108" y="190" font-size="13" font-family="serif" font-style="italic" fill="#dc2626">D</text>
<text x="88" y="133" font-size="12" font-family="serif" font-style="italic">K</text>
<text x="148" y="107" font-size="12" font-family="serif" font-style="italic">O</text>
<text x="147" y="133" font-size="12" font-family="serif" font-style="italic" fill="#ca8a04">M</text>
<text x="88" y="108" font-size="12" font-family="serif" font-style="italic" fill="#ca8a04">N</text>
<text x="79" y="114" font-size="10" fill="#2563eb">2</text>
<text x="162" y="114" font-size="10" fill="#2563eb">6</text>
<text x="109" y="78" font-size="10" fill="#dc2626">4</text>
<text x="109" y="155" font-size="10" fill="#dc2626">3</text>
<text x="119" y="134" font-size="10" fill="#ca8a04">KM=2</text>
<text x="147" y="116" font-size="9" fill="#ca8a04">OM=½</text>
<text x="50" y="107" font-size="10" fill="#16a34a" font-style="italic">R</text>
</svg>
<b>Шаг 4. Находим радиус по теореме Пифагора.</b>
<br>В прямоугольном треугольнике $OMA$ (прямой угол у $M$, $OA = R$):
$$R^2 = OM^2 + AM^2 = \\left(\\dfrac{1}{2}\\right)^2 + 4^2 = \\dfrac{1}{4} + 16 = \\dfrac{65}{4}$$
<b>Шаг 5. Площадь круга.</b>
$$S = \\pi R^2 = \\dfrac{65\\pi}{4}\\text{ см}^2$$
<div class="sol-ans">Ответ: $\\dfrac{65\\pi}{4}$ см²</div>`
},
]
};