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
+186
View File
@@ -0,0 +1,186 @@
VARIANTS[34] = {
label: "Вариант 34",
tasks: [
{
text: `Отношение чисел $24$ и $4$ равно:`,
opts: [
["а", "$18$"], ["б", "$32$"], ["в", "$6$"],
["г", "$14$"], ["д", "$1$"],
],
sol: `$$24 : 4 = 6$$
<div class="sol-ans">Ответ: в)&ensp;$6$</div>`
},
{
text: `Запись выражения $1 - \\dfrac{a}{b}$ в виде дроби имеет вид:`,
opts: [
["а", "$\\dfrac{1-a}{b}$"], ["б", "$\\dfrac{b-a}{b}$"], ["в", "$\\dfrac{a-b}{b}$"],
["г", "$b - a$"], ["д", "$\\dfrac{a-1}{b}$"],
],
sol: `Приводим к общему знаменателю $b$:
$$1 - \\dfrac{a}{b} = \\dfrac{b}{b} - \\dfrac{a}{b} = \\dfrac{b-a}{b}$$
<div class="sol-ans">Ответ: б)&ensp;$\\dfrac{b-a}{b}$</div>`
},
{
text: `Какое из следующих утверждений <b>НЕ</b> верно:`,
opts: [
["а", "если четырёхугольник $ABCD$ описан около окружности, то $BC + AD = AB + CD$;"],
["б", "котангенс острого угла прямоугольного треугольника равен отношению прилежащего катета к противолежащему;"],
["в", "вписанный угол равен половине соответствующего центрального угла;"],
["г", "любая биссектриса равнобедренного треугольника является его медианой?"],
],
sol: `<ul>
<li>а) Для описанного четырёхугольника: $BC+AD=AB+CD$ — <b>верно</b> (свойство описанного четырёхугольника)</li>
<li>б) $\\ctg\\alpha = \\dfrac{\\text{прилежащий катет}}{\\text{противолежащий катет}}$ — <b>верно</b></li>
<li>в) Вписанный угол равен половине соответствующего центрального угла — <b>верно</b></li>
<li>г) «Любая биссектриса равнобедренного треугольника является его медианой» — <b style="color:#dc2626">НЕВЕРНО</b>. Биссектриса из вершинного угла к основанию является медианой, а биссектрисы боковых углов медианами не являются.</li>
</ul>
<div class="sol-ans">Ответ: г)</div>`
},
{
text: `Решите неравенство $\\dfrac{x}{2} + 4 < 0$ и укажите наибольшее целое решение этого неравенства.`,
sol: `$$\\dfrac{x}{2} \\lt -4 \\implies x \\lt -8$$
Решение: $x\\in(-\\infty;\\,-8)$. Наибольшее целое число, строго меньшее $-8$ — это $\\mathbf{-9}$.
<div class="sol-ans">Ответ: $x \\lt -8$; наибольшее целое решение $= -9$</div>`
},
{
text: `В угол $B$ вписана окружность с центром в точке $O$, которая касается сторон угла
в точках $A$ и $C$. Найдите угол $ABO$, если $\\angle AOC = 118^{\\circ}$.`,
sol: `<b>Свойство касательной к окружности:</b> радиус, проведённый в точку касания, перпендикулярен касательной.
<br>Значит, $\\angle OAB = 90°$ и $\\angle OCB = 90°$.
<svg viewBox="0 0 205 140" xmlns="http://www.w3.org/2000/svg" style="max-width:250px;width:100%;height:auto;display:block;margin:8px 0">
<line x1="10" y1="120" x2="195" y2="120" stroke="#334155" stroke-width="1.8"/>
<line x1="30" y1="120" x2="83" y2="12" stroke="#334155" stroke-width="1.8"/>
<circle cx="75" cy="92" r="28" fill="rgba(37,99,235,0.08)" stroke="#2563eb" stroke-width="1.5"/>
<line x1="75" y1="92" x2="75" y2="120" stroke="#2563eb" stroke-width="1.2" stroke-dasharray="4,2"/>
<line x1="75" y1="92" x2="50" y2="80" stroke="#2563eb" stroke-width="1.2" stroke-dasharray="4,2"/>
<line x1="75" y1="120" x2="50" y2="80" stroke="#475569" stroke-width="1.5"/>
<polygon points="75,120 83,120 83,112 75,112" fill="none" stroke="#334155" stroke-width="1.2"/>
<polygon points="50,80 53,74 59,77 56,83" fill="none" stroke="#334155" stroke-width="1.2"/>
<path d="M 48 120 A 18 18 0 0 0 38 104" fill="none" stroke="#555" stroke-width="1.2"/>
<circle cx="75" cy="92" r="3" fill="#334155"/>
<circle cx="75" cy="120" r="3" fill="#2563eb"/>
<circle cx="50" cy="80" r="3" fill="#2563eb"/>
<text x="15" y="134" font-size="14" font-family="serif" font-style="italic">B</text>
<text x="78" y="88" font-size="12" font-family="serif" font-style="italic">O</text>
<text x="78" y="134" font-size="12" font-family="serif" font-style="italic" fill="#2563eb">C</text>
<text x="35" y="78" font-size="12" font-family="serif" font-style="italic" fill="#2563eb">A</text>
<text x="44" y="110" font-size="10" fill="#555">62°</text>
<text x="58" y="100" font-size="10" fill="#2563eb">118°</text>
</svg>
<b>Шаг 1.</b> Найдём угол $B$ из четырёхугольника $ABOC$.
<br>По <b>теореме о сумме углов четырёхугольника:</b> сумма углов любого четырёхугольника равна $360°$.
$$\\angle B + \\angle OAB + \\angle AOC + \\angle OCB = 360°$$
Подставляем известные углы:
$$\\angle B + 90° + 118° + 90° = 360°$$
$$\\angle B = 360° - 298° = 62°$$
<b>Шаг 2.</b> Применим <b>свойство биссектрисы:</b> центр окружности, вписанной в угол, лежит на биссектрисе этого угла (так как $OA = OC$ — оба радиуса).
<br>Значит, $BO$ — биссектриса угла $B$, и она делит его пополам:
$$\\angle ABO = \\dfrac{\\angle B}{2} = \\dfrac{62°}{2} = 31°$$
<div class="sol-ans">Ответ: $\\angle ABO = 31°$</div>`
},
{
text: `Путешественники залили в бензобак автомобиля Geely Atlas $58$ л бензина.
В каждый день пути расходовалось $p$ литров бензина.
На сколько дней путешественникам хватит бензина?
Составьте формулу зависимости количества дней $k$ от количества литров бензина,
расходуемого каждый день.`,
sol: `<b>Метод составления уравнения по условию задачи.</b>
<br><b>Шаг 1.</b> Введём обозначение. Пусть $k$ — искомое число дней, на которые хватит бензина.
<br><b>Шаг 2.</b> По условию за один день расходуется $p$ литров. Значит, за $k$ дней израсходуется $p\\cdot k$ литров.
<br><b>Шаг 3.</b> Так как в баке всего $58$ л и весь бензин будет израсходован за $k$ дней, составим уравнение:
$$p\\cdot k = 58$$
<b>Шаг 4.</b> Выразим $k$. Разделим обе части на $p$ (это можно сделать, так как $p\\ne 0$):
$$k = \\dfrac{58}{p}$$
<div class="sol-ans">Ответ: бензина хватит на $\\dfrac{58}{p}$ дней;&ensp; формула: $k = \\dfrac{58}{p}$</div>`
},
{
text: `Решите уравнение $\\dfrac{4x+2}{3} = \\dfrac{1}{3}$.`,
sol: `<b>Свойство пропорции (или равенства дробей с одинаковыми знаменателями):</b> если $\\dfrac{a}{c} = \\dfrac{b}{c}$, то $a = b$.
<br><b>Шаг 1.</b> Знаменатели в обеих частях одинаковые ($=3$), поэтому числители равны:
$$4x + 2 = 1$$
<b>Шаг 2.</b> Переносим $2$ в правую часть (с противоположным знаком):
$$4x = 1 - 2 = -1$$
<b>Шаг 3.</b> Делим обе части на $4$:
$$x = -\\dfrac{1}{4}$$
<b>Проверка:</b> $\\dfrac{4\\cdot\\left(-\\dfrac{1}{4}\\right)+2}{3} = \\dfrac{-1+2}{3} = \\dfrac{1}{3}$
<div class="sol-ans">Ответ: $x = -\\dfrac{1}{4}$</div>`
},
{
text: `Из Жодино в Радошковичи, расстояние между которыми равно $60$ км, выехал мотоциклист.
Одновременно с ним по тому же маршруту из Радошковичей в Жодино выехал велосипедист,
скорость которого в $5$ раз меньше скорости мотоциклиста.
Сколько километров осталось преодолеть мотоциклисту до Радошковичей
после встречи с велосипедистом?`,
sol: `<b>Метод введения переменной и составления уравнения движения навстречу.</b> При движении навстречу скорости участников складываются: $v_{\\text{сбл}} = v_1 + v_2$.
<br><b>Шаг 1.</b> Пусть скорость мотоциклиста равна $v$ км/ч. По условию скорость велосипедиста в $5$ раз меньше, значит, она равна $\\dfrac{v}{5}$ км/ч.
<br><b>Шаг 2.</b> Так как они движутся навстречу друг другу, скорость сближения равна сумме скоростей:
$$v_{\\text{сбл}} = v + \\dfrac{v}{5} = \\dfrac{6v}{5}\\text{ км/ч}$$
<br><b>Шаг 3.</b> Пусть $t$ — время от старта до встречи. За это время участники вместе преодолели всё расстояние $60$ км:
$$\\dfrac{6v}{5}\\cdot t = 60 \\implies v\\cdot t = 50$$
Значит, путь $v\\cdot t$, проделанный мотоциклистом до встречи, равен $50$ км.
<br><b>Шаг 4.</b> Так как мотоциклист ехал из Жодино, ему осталось:
$$60 - 50 = 10\\text{ км}$$
<div class="sol-ans">Ответ: $10$ км</div>`
},
{
text: `Основания трапеции равны $5$ см и $15$ см, боковые стороны — $6$ см и $8$ см.
Найдите площадь трапеции.`,
sol: `<b>Формула площади трапеции:</b> $S = \\dfrac{a+b}{2}\\cdot h$, где $a$, $b$ — основания, $h$ — высота.
<br>Чтобы найти высоту, опустим из вершин $B$ и $C$ верхнего основания перпендикуляры $BH$ и $CK$ на нижнее основание.
<svg viewBox="0 0 225 150" xmlns="http://www.w3.org/2000/svg" style="max-width:260px;width:100%;height:auto;display:block;margin:8px 0">
<polygon points="15,122 75,62 125,62 190,122" fill="rgba(37,99,235,0.07)" stroke="#334155" stroke-width="1.8"/>
<line x1="75" y1="62" x2="75" y2="122" stroke="#16a34a" stroke-width="1.5" stroke-dasharray="4,3"/>
<line x1="125" y1="62" x2="125" y2="122" stroke="#16a34a" stroke-width="1.5" stroke-dasharray="4,3"/>
<polygon points="75,122 83,122 83,114 75,114" fill="none" stroke="#334155" stroke-width="1.2"/>
<polygon points="125,122 133,122 133,114 125,114" fill="none" stroke="#334155" stroke-width="1.2"/>
<text x="2" y="132" font-size="12" font-family="serif" font-style="italic">A</text>
<text x="68" y="56" font-size="12" font-family="serif" font-style="italic">B</text>
<text x="128" y="56" font-size="12" font-family="serif" font-style="italic">C</text>
<text x="192" y="132" font-size="12" font-family="serif" font-style="italic">D</text>
<text x="72" y="136" font-size="10" font-family="serif" font-style="italic">H</text>
<text x="122" y="136" font-size="10" font-family="serif" font-style="italic">K</text>
<text x="98" y="57" font-size="11" fill="#334155" text-anchor="middle">5</text>
<text x="100" y="138" font-size="11" fill="#334155" text-anchor="middle">15</text>
<text x="35" y="98" font-size="11" fill="#334155">6</text>
<text x="158" y="98" font-size="11" fill="#334155">8</text>
<text x="80" y="96" font-size="11" fill="#16a34a">h</text>
<text x="38" y="135" font-size="10" fill="#475569">3,6</text>
<text x="143" y="135" font-size="10" fill="#475569">6,4</text>
<text x="98" y="135" font-size="10" fill="#475569">5</text>
</svg>
<b>Шаг 1.</b> Так как $BH\\parallel CK$ и оба перпендикулярны $AD$, четырёхугольник $BCKH$ — прямоугольник. Значит, $HK = BC = 5$ см.
<br>Тогда сумма «выступов» по краям:
$$AH + KD = AD - HK = 15 - 5 = 10\\text{ см}$$
<b>Шаг 2.</b> По <b>теореме Пифагора</b> ($c^2 = a^2 + b^2$) в прямоугольных треугольниках $ABH$ и $DCK$:
$$AH^2 + h^2 = AB^2 = 6^2 = 36$$
$$KD^2 + h^2 = CD^2 = 8^2 = 64$$
<b>Шаг 3.</b> Вычтем первое равенство из второго:
$$KD^2 - AH^2 = 64 - 36 = 28$$
По <b>формуле разности квадратов:</b>
$$(KD+AH)(KD-AH) = 28$$
Поскольку $KD + AH = 10$:
$$10\\cdot(KD - AH) = 28 \\implies KD - AH = 2{,}8$$
<b>Шаг 4.</b> Из системы $\\{AH + KD = 10;\\; KD - AH = 2{,}8\\}$ получаем: $AH = 3{,}6$, $KD = 6{,}4$.
<br><b>Шаг 5.</b> Находим высоту $h$ по теореме Пифагора:
$$h^2 = 36 - 3{,}6^2 = 36 - 12{,}96 = 23{,}04 \\implies h = 4{,}8\\text{ см}$$
<b>Шаг 6.</b> Подставляем в формулу площади:
$$S = \\dfrac{5+15}{2}\\cdot 4{,}8 = 10\\cdot 4{,}8 = 48\\text{ см}^2$$
<div class="sol-ans">Ответ: $48$ см²</div>`
},
{
text: `Известно, что $x_1$ и $x_2$ — корни уравнения $x^2 - 3x - 5 = 0$.
Найдите значение выражения $\\dfrac{2x_1 x_2}{-5x_1^2 - 5x_2^2}$.`,
sol: `<b>Теорема Виета:</b> для приведённого уравнения $x^2 + px + q = 0$ корни $x_1$ и $x_2$ удовлетворяют:
$$x_1 + x_2 = -p, \\quad x_1 \\cdot x_2 = q$$
<b>Шаг 1.</b> Применяем теорему Виета к уравнению $x^2 - 3x - 5 = 0$ (здесь $p = -3$, $q = -5$):
$$x_1 + x_2 = 3, \\quad x_1 \\cdot x_2 = -5$$
<b>Шаг 2.</b> Чтобы найти $x_1^2 + x_2^2$, воспользуемся <b>формулой квадрата суммы:</b>
$$(x_1 + x_2)^2 = x_1^2 + 2x_1 x_2 + x_2^2$$
Отсюда:
$$x_1^2 + x_2^2 = (x_1 + x_2)^2 - 2x_1 x_2 = 3^2 - 2\\cdot(-5) = 9 + 10 = 19$$
<b>Шаг 3.</b> Подставляем в исходное выражение:
$$\\dfrac{2x_1 x_2}{-5x_1^2 - 5x_2^2} = \\dfrac{2x_1 x_2}{-5(x_1^2 + x_2^2)} = \\dfrac{2\\cdot(-5)}{-5\\cdot 19} = \\dfrac{-10}{-95} = \\dfrac{2}{19}$$
<div class="sol-ans">Ответ: $\\dfrac{2}{19}$</div>`
},
]
};