Files
Learn_System/frontend/js/exam9/variants/v43.js
T
Maxim Dolgolyov 6cff327e88 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/*.
2026-05-16 12:53:49 +03:00

245 lines
19 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
VARIANTS[43] = {
label: "Вариант 43",
tasks: [
{
text: `Выберите функцию, график которой изображён на рисунке:`,
figure: `<svg viewBox="0 0 260 240" xmlns="http://www.w3.org/2000/svg" style="max-width:280px;width:100%;height:auto;display:block;margin:8px auto;background:#fff">
<defs>
<marker id="v43t1ax" markerWidth="7" markerHeight="6" refX="7" refY="3" orient="auto"><path d="M0,0.5 L7,3 L0,5.5z" fill="#94a3b8"/></marker>
</defs>
<!-- Сетка (шаг 20px = 1 единица). Origin: (60,200). x: -2..9, y: -1..9 -->
<g stroke="#e2e8f0" stroke-width="1">
<line x1="20" y1="20" x2="20" y2="220"/><line x1="40" y1="20" x2="40" y2="220"/>
<line x1="80" y1="20" x2="80" y2="220"/><line x1="100" y1="20" x2="100" y2="220"/>
<line x1="120" y1="20" x2="120" y2="220"/><line x1="140" y1="20" x2="140" y2="220"/>
<line x1="160" y1="20" x2="160" y2="220"/><line x1="180" y1="20" x2="180" y2="220"/>
<line x1="200" y1="20" x2="200" y2="220"/><line x1="220" y1="20" x2="220" y2="220"/>
<line x1="240" y1="20" x2="240" y2="220"/>
<line x1="20" y1="40" x2="240" y2="40" /><line x1="20" y1="60" x2="240" y2="60" />
<line x1="20" y1="80" x2="240" y2="80" /><line x1="20" y1="100" x2="240" y2="100"/>
<line x1="20" y1="120" x2="240" y2="120"/><line x1="20" y1="140" x2="240" y2="140"/>
<line x1="20" y1="160" x2="240" y2="160"/><line x1="20" y1="180" x2="240" y2="180"/>
<line x1="20" y1="220" x2="240" y2="220"/>
</g>
<!-- оси -->
<line x1="20" y1="200" x2="252" y2="200" stroke="#475569" stroke-width="1.4" marker-end="url(#v43t1ax)"/>
<line x1="60" y1="232" x2="60" y2="12" stroke="#475569" stroke-width="1.4" marker-end="url(#v43t1ax)"/>
<!-- метки -->
<text x="245" y="214" font-size="11" fill="#475569" font-style="italic">x</text>
<text x="68" y="18" font-size="11" fill="#475569" font-style="italic">y</text>
<text x="56" y="214" font-size="10" fill="#64748b">0</text>
<text x="98" y="214" font-size="10" fill="#64748b">2</text>
<text x="138" y="214" font-size="10" fill="#64748b">4</text>
<text x="46" y="164" font-size="10" fill="#64748b">2</text>
<text x="46" y="124" font-size="10" fill="#64748b">4</text>
<text x="46" y="84" font-size="10" fill="#64748b">6</text>
<!-- парабола y=(x-2)^2+2: точки (x,y): (-1,11)→(40,-20 за рамкой), (0,6)→(60,80), (1,3)→(80,140), (2,2)→(100,160), (3,3)→(120,140), (4,6)→(140,80), (5,11)→(160,-20) -->
<path d="M 60,80 Q 70,118 80,140 Q 90,156 100,160 Q 110,156 120,140 Q 130,118 140,80" fill="none" stroke="#2563eb" stroke-width="2.4"/>
<!-- продолжение к точкам выше графика (5,11) ушло за рамку; ограничимся (0..4) для ясности -->
<!-- Вершина -->
<circle cx="100" cy="160" r="3.6" fill="#dc2626"/>
<text x="106" y="172" font-size="11" fill="#dc2626" font-weight="bold">(2; 2)</text>
</svg>`,
opts: [
["а", "$y = (x+2)^2 - 2$"], ["б", "$y = (x+2)^2 + 2$"], ["в", "$y = (x-2)^2 + 3$"],
["г", "$y = (x-2)^2 + 2$"], ["д", "$y = (x-2)^2 - 2$"],
],
sol: `<b>Свойство параболы $y=(x-a)^2+b$:</b> вершина находится в точке $(a;\\,b)$, ветви направлены вверх (коэффициент при $x^2$ положительный).
<br><b>Шаг 1.</b> По рисунку определяем координаты вершины: $(2;\\,2)$. Значит $a=2$, $b=2$.
<br><b>Шаг 2.</b> Подставляем в общую формулу: $y=(x-2)^2+2$.
<br><b>Проверка:</b> при $x=0$ получаем $y=4+2=6$ — точка $(0;\\,6)$ на графике; при $x=4$ получаем $y=4+2=6$ — точка $(4;\\,6)$. Парабола симметрична относительно прямой $x=2$ — это и есть ось симметрии через вершину.
<div class="sol-ans">Ответ: г)&ensp;$y=(x-2)^2+2$</div>`
},
{
text: `Результат сокращения дроби $\\dfrac{18ab - 9a}{9ab}$ равен:`,
opts: [
["а", "$\\dfrac{2ab-a}{ab}$"], ["б", "$\\dfrac{2b-1}{b}$"], ["в", "$2b-1$"],
["г", "$\\dfrac{b-1}{b}$"], ["д", "$2ab - 9a$"],
],
sol: `Выносим $9a$ за скобку в числителе:
$$\\dfrac{18ab-9a}{9ab} = \\dfrac{9a(2b-1)}{9ab} = \\dfrac{2b-1}{b}\\quad(a\\neq0,\\,b\\neq0)$$
<div class="sol-ans">Ответ: б)&ensp;$\\dfrac{2b-1}{b}$</div>`
},
{
text: `Какое из следующих утверждений <b>НЕ</b> верно:`,
opts: [
["а", "в любой треугольник можно вписать окружность;"],
["б", "в равнобедренном треугольнике углы при основании равны;"],
["в", "если у четырёхугольника все углы прямые, то это прямоугольник;"],
["г", "прямой угол равен $100^{\\circ}$?"],
],
sol: `<ul>
<li>а) В любой треугольник вписывается окружность — <b>верно</b></li>
<li>б) Равнобедренный: углы при основании равны — <b>верно</b></li>
<li>в) Все углы прямые ⟹ прямоугольник — <b>верно</b></li>
<li>г) «Прямой угол $=100°$» — <b style="color:#dc2626">НЕВЕРНО</b>. Прямой угол $= 90°$.</li>
</ul>
<div class="sol-ans">Ответ: г)</div>`
},
{
text: `Найдите количество целых решений системы неравенств
$$\\begin{cases} x < -10, \\\\[4pt] x > -15. \\end{cases}$$`,
sol: `Система: $-15 < x < -10$. Целые числа в этом промежутке:
$$-14,\\;-13,\\;-12,\\;-11$$
<div class="sol-ans">Ответ: $4$ целых решения</div>`
},
{
text: `Найдите площадь треугольника со сторонами $5$ см, $5$ см и $6$ см.`,
sol: `<b>Свойство равнобедренного треугольника:</b> высота, проведённая к основанию, является также медианой (т.е. делит основание пополам).
<br><b>Формула площади треугольника:</b> $S = \\dfrac{1}{2}\\cdot a\\cdot h$, где $a$ — основание, $h$ — высота к нему.
<br><b>Шаг 1.</b> У нашего треугольника две стороны по $5$ см и одна $6$ см — он равнобедренный с основанием $6$ см. Высота $CM$, опущенная на основание, делит его пополам: $AM = MB = 3$ см.
<svg viewBox="0 0 160 105" xmlns="http://www.w3.org/2000/svg" style="max-width:220px;width:100%;height:auto;display:block;margin:8px 0">
<polygon points="20,88 128,88 74,16" fill="rgba(37,99,235,0.08)" stroke="#334155" stroke-width="1.8"/>
<line x1="74" y1="16" x2="74" y2="88" stroke="#dc2626" stroke-width="1.5" stroke-dasharray="4,3"/>
<polygon points="74,88 82,88 82,80 74,80" fill="none" stroke="#334155" stroke-width="1.2"/>
<circle cx="74" cy="88" r="2.5" fill="#dc2626"/>
<text x="5" y="100" font-size="13" font-family="serif" font-style="italic">A</text>
<text x="131" y="100" font-size="13" font-family="serif" font-style="italic">B</text>
<text x="70" y="10" font-size="13" font-family="serif" font-style="italic">C</text>
<text x="69" y="100" font-size="11" font-family="serif" font-style="italic" fill="#dc2626">M</text>
<text x="36" y="56" font-size="12" fill="#334155">5</text>
<text x="100" y="56" font-size="12" fill="#334155">5</text>
<text x="68" y="102" font-size="11" fill="#334155">6</text>
<text x="79" y="55" font-size="12" fill="#dc2626">h</text>
</svg>
<b>Шаг 2.</b> Найдём высоту $h = CM$ по <b>теореме Пифагора</b> в прямоугольном треугольнике $ACM$:
$$AC^2 = AM^2 + CM^2 \\implies 5^2 = 3^2 + h^2$$
$$h^2 = 25 - 9 = 16 \\implies h = \\sqrt{16} = 4\\text{ см}$$
<b>Шаг 3.</b> Считаем площадь:
$$S = \\dfrac{1}{2}\\cdot 6\\cdot 4 = 12\\text{ см}^2$$
<br><br><b>Альтернативный способ — формула Герона.</b>
<br><b>Формула Герона:</b> $S = \\sqrt{p(p-a)(p-b)(p-c)}$, где $p = \\dfrac{a+b+c}{2}$ — полупериметр треугольника со сторонами $a$, $b$, $c$.
<br><b>Шаг 1.</b> Полупериметр: $p = \\dfrac{5+5+6}{2} = \\dfrac{16}{2} = 8$ см.
<br><b>Шаг 2.</b> Подставляем в формулу:
$$S = \\sqrt{8\\cdot(8-5)\\cdot(8-5)\\cdot(8-6)} = \\sqrt{8\\cdot 3\\cdot 3\\cdot 2} = \\sqrt{144} = 12\\text{ см}^2$$
Оба способа дают один и тот же ответ.
<div class="sol-ans">Ответ: $12$ см²</div>`
},
{
text: `Упростите выражение $\\sqrt{7}\\cdot(\\sqrt{64} + \\sqrt{112} - 5\\sqrt{7})\\cdot(-\\sqrt{28})$.`,
sol: `<b>Свойство квадратного корня:</b> $\\sqrt{a\\cdot b} = \\sqrt{a}\\cdot\\sqrt{b}$ (для $a,b\\geq 0$), а также $\\sqrt{a}\\cdot\\sqrt{a} = a$ (для $a\\geq 0$).
<br><b>Шаг 1.</b> Упрощаем каждый корень в скобках, вынося полный квадрат из-под корня:
$$\\sqrt{64} = 8$$
$$\\sqrt{112} = \\sqrt{16\\cdot 7} = \\sqrt{16}\\cdot\\sqrt{7} = 4\\sqrt{7}$$
$$\\sqrt{28} = \\sqrt{4\\cdot 7} = \\sqrt{4}\\cdot\\sqrt{7} = 2\\sqrt{7}$$
<b>Шаг 2.</b> Подставляем и упрощаем выражение в скобках, приводя подобные слагаемые $4\\sqrt{7}$ и $-5\\sqrt{7}$:
$$8 + 4\\sqrt{7} - 5\\sqrt{7} = 8 - \\sqrt{7}$$
Исходное выражение принимает вид:
$$\\sqrt{7}\\cdot(8 - \\sqrt{7})\\cdot(-2\\sqrt{7})$$
<b>Шаг 3.</b> Перемножим крайние множители $\\sqrt{7}$ и $-2\\sqrt{7}$:
$$\\sqrt{7}\\cdot(-2\\sqrt{7}) = -2\\cdot(\\sqrt{7})^2 = -2\\cdot 7 = -14$$
<b>Шаг 4.</b> Умножаем результат на оставшуюся скобку, раскрывая её:
$$-14\\cdot(8 - \\sqrt{7}) = -14\\cdot 8 + 14\\sqrt{7} = -112 + 14\\sqrt{7} = 14(\\sqrt{7} - 8)$$
<div class="sol-ans">Ответ: $14(\\sqrt{7}-8)$</div>`
},
{
text: `Найдите область определения функции
$y = \\sqrt{12 - 6x} - \\dfrac{3}{x^2 - 4}$.`,
sol: `<b>Правила нахождения области определения:</b>
<br>1) Подкоренное выражение чётной степени должно быть неотрицательным: $\\sqrt{f(x)}$ определён при $f(x) \\geq 0$.
<br>2) Знаменатель дроби не может равняться нулю: $\\dfrac{1}{g(x)}$ определена при $g(x) \\neq 0$.
<br>В нашей функции присутствуют оба элемента — выписываем оба условия.
<br><b>Шаг 1.</b> Подкоренное выражение $12 - 6x$ должно быть $\\geq 0$:
$$12 - 6x \\geq 0 \\implies 6x \\leq 12 \\implies x \\leq 2$$
<b>Шаг 2.</b> Знаменатель $x^2 - 4$ должен быть $\\neq 0$:
$$x^2 - 4 \\neq 0 \\implies x^2 \\neq 4 \\implies x \\neq \\pm 2$$
<b>Шаг 3.</b> Объединяем условия: $x \\leq 2$ и $x \\neq -2$ и $x \\neq 2$.
<br>Условие $x \\leq 2$ с исключением $x = 2$ превращается в $x \\lt 2$. С учётом $x \\neq -2$:
$$x \\in (-\\infty;\\,-2)\\cup(-2;\\,2)$$
<div class="sol-ans">Ответ: $(-\\infty;\\,-2)\\cup(-2;\\,2)$</div>`
},
{
text: `Найдите значение выражения $81x_0$, где $x_0$ — наибольший корень уравнения
$$\\dfrac{x^2}{4x^2+4x+1} - \\dfrac{6x}{2x+1} + 5 = 0.$$`,
sol: `<b>Формула квадрата суммы:</b> $(a + b)^2 = a^2 + 2ab + b^2$.
<br><b>Шаг 1.</b> Замечаем, что $4x^2 + 4x + 1 = (2x)^2 + 2\\cdot 2x\\cdot 1 + 1^2 = (2x + 1)^2$.
<br>Уравнение принимает вид:
$$\\dfrac{x^2}{(2x + 1)^2} - \\dfrac{6x}{2x + 1} + 5 = 0$$
<b>ОДЗ:</b> $2x + 1 \\neq 0$, то есть $x \\neq -\\dfrac{1}{2}$.
<br><b>Шаг 2. Замена переменной.</b> Заметим, что $\\dfrac{x^2}{(2x + 1)^2} = \\left(\\dfrac{x}{2x + 1}\\right)^2$.
<br>Пусть $t = \\dfrac{x}{2x + 1}$. Уравнение становится:
$$t^2 - 6t + 5 = 0$$
<b>Шаг 3.</b> По <b>теореме Виета</b> (сумма $6$, произведение $5$): корни $1$ и $5$.
$$(t - 1)(t - 5) = 0 \\implies t = 1 \\text{ или } t = 5$$
<b>Шаг 4. Возвращаемся к $x$.</b>
<br>— При $t = 1$: $\\dfrac{x}{2x + 1} = 1 \\implies x = 2x + 1 \\implies -x = 1 \\implies x = -1$.
<br>— При $t = 5$: $\\dfrac{x}{2x + 1} = 5 \\implies x = 5(2x + 1) = 10x + 5 \\implies -9x = 5 \\implies x = -\\dfrac{5}{9}$.
<br><b>Шаг 5. Проверка ОДЗ.</b> Оба значения $\\neq -\\dfrac{1}{2}$ ✓.
<br><b>Шаг 6.</b> Сравним корни: $-\\dfrac{5}{9} \\approx -0{,}56$, а $-1$ меньше. Наибольший корень:
$$x_0 = -\\dfrac{5}{9}$$
$$81x_0 = 81\\cdot\\left(-\\dfrac{5}{9}\\right) = -\\dfrac{81\\cdot 5}{9} = -9\\cdot 5 = -45$$
<div class="sol-ans">Ответ: $-45$</div>`
},
{
text: `Найдите площадь описанной равнобедренной трапеции, если точка касания вписанной
в неё окружности делит боковую сторону на отрезки, равные $4$ см и $9$ см.`,
sol: `<b>Шаг 1. Основания трапеции.</b>
<br>Боковая сторона $= 4+9 = 13$ см. По свойству касательных из одной точки: от каждой вершины оба касательных отрезка равны.
<br>Обозначим: от вершин большего основания — по $9$, от вершин меньшего — по $4$.
<svg viewBox="0 0 195 115" xmlns="http://www.w3.org/2000/svg" style="max-width:300px;width:100%;height:auto;display:block;margin:8px 0">
<!-- Трапеция ABCD: A=(36,90), B=(66,18), C=(114,18), D=(144,90) -->
<!-- AD=108px=18см, BC=48px=8см, AB=CD=78px=13см, h=72px=12см -->
<polygon points="36,90 144,90 114,18 66,18" fill="rgba(37,99,235,0.06)" stroke="#334155" stroke-width="1.8"/>
<!-- Вписанная окружность: O=(90,54), r=36px=6см -->
<circle cx="90" cy="54" r="36" fill="rgba(22,163,74,0.08)" stroke="#16a34a" stroke-width="1.5"/>
<!-- Отрезок AP_left = 9см (красный) -->
<line x1="36" y1="90" x2="57" y2="40" stroke="#dc2626" stroke-width="2.5"/>
<!-- Отрезок P_leftB = 4см (синий) -->
<line x1="57" y1="40" x2="66" y2="18" stroke="#2563eb" stroke-width="2.5"/>
<!-- Правая боковая сторона (зеркально) -->
<line x1="144" y1="90" x2="123" y2="40" stroke="#dc2626" stroke-width="2.5"/>
<line x1="123" y1="40" x2="114" y2="18" stroke="#2563eb" stroke-width="2.5"/>
<!-- Радиус до нижнего основания (пунктир) -->
<line x1="90" y1="54" x2="90" y2="90" stroke="#16a34a" stroke-width="1.2" stroke-dasharray="3,2"/>
<!-- Точки касания -->
<circle cx="90" cy="90" r="3" fill="#16a34a"/>
<circle cx="90" cy="18" r="3" fill="#16a34a"/>
<circle cx="57" cy="40" r="4" fill="#dc2626"/>
<circle cx="123" cy="40" r="4" fill="#dc2626"/>
<circle cx="90" cy="54" r="3" fill="#334155"/>
<!-- Метки вершин -->
<text x="20" y="101" font-size="13" font-family="serif" font-style="italic">A</text>
<text x="147" y="101" font-size="13" font-family="serif" font-style="italic">D</text>
<text x="58" y="13" font-size="13" font-family="serif" font-style="italic">B</text>
<text x="115" y="13" font-size="13" font-family="serif" font-style="italic">C</text>
<text x="93" y="51" font-size="12" font-family="serif" font-style="italic">O</text>
<!-- Метки отрезков боковой стороны -->
<text x="22" y="68" font-size="13" fill="#dc2626" font-weight="bold">9</text>
<text x="47" y="32" font-size="13" fill="#2563eb" font-weight="bold">4</text>
<text x="150" y="68" font-size="13" fill="#dc2626" font-weight="bold">9</text>
<text x="119" y="32" font-size="13" fill="#2563eb" font-weight="bold">4</text>
<!-- Метки оснований -->
<text x="72" y="108" font-size="11" fill="#334155">AD = 18</text>
<text x="76" y="12" font-size="11" fill="#334155">BC = 8</text>
<!-- Радиус -->
<text x="92" y="75" font-size="11" fill="#16a34a">r = 6</text>
</svg>
$$AD = 9+9 = 18\\text{ см}, \\quad BC = 4+4 = 8\\text{ см}$$
<b>Шаг 2. Высота трапеции.</b>
<br>Горизонтальный выступ ноги: $\\dfrac{AD-BC}{2} = \\dfrac{18-8}{2} = 5$ см.
$$h = \\sqrt{13^2-5^2} = \\sqrt{169-25} = \\sqrt{144} = 12\\text{ см}$$
<b>Шаг 3. Площадь.</b>
$$S = \\dfrac{AD+BC}{2}\\cdot h = \\dfrac{18+8}{2}\\cdot12 = 13\\cdot12 = 156\\text{ см}^2$$
<div class="sol-ans">Ответ: $156$ см²</div>`
},
{
text: `В компанию поступил заказ на укладку $240$ м² напольной плитки.
Плиточник принял решение укладывать на $10$ м² в день больше, чем запланировал ранее.
В результате работа была закончена на $4$ дня раньше установленного срока.
Успеет ли плиточник выполнить заказ за $10$ рабочих дней, если будет работать
по первоначальному плану? Ответ обоснуйте.`,
sol: `Пусть плановая выработка $= x$ м²/день.
<br>По плану: $\\dfrac{240}{x}$ дней. С ускорением: $\\dfrac{240}{x+10}$ дней, на $4$ меньше.
$$\\dfrac{240}{x+10} = \\dfrac{240}{x} - 4$$
Умножаем на $x(x+10)$:
$$240x = 240(x+10) - 4x(x+10)$$
$$0 = 2400 - 4x^2 - 40x \\implies x^2+10x-600=0$$
$$D = 100+2400 = 2500 = 50^2 \\implies x = \\dfrac{-10+50}{2} = 20\\text{ м²/день}$$
<b>Плановый срок:</b> $\\dfrac{240}{20} = 12$ дней.
<br><b>Проверка:</b> при $30$ м²/день: $240\\div30=8$ дней, $12-8=4$ ✓
<br><b>Ответ на вопрос:</b> за $10$ дней при выработке $20$ м²/день плиточник уложит $10\\times20=200$ м² $<240$ м².
<div class="sol-ans">Ответ: нет, не успеет — за $10$ дней уложит лишь $200$ м² из $240$ м²</div>`
},
]
};