Files
Learn_System/backend/scripts/seed_ctmath_rt2324_e3v1.js
T
Maxim Dolgolyov 494023fba7 feat(ctmath): пробник РТ-2023/24 этап III (вариант 106)
30 заданий А1–А10 + В1–В20, перенабор по PDF РИКЗ.
8 mc + 21 open + 1 long; геометрия — текстом, В1 (чтение
графика) — inline-SVG в figure_html (как у math9). Метка 106
уже в VARIANT_LABEL. Идемпотентный seed, --apply — пользователь.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 10:25:10 +03:00

389 lines
38 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.
'use strict';
/* ───────────────────────────────────────────────────────────────────────────
seed_ctmath_rt2324_e3v1.js
Чистый вариант-пробник для трека exam-prep `ctmath`.
Источник: РТ–2023/2024, Этап III, Вариант 1 (РИКЗ, «Тематическое
консультирование по математике»). 30 заданий: А1–А10 + В1–В20.
Перенабрано вручную в KaTeX по PDF (визуальное чтение, НЕ OCR):
F:\!Рабочие\ЦТ\Математика\Математика\РТ\2023-2024\МАТ РТ-3 23_24 В1.pdf
variant=106 — Этап III РТ-2023/24 (этап I — 104, этап II — 105).
Геометрия закодирована текстом (стандартная разметка фигур / углы словами).
Исключение — В1 (чтение графика): кусочно-линейная нечётная функция
воспроизведена inline-SVG в figure_html (как у math9-заданий); все 6
утверждений и ответ (145) согласованы с реконструкцией.
Идемпотентность: upsert по UNIQUE(exam_key, variant, task_idx).
Запуск:
node backend/scripts/seed_ctmath_rt2324_e3v1.js # DRY-RUN (по умолчанию)
node backend/scripts/seed_ctmath_rt2324_e3v1.js --apply # запись в БД
⚠️ Массовую запись в БД запускает ПОЛЬЗОВАТЕЛЬ вручную (авто-режим Claude Code
блокирует продакшн-записи). Без --apply ничего не пишется.
─────────────────────────────────────────────────────────────────────────── */
const { DatabaseSync } = require('node:sqlite');
const path = require('path');
const APPLY = process.argv.includes('--apply');
const EXAM = 'ctmath';
const VARIANT = 106;
const PROV = 'РТ–2023/2024, Этап III, Вариант 1';
const R = String.raw;
/* opts: метки кириллица а–д (как в существующих строках ctmath; checkAnswerServer
имеет ветку /^[а-д]$/). РТ-варианты 1..5 → а..д. */
const L = ['а', 'б', 'в', 'г', 'д'];
const mc = (...html) => html.map((h, i) => [L[i], h]);
/* ── SVG-график для В1: нечётная кусочно-линейная функция на [-6;6] через
точки (-6,-3),(-4,1),(4,-1),(6,3). f(0)=0; возрастает на [-6;-4] и [4;6],
убывает на [-4;4]. Цвета — только в SVG-стоки (как у math9-фигур). */
const FIG_B1 = `<svg class="task-fig" viewBox="0 0 360 230" width="360" height="230" xmlns="http://www.w3.org/2000/svg" style="max-width:360px;width:100%;height:auto;display:block;margin:10px auto">
<g stroke="#e2e8f0" stroke-width="1">
<line x1="24" y1="31" x2="24" y2="199"/><line x1="50" y1="31" x2="50" y2="199"/><line x1="76" y1="31" x2="76" y2="199"/><line x1="102" y1="31" x2="102" y2="199"/><line x1="128" y1="31" x2="128" y2="199"/><line x1="154" y1="31" x2="154" y2="199"/><line x1="180" y1="31" x2="180" y2="199"/><line x1="206" y1="31" x2="206" y2="199"/><line x1="232" y1="31" x2="232" y2="199"/><line x1="258" y1="31" x2="258" y2="199"/><line x1="284" y1="31" x2="284" y2="199"/><line x1="310" y1="31" x2="310" y2="199"/><line x1="336" y1="31" x2="336" y2="199"/>
<line x1="24" y1="31" x2="336" y2="31"/><line x1="24" y1="59" x2="336" y2="59"/><line x1="24" y1="87" x2="336" y2="87"/><line x1="24" y1="115" x2="336" y2="115"/><line x1="24" y1="143" x2="336" y2="143"/><line x1="24" y1="171" x2="336" y2="171"/><line x1="24" y1="199" x2="336" y2="199"/>
</g>
<line x1="16" y1="115" x2="346" y2="115" stroke="#334155" stroke-width="1.5"/>
<line x1="180" y1="214" x2="180" y2="14" stroke="#334155" stroke-width="1.5"/>
<polygon points="346,115 338,111 338,119" fill="#334155"/>
<polygon points="180,14 176,22 184,22" fill="#334155"/>
<polyline points="24,199 76,87 284,143 336,31" fill="none" stroke="#2563eb" stroke-width="2.5" stroke-linejoin="round" stroke-linecap="round"/>
<text x="348" y="111" font-size="13" font-style="italic" fill="#334155">x</text>
<text x="186" y="24" font-size="13" font-style="italic" fill="#334155">y</text>
<text x="167" y="131" font-size="12" fill="#334155">O</text>
<text x="203" y="131" font-size="12" fill="#334155">1</text>
<text x="162" y="91" font-size="12" fill="#334155">1</text>
<text x="290" y="28" font-size="13" font-style="italic" fill="#2563eb">y=f(x)</text>
</svg>`;
/* ── 30 заданий ─────────────────────────────────────────────────────────── */
const TASKS = [
// ── Часть A: А1–А10 ──────────────────────────────────────────────────────
{ idx: 1, type: 'mc', topic: 'functions', subtopic: 'fn-graphs', diff: 1,
text: R`На координатной плоскости отмечены точки $A(2;-1)$, $B(1;2)$, $C(-2;-2)$, $D(-1;1)$, $E(0;-2)$. Выберите ту из них, сумма координат которой равна $-4$.`,
opts: mc('$A$', '$B$', '$C$', '$D$', '$E$'),
answer: 'в',
sol: R`Сумма координат: для $A$ это $2+(-1)=1$, для $B$ это $1+2=3$, для $C$ это $-2+(-2)=-4$, для $D$ это $-1+1=0$, для $E$ это $0+(-2)=-2$. Сумме $-4$ соответствует точка $C$.`,
ref: 'Герасимов «Математика, 6 кл.», гл. 5, § 1' },
{ idx: 2, type: 'mc', topic: 'stereometry', subtopic: 'ster-basics', diff: 3,
text: R`Дан куб $ABCDA_1B_1C_1D_1$. Точка $K$ — середина диагонали $A_1D$. Среди отрезков $A_1B_1$, $B_1D_1$, $C_1K$, $BB_1$, $A_1C_1$ укажите отрезок, по которому плоскость, заданная прямой $DC_1$ и точкой $K$, пересекает плоскость грани $A_1B_1C_1D_1$.`,
opts: mc('$A_1B_1$', '$B_1D_1$', '$C_1K$', '$BB_1$', '$A_1C_1$'),
answer: 'д',
sol: R`Секущая плоскость, заданная прямой $DC_1$ и точкой $K$, содержит точку $C_1$ (она на $DC_1$) и точку $A_1$ (так как $K$ — середина $A_1D$, прямая $DC_1$ и точка $K$ задают плоскость диагонального сечения, проходящую через $A_1$). Точки $A_1$ и $C_1$ принадлежат и грани $A_1B_1C_1D_1$, поэтому пересечение плоскостей — отрезок $A_1C_1$.`,
ref: 'Латотин «Геометрия, 10 кл.», разд. 1, § 23' },
{ idx: 3, type: 'mc', topic: 'numbers', subtopic: 'num-real', diff: 2,
text: R`Расположите числа $\log_3 27$, $\ 3^{-1}$, $\ \sqrt{64}$ в порядке возрастания.`,
opts: mc('$\sqrt{64};\ \log_3 27;\ 3^{-1}$', '$3^{-1};\ \sqrt{64};\ \log_3 27$', '$\sqrt{64};\ 3^{-1};\ \log_3 27$', '$3^{-1};\ \log_3 27;\ \sqrt{64}$', '$\log_3 27;\ \sqrt{64};\ 3^{-1}$'),
answer: 'г',
sol: R`$\log_3 27=\log_3 3^{3}=3$; $\ 3^{-1}=\dfrac13$; $\ \sqrt{64}=8$. Так как $\dfrac13<3<8$, числа в порядке возрастания: $3^{-1};\ \log_3 27;\ \sqrt{64}$.`,
ref: 'Арефьева «Алгебра, 8 кл.», гл. 1, § 14; гл. 11 кл., § 3' },
{ idx: 4, type: 'mc', topic: 'expressions', subtopic: 'expr-polynomials', diff: 1,
text: R`Укажите номер выражения, тождественно равного выражению $a^{3}$.`,
opts: mc('$a:a^{3}$', '$a\cdot a^{2}$', '$\left(a^{2}\right)^{2}$', '$3a$', '$a^{-3}$'),
answer: 'б',
sol: R`По свойству степеней $a\cdot a^{2}=a^{1+2}=a^{3}$. (Остальные: $a:a^{3}=a^{-2}$; $\left(a^{2}\right)^{2}=a^{4}$; $3a$ и $a^{-3}$ не равны $a^{3}$.)`,
ref: 'Арефьева «Алгебра, 7 кл.», гл. 2, § 5' },
{ idx: 5, type: 'mc', topic: 'expressions', subtopic: 'expr-polynomials', diff: 1,
text: R`Результат разложения многочлена $4b^{2}+4bc-4b$ на множители имеет вид:`,
opts: mc('$4b(b+c)$', '$4b(bc-1)$', '$4b(1+c)$', '$(4b-1)(b+c)$', '$4b(b+c-1)$'),
answer: 'д',
sol: R`Общий множитель членов многочлена $4b^{2}+4bc-4b$ — одночлен $4b$. Тогда $4b^{2}+4bc-4b=4b(b+c-1)$.`,
ref: 'Арефьева «Алгебра, 7 кл.», гл. 2, § 14' },
{ idx: 6, type: 'open', topic: 'expressions', subtopic: 'expr-powers-roots', diff: 2,
text: R`Среди чисел $10$, $99$, $0$, $-10$, $100$ укажите номера тех, которые не входят в область определения выражения $\dfrac{1}{10-\sqrt{x}}$.<br>1) $10$;&emsp;2) $99$;&emsp;3) $0$;&emsp;4) $-10$;&emsp;5) $100$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
answer: '45', ansShow: '4, 5',
sol: R`Выражение $\dfrac{1}{10-\sqrt{x}}$ имеет смысл при $x\ge0$ и $10-\sqrt{x}\ne0$, то есть $x\ge0$, $x\ne100$. Область определения $[0;100)\cup(100;+\infty)$. Из данных чисел ей не принадлежат $-10$ (так как $-10<0$) и $100$ (исключено). Это числа под номерами 4 и 5.`,
ref: 'Арефьева «Алгебра, 8 кл.», гл. 1, § 1' },
{ idx: 7, type: 'mc', topic: 'word-sequences', subtopic: 'word-problems', diff: 2,
text: R`За три четверти учебного года Петя использовал $\dfrac25$ купленных в начале учебного года тетрадей, после чего у него осталось $48$ тетрадей. Сколько тетрадей купил Петя в начале учебного года?`,
opts: mc('$80$', '$96$', '$120$', '$74$', '$116$'),
answer: 'а',
sol: R`Числу $48$ соответствует дробь $1-\dfrac25=\dfrac35$ всех тетрадей. Тогда куплено $48:\dfrac35=\dfrac{48\cdot5}{3}=80$ тетрадей.`,
ref: 'Герасимов «Математика, 5 кл.», ч. 2, гл. 3, § 10' },
{ idx: 8, type: 'mc', topic: 'trigonometry', subtopic: 'trig-identities', diff: 2,
text: R`Найдите значение выражения $\operatorname{tg}(-120^\circ)+\left|-\sqrt3\right|$.`,
opts: mc('$0$', '$\dfrac{4\sqrt3}{3}$', '$1-\sqrt3$', '$2\sqrt3$', '$-\dfrac{2\sqrt3}{3}$'),
answer: 'г',
sol: R`$\operatorname{tg}(-120^\circ)=-\operatorname{tg}120^\circ=-\operatorname{tg}(180^\circ-60^\circ)=\operatorname{tg}60^\circ=\sqrt3$. Тогда $\operatorname{tg}(-120^\circ)+\left|-\sqrt3\right|=\sqrt3+\sqrt3=2\sqrt3.$`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 1, § 3; § 9' },
{ idx: 9, type: 'mc', topic: 'stereometry', subtopic: 'ster-rotation', diff: 2,
text: R`Сечение сферы плоскостью, отстоящей от её центра на расстоянии $3$, имеет радиус $3\sqrt2$. Найдите радиус сферы.`,
opts: mc('$9\sqrt2$', '$3\sqrt3$', '$6$', '$12$', '$4\sqrt3$'),
answer: 'б',
sol: R`Радиус сферы $R$ — гипотенуза прямоугольного треугольника с катетами $3$ (расстояние до плоскости) и $3\sqrt2$ (радиус сечения). По теореме Пифагора $R^{2}=3^{2}+\left(3\sqrt2\right)^{2}=9+18=27$, поэтому $R=3\sqrt3$.`,
ref: 'Латотин «Геометрия, 11 кл.», разд. 3, § 5' },
{ idx: 10, type: 'open', topic: 'functions', subtopic: 'fn-properties', diff: 2,
text: R`Укажите номера функций, которые принимают только положительные значения на промежутке $(4;+\infty)$.<br>1) $f(x)=-4x$;<br>2) $f(x)=\sqrt{x-4}$;<br>3) $f(x)=x^{3}-4$;<br>4) $f(x)=\log_{\frac14}x$;<br>5) $f(x)=-x^{2}-4$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
answer: '23', ansShow: '2, 3',
sol: R`$1)$ $-4x$ при $x>4$ отрицательна. $\ 2)$ $\sqrt{x-4}$ при $x>4$ положительна. $\ 3)$ $x^{3}-4$ положительна при $x>\sqrt[3]{4}$, а $(4;+\infty)\subset(\sqrt[3]{4};+\infty)$ — положительна. $\ 4)$ $\log_{\frac14}x$ положительна только на $(0;1)$. $\ 5)$ $-x^{2}-4$ отрицательна при всех $x$. Подходят функции 2 и 3.`,
ref: 'Арефьева «Алгебра, 8 кл.», гл. 3, § 1314' },
// ── Часть B: В1–В20 ──────────────────────────────────────────────────────
{ idx: 11, type: 'open', topic: 'functions', subtopic: 'fn-properties', diff: 3,
fig: FIG_B1,
text: R`На рисунке изображён график функции $y=f(x)$, определённой на промежутке $[-6;6]$. Выберите верные утверждения.<br>1) функция является нечётной;<br>2) $f(3)>0$;<br>3) график функции симметричен относительно оси ординат;<br>4) $f(-5)>f(-6)$;<br>5) функция убывает на промежутке $[-4;4]$;<br>6) график функции $y=f(x)+3$ проходит через точку $(0;2)$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
answer: '145', ansShow: '1, 4, 5',
sol: R`$1)$ верно: график симметричен относительно начала координат, поэтому функция нечётная. $\ 2)$ неверно: по графику $f(3)<0$. $\ 3)$ неверно: график нечётной функции симметричен относительно начала координат, а не оси ординат. $\ 4)$ верно: на промежутке $[-6;-4]$ функция возрастает, поэтому $f(-5)>f(-6)$. $\ 5)$ верно: на отрезке $[-4;4]$ при увеличении $x$ значения функции уменьшаются. $\ 6)$ неверно: $f(0)=0$, поэтому график $y=f(x)+3$ проходит через точку $(0;3)$, а не $(0;2)$.`,
ref: 'Арефьева «Алгебра, 9 кл.», гл. 2, § 69' },
{ idx: 12, type: 'long', topic: 'stereometry', subtopic: 'ster-angles-distances', diff: 3,
text: R`$ABCDA_1B_1C_1D_1$ — куб. Точки $M$ и $K$ — середины рёбер $A_1D_1$ и $AA_1$ соответственно. Для начала каждого из предложений А–В подберите его окончание 1–6 так, чтобы получилось верное утверждение.<br><b>Начало:</b><br>А) Величина угла между прямыми $A_1B_1$ и $KM$ равна …<br>Б) Величина угла между прямыми $B_1C_1$ и $KM$ равна …<br>В) Величина угла между прямыми $BD$ и $KM$ равна …<br><b>Окончание:</b><br>1) $30^\circ$;&emsp;2) $0^\circ$;&emsp;3) $60^\circ$;&emsp;4) $90^\circ$;&emsp;5) $120^\circ$;&emsp;6) $45^\circ$.<br><i>Ответ запишите сочетанием букв и цифр, например: А1Б1В4.</i>`,
answer: 'А4Б6В3', ansShow: 'А4Б6В3',
sol: R`А) Прямая $A_1B_1$ перпендикулярна плоскости грани $AA_1D_1D$, а $KM$ лежит в этой плоскости, поэтому $A_1B_1\perp KM$ — угол $90^\circ$ (окончание 4). Б) $B_1C_1\parallel A_1D_1$, поэтому угол между $B_1C_1$ и $KM$ равен углу $A_1MK$; в равнобедренном прямоугольном треугольнике $KA_1M$ ($A_1K=A_1M$) он равен $45^\circ$ (окончание 6). В) Через середину $P$ ребра проведём $MP\parallel B_1D_1$; треугольник $PMK$ равносторонний, поэтому угол между $BD$ и $KM$ равен $60^\circ$ (окончание 3).`,
ref: 'Латотин «Геометрия, 10 кл.», разд. 2, § 4' },
{ idx: 13, type: 'open', topic: 'numbers', subtopic: 'num-divisibility', diff: 2,
text: R`Найдите сумму всех натуральных делителей числа $95$.`,
answer: '120',
sol: R`Число $95=5\cdot19$ имеет четыре натуральных делителя: $1$, $5$, $19$ и $95$. Их сумма равна $1+5+19+95=120$.`,
ref: 'Герасимов «Математика, 5 кл.», ч. 1, гл. 1, § 12' },
{ idx: 14, type: 'open', topic: 'equations', subtopic: 'eq-linear', diff: 2,
text: R`Найдите произведение наименьшего и наибольшего целых решений двойного неравенства $-51\dfrac13<-3x<4\sqrt2$.`,
answer: '-17',
sol: R`Разделим все части на $-3$ (знаки неравенства меняются на противоположные): $-\dfrac{4\sqrt2}{3}<x<17\dfrac19$. Так как $-\dfrac{4\sqrt2}{3}\approx-1{,}9$, наименьшее целое решение равно $-1$, наибольшее — $17$. Их произведение $-1\cdot17=-17$.`,
ref: 'Арефьева «Алгебра, 8 кл.», гл. 1, § 6' },
{ idx: 15, type: 'open', topic: 'planimetry', subtopic: 'plan-triangles', diff: 2,
text: R`На отрезке $AB$, равном $13$ см $5$ мм, взята точка $C$ так, что $AC:AB=7:15$. Найдите (в миллиметрах) длину отрезка $CB$.`,
answer: '72',
sol: R`$AB=13$ см $5$ мм $=135$ мм. Так как отрезок $AB$ разделён точкой $C$ в отношении $AC:AB=7:15$, то $CB$ составляет $\dfrac{15-7}{15}=\dfrac{8}{15}$ длины $AB$. Тогда $CB=\dfrac{8}{15}\cdot135=72$ (мм).`,
ref: 'Казаков «Геометрия, 7 кл.», гл. 1, § 3' },
{ idx: 16, type: 'open', topic: 'equations', subtopic: 'eq-linear', diff: 2,
text: R`Туристическая фирма организовала отдых на туристической базе для $4350$ взрослых и детей. Сколько детей отдыхало на туристической базе, если количество детей составило $16\%$ от количества взрослых?`,
answer: '600',
sol: R`Пусть число взрослых равно $x$, тогда детей $0{,}16x$. Составим уравнение $x+0{,}16x=4350$, $1{,}16x=4350$, $x=3750$. Значит, детей $4350-3750=600$.`,
ref: 'Арефьева «Алгебра, 7 кл.», гл. 3, § 16' },
{ idx: 17, type: 'open', topic: 'word-sequences', subtopic: 'seq-progressions', diff: 2,
text: R`Геометрическая прогрессия $(b_n)$ задана формулой $n$-го члена $b_n=2\cdot3^{\,n+1}$. Найдите сумму пяти первых членов этой прогрессии.`,
answer: '2178',
sol: R`Первый член $b_1=2\cdot3^{2}=18$, второй $b_2=2\cdot3^{3}=54$, знаменатель $q=\dfrac{b_2}{b_1}=3$. По формуле суммы $S_5=\dfrac{b_1\left(q^{5}-1\right)}{q-1}=\dfrac{18\left(3^{5}-1\right)}{3-1}=\dfrac{18\cdot242}{2}=9\cdot242=2178$.`,
ref: 'Арефьева «Алгебра, 9 кл.», гл. 4, § 18' },
{ idx: 18, type: 'open', topic: 'equations', subtopic: 'eq-rational', diff: 3,
text: R`Пусть $(x_1;y_1)$ и $(x_2;y_2)$ — решения системы уравнений $\begin{cases}x^{2}-y=7,\\y-x=5.\end{cases}$ Найдите значение выражения $x_1\cdot y_2+x_2\cdot y_1$.`,
answer: '-19',
sol: R`Из второго уравнения $y=5+x$. Подставив в первое: $x^{2}-(5+x)=7$, $x^{2}-x-12=0$, $x=-3$ или $x=4$. Решения системы: $(-3;2)$ и $(4;9)$. Тогда $x_1\cdot y_2+x_2\cdot y_1=(-3)\cdot9+4\cdot2=-27+8=-19$. (Ответ не зависит от порядка решений.)`,
ref: 'Арефьева «Алгебра, 9 кл.», гл. 3, § 11' },
{ idx: 19, type: 'open', topic: 'equations', subtopic: 'eq-logarithmic', diff: 3,
text: R`Решите уравнение $\log_4\dfrac{x^{2}+3x-40}{x-5}=1$. В ответ запишите сумму его корней (корень, если он единственный).`,
answer: '-4',
sol: R`Уравнение равносильно $\dfrac{x^{2}+3x-40}{x-5}=4$ при $x\ne5$. Отсюда $x^{2}+3x-40=4(x-5)$, $x^{2}-x-20=0$, $x=-4$ или $x=5$. Корень $x=5$ не входит в область определения, поэтому единственный корень $x=-4$.`,
ref: 'Арефьева «Алгебра, 11 кл.», гл. 3, § 9' },
{ idx: 20, type: 'open', topic: 'planimetry', subtopic: 'plan-quadrilaterals', diff: 2,
text: R`Найдите площадь ромба (в квадратных сантиметрах), если его периметр равен $4$ дм, а одна из диагоналей равна $12$ см.`,
answer: '96',
sol: R`Периметр $4$ дм $=40$ см, поэтому сторона ромба равна $10$ см. Половина данной диагонали $6$ см; по теореме Пифагора половина второй диагонали $\sqrt{10^{2}-6^{2}}=8$ см, вся вторая диагональ $16$ см. Площадь $S=\dfrac{d_1 d_2}{2}=\dfrac{12\cdot16}{2}=96$ (см$^2$).`,
ref: 'Казаков «Геометрия, 8 кл.», гл. 1, § 5; гл. 2, § 15' },
{ idx: 21, type: 'open', topic: 'trigonometry', subtopic: 'trig-identities', diff: 3,
text: R`Найдите значение выражения $75\cos\alpha$, если $\operatorname{ctg}\alpha=\dfrac{\sqrt6}{12}$ и $\pi<\alpha<\dfrac{3\pi}{2}$.`,
answer: '-15',
sol: R`$\operatorname{tg}\alpha=\dfrac{1}{\operatorname{ctg}\alpha}=\dfrac{12}{\sqrt6}=2\sqrt6$. Из тождества $1+\operatorname{tg}^{2}\alpha=\dfrac{1}{\cos^{2}\alpha}$ получаем $1+24=\dfrac{1}{\cos^{2}\alpha}$, $\cos^{2}\alpha=\dfrac{1}{25}$. В третьей четверти $\cos\alpha<0$, поэтому $\cos\alpha=-\dfrac15$ и $75\cos\alpha=-15$.`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 1, § 4' },
{ idx: 22, type: 'open', topic: 'equations', subtopic: 'eq-exponential', diff: 3,
text: R`Найдите сумму всех целых решений неравенства $5^{\,x+1}+(0{,}2)^{-x}<750$ на промежутке $(-7;7)$.`,
answer: '-18',
sol: R`Так как $(0{,}2)^{-x}=5^{x}$, неравенство примет вид $5\cdot5^{x}+5^{x}<750$, $6\cdot5^{x}<750$, $5^{x}<125=5^{3}$, откуда $x<3$. Пересечение $(-\infty;3)$ с $(-7;7)$ — интервал $(-7;3)$. Целые решения $-6,\ldots,2$; их сумма равна $-18$.`,
ref: 'Арефьева «Алгебра, 11 кл.», гл. 2, § 6' },
{ idx: 23, type: 'open', topic: 'stereometry', subtopic: 'ster-polyhedra', diff: 3,
text: R`В правильной шестиугольной пирамиде высота равна $2\sqrt3$, а радиус окружности, описанной около основания, равен $2\sqrt5$. Найдите объём пирамиды.`,
answer: '60',
sol: R`Для правильного шестиугольника сторона равна радиусу описанной окружности: $AB=2\sqrt5$. Площадь основания $S_0=\dfrac{3\sqrt3}{2}AB^{2}=\dfrac{3\sqrt3}{2}\cdot20=30\sqrt3$. Объём $V=\dfrac13 S_0 H=\dfrac13\cdot30\sqrt3\cdot2\sqrt3=\dfrac13\cdot30\cdot2\cdot3=60$.`,
ref: 'Латотин «Геометрия, 11 кл.», разд. 2, § 3' },
{ idx: 24, type: 'open', topic: 'functions', subtopic: 'fn-derivative', diff: 4,
text: R`Найдите увеличенное в пять раз произведение точек экстремума функции $f(x)=x^{3}(x-7)^{2}$.`,
answer: '147',
sol: R`Производная $f'(x)=3x^{2}(x-7)^{2}+x^{3}\cdot2(x-7)=x^{2}(x-7)(5x-21)$. Нули: $x=0$, $x=7$, $x=4{,}2$. Знаки $f'$ показывают, что $x=4{,}2$ — точка максимума, $x=7$ — точка минимума ($x=0$ экстремумом не является). Произведение точек экстремума $4{,}2\cdot7=29{,}4$, увеличенное в пять раз: $5\cdot29{,}4=147$.`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 3, § 20' },
{ idx: 25, type: 'open', topic: 'equations', subtopic: 'eq-rational', diff: 3,
text: R`Даны два натуральных числа, одно из которых на $4$ больше другого. Произведение этих двух чисел больше их суммы на $139$. Найдите наименьшее общее кратное этих чисел.`,
answer: '165',
sol: R`Пусть меньшее число $x$, тогда большее $x+4$. По условию $x(x+4)=x+(x+4)+139$, $x^{2}+2x-143=0$, $x=11$ (корень $x=-13$ не подходит). Числа $11$ и $15$; так как они взаимно простые, их наименьшее общее кратное равно $11\cdot15=165$.`,
ref: 'Арефьева «Алгебра, 8 кл.», гл. 2, § 11' },
{ idx: 26, type: 'open', topic: 'equations', subtopic: 'eq-irrational', diff: 3,
text: R`Найдите произведение корней уравнения $\sqrt{x-16}-\sqrt{(x-16)(3x+8)}=0$ (корень, если он единственный). В ответ запишите полученный результат, увеличенный в $3$ раза.`,
answer: '48',
sol: R`Уравнение равносильно $\sqrt{x-16}=\sqrt{(x-16)(3x+8)}$. Возведя в квадрат: $x-16=(x-16)(3x+8)$, $(x-16)(3x+7)=0$, откуда $x=16$ или $x=-\dfrac73$. Проверка: при $x=-\dfrac73$ выражение $\sqrt{x-16}$ не имеет смысла, поэтому единственный корень $x=16$. Увеличенное в $3$ раза: $3\cdot16=48$.`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 2, § 17' },
{ idx: 27, type: 'open', topic: 'stereometry', subtopic: 'ster-rotation', diff: 4,
text: R`Через вершину конуса и хорду основания, стягивающую дугу в $120^\circ$, проведено сечение. Найдите значение выражения $S^{2}$, где $S$ — площадь этого сечения, если осевым сечением конуса является равносторонний треугольник, площадь которого равна $20\sqrt3$.`,
answer: '975',
sol: R`Площадь равностороннего осевого сечения $\dfrac{a^{2}\sqrt3}{4}=20\sqrt3$, откуда $a^{2}=80$, $a=4\sqrt5$ — образующая конуса; радиус основания $2\sqrt5$. Хорда $AB$ стягивает дугу $120^\circ$: по теореме косинусов $AB^{2}=\left(2\sqrt5\right)^{2}+\left(2\sqrt5\right)^{2}-2\cdot2\sqrt5\cdot2\sqrt5\cos120^\circ=60$, $AB=2\sqrt{15}$. Сечение — равнобедренный треугольник с боковыми сторонами $4\sqrt5$ и основанием $2\sqrt{15}$; высота к основанию $CK=\sqrt{\left(4\sqrt5\right)^{2}-\left(\sqrt{15}\right)^{2}}=\sqrt{65}$. Площадь $S=\dfrac12\cdot2\sqrt{15}\cdot\sqrt{65}=5\sqrt{39}$, поэтому $S^{2}=25\cdot39=975$.`,
ref: 'Латотин «Геометрия, 11 кл.», разд. 2, § 4' },
{ idx: 28, type: 'open', topic: 'trigonometry', subtopic: 'trig-equations', diff: 4,
text: R`Найдите (в градусах) сумму различных корней уравнения $\cos x-\sqrt5\sin3x=\cos5x$ на промежутке $[-270^\circ;-135^\circ]$.`,
answer: '-420',
sol: R`Перенесём: $\cos x-\cos5x-\sqrt5\sin3x=0$. По формуле разности косинусов $\cos x-\cos5x=2\sin3x\sin2x$, поэтому $\sin3x(2\sin2x-\sqrt5)=0$. Уравнение $\sin2x=\dfrac{\sqrt5}{2}>1$ решений не имеет. Из $\sin3x=0$: $3x=180^\circ n$, $x=60^\circ n$. Промежутку $[-270^\circ;-135^\circ]$ принадлежат $-180^\circ$ ($n=-3$) и $-240^\circ$ ($n=-4$); их сумма равна $-420^\circ$.`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 1, § 8; § 12' },
{ idx: 29, type: 'open', topic: 'equations', subtopic: 'eq-logarithmic', diff: 4,
text: R`Найдите сумму всех целых решений неравенства $\log_{0{,}7}\left(x^{2}-7x+18\right)-\log_{0{,}7}(x-1)<\log_{0{,}7}2$ на промежутке $(-10;10)$.`,
answer: '35',
sol: R`Неравенство приводится к виду $\log_{0{,}7}\left(x^{2}-7x+18\right)<\log_{0{,}7}\bigl(2(x-1)\bigr)$. Основание $0{,}7<1$ (функция убывает), поэтому равносильна система $\begin{cases}x^{2}-7x+18>2x-2,\\2x-2>0.\end{cases}$ Первое: $x^{2}-9x+20>0\Rightarrow x<4$ или $x>5$; второе: $x>1$. Решение $(1;4)\cup(5;+\infty)$. Пересечение с $(-10;10)$: $(1;4)\cup(5;10)$; целые $2,3,6,7,8,9$, их сумма $35$.`,
ref: 'Арефьева «Алгебра, 11 кл.», гл. 3, § 10' },
{ idx: 30, type: 'open', topic: 'stereometry', subtopic: 'ster-angles-distances', diff: 5,
text: R`Сторона $AB$ треугольника $ABC$, у которого $AB=BC=12$, $AC=8$, лежит в плоскости $\alpha$, а длины проекций двух других сторон треугольника $ABC$ на эту плоскость относятся как $1:3$. Найдите значение выражения $\dfrac{13}{\cos^{2}\beta}$, где $\beta$ — угол между плоскостью треугольника $ABC$ и плоскостью $\alpha$.`,
answer: '256',
sol: R`Пусть $CO$ — перпендикуляр к $\alpha$, $AO:BO=1:3$, $AO=x$, $BO=3x$. Из $CO^{2}=BC^{2}-BO^{2}=AC^{2}-AO^{2}$: $144-9x^{2}=64-x^{2}$, $8x^{2}=80$, $x=\sqrt{10}$, $CO=3\sqrt6$. Высота $CK$ треугольника $ABC$ к $AB$: по формуле Герона $S=32\sqrt2$, откуда $CK=\dfrac{2S}{AB}=\dfrac{64\sqrt2}{12}=\dfrac{16\sqrt2}{3}$. Тогда $OK=\sqrt{CK^{2}-CO^{2}}=\sqrt{\dfrac{512}{9}-54}=\dfrac{\sqrt{26}}{3}$, а $\cos\beta=\dfrac{OK}{CK}=\dfrac{\sqrt{13}}{16}$. Значит, $\dfrac{13}{\cos^{2}\beta}=\dfrac{13\cdot256}{13}=256$.`,
ref: 'Латотин «Геометрия, 10 кл.», разд. 3, § 10' },
];
/* ── Сборка solution_html ────────────────────────────────────────────────── */
function ansShowOf(t) {
if (t.ansShow != null) return t.ansShow;
if (t.type === 'mc') return `${t.answer})`;
return `$${t.answer}$`;
}
function buildSolution(t) {
const ans = ansShowOf(t);
let html = `${t.sol}<div class="sol-ans">Ответ: ${ans}</div>`;
if (t.ref) html += `<div class="sol-ref" style="margin-top:6px;font-size:.85em;opacity:.7">Учебник: ${t.ref}</div>`;
return html;
}
/* ── Самопроверка (повтор логики checkAnswerServer из exam-prep.js) ────────── */
const EPS = 1e-6;
function srvToNumber(s) {
if (s == null) return NaN;
let t = String(s).trim().replace(/\$/g, '').replace(/\s+/g, '').replace(',', '.');
const f = t.match(/^(-?\d+(?:\.\d+)?)\s*\/\s*(-?\d+(?:\.\d+)?)$/);
if (f) { const n = Number(f[1]), d = Number(f[2]); return d === 0 ? NaN : n / d; }
const n = Number(t); return Number.isFinite(n) ? n : NaN;
}
function checkAnswerServer(userInput, canonical) {
if (userInput == null || canonical == null) return false;
const c = String(canonical).trim();
if (/^[а-д]$/.test(c)) return String(userInput).trim().toLowerCase() === c.toLowerCase();
if (/^[^;]+;[^;]+$/.test(c)) return false;
const cn = srvToNumber(c), un = srvToNumber(userInput);
if (Number.isNaN(cn) || Number.isNaN(un)) return false;
return Math.abs(cn - un) < EPS;
}
/* ── Валидация набора ──────────────────────────────────────────────────────── */
const problems = [];
if (TASKS.length !== 30) problems.push(`Ожидалось 30 заданий, получено ${TASKS.length}`);
const seen = new Set();
for (const t of TASKS) {
if (seen.has(t.idx)) problems.push(`Дубль task_idx=${t.idx}`); seen.add(t.idx);
if (t.idx < 1 || t.idx > 30) problems.push(`task_idx вне 1..30: ${t.idx}`);
if (!['mc', 'open', 'long'].includes(t.type)) problems.push(`#${t.idx}: тип ${t.type}`);
if (t.type === 'mc') {
if (!Array.isArray(t.opts) || t.opts.length !== 5) problems.push(`#${t.idx}: mc должен иметь 5 вариантов`);
if (!t.opts.some(o => o[0] === t.answer)) problems.push(`#${t.idx}: answer "${t.answer}" не среди меток`);
}
if (!t.text || !t.sol) problems.push(`#${t.idx}: пустой text/sol`);
if (t.type !== 'long' && !checkAnswerServer(t.answer, t.answer))
problems.push(`#${t.idx}: answer "${t.answer}" не проходит self-check (Unicode-минус? пробел?)`);
if (//.test(String(t.answer))) problems.push(`#${t.idx}: Unicode-минус в answer`);
}
/* ── Экспорт для тестов/тиража (без запуска main при require) ──────────────── */
module.exports = { TASKS, buildSolution, ansShowOf, checkAnswerServer, EXAM, VARIANT, PROV };
if (require.main !== module) return;
/* ── Открытие БД ───────────────────────────────────────────────────────────── */
const DB = path.join(__dirname, '..', 'data', 'learnspace.db');
const db = new DatabaseSync(DB);
const track = db.prepare(`SELECT exam_key, variants_count FROM exam_tracks WHERE exam_key=?`).get(EXAM);
if (!track) { console.error(`✗ Трек '${EXAM}' не найден в exam_tracks. Прерывание.`); process.exit(1); }
/* ── DRY-RUN сводка ────────────────────────────────────────────────────────── */
console.log(`\n=== seed_ctmath_rt2324_e3v1 (${PROV}) variant=${VARIANT} ===`);
console.log(`Режим: ${APPLY ? 'APPLY (запись)' : 'DRY-RUN (только проверка)'}\n`);
const byType = TASKS.reduce((a, t) => (a[t.type] = (a[t.type] || 0) + 1, a), {});
console.log('Типы:', JSON.stringify(byType), ' | с фигурой:', TASKS.filter(t => t.fig).length, '\n');
console.log('idx | type | subtopic | d | answer');
console.log('----+------+-----------------------+---+----------');
for (const t of TASKS) {
console.log(`${String(t.idx).padStart(3)} | ${t.type.padEnd(4)} | ${String(t.subtopic).padEnd(21)} | ${t.diff} | ${String(t.answer)}`);
}
if (problems.length) {
console.error(`\n✗ ПРОБЛЕМЫ (${problems.length}):`);
problems.forEach(p => console.error(' - ' + p));
console.error('\nЗапись отменена из-за ошибок валидации.');
db.close();
process.exit(1);
}
console.log('\n✓ Валидация и self-check ответов пройдены (30/30).');
/* ── APPLY: upsert ─────────────────────────────────────────────────────────── */
if (!APPLY) {
console.log('\nDRY-RUN: ничего не записано. Для записи: node backend/scripts/seed_ctmath_rt2324_e3v1.js --apply\n');
db.close();
process.exit(0);
}
const upsert = db.prepare(`
INSERT INTO exam_tasks
(exam_key, variant, task_idx, task_type, text_html, figure_html,
opts_json, answer, solution_html, topic, subtopic, difficulty)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
ON CONFLICT(exam_key, variant, task_idx) DO UPDATE SET
task_type = excluded.task_type,
text_html = excluded.text_html,
figure_html = excluded.figure_html,
opts_json = excluded.opts_json,
answer = excluded.answer,
solution_html = excluded.solution_html,
topic = excluded.topic,
subtopic = excluded.subtopic,
difficulty = excluded.difficulty
`);
let n = 0;
db.exec('BEGIN');
try {
for (const t of TASKS) {
upsert.run(
EXAM, VARIANT, t.idx, t.type,
t.text,
t.fig || null,
t.type === 'mc' ? JSON.stringify(t.opts) : null,
t.answer,
buildSolution(t),
t.topic, t.subtopic, t.diff
);
n++;
}
const distinct = db.prepare(`SELECT COUNT(DISTINCT variant) c FROM exam_tasks WHERE exam_key=? AND variant BETWEEN 101 AND 1999`).get(EXAM).c;
db.prepare(`UPDATE exam_tracks SET variants_count=? WHERE exam_key=?`).run(distinct, EXAM);
db.exec('COMMIT');
console.log(`\n✓ Записано/обновлено ${n} заданий (variant=${VARIANT}).`);
console.log(`✓ exam_tracks.variants_count = ${distinct} (различных вариантов).`);
console.log(`\nПробник доступен: /exam-prep/ctmath → «Варианты» → «РТ-2023/24 · этап III».\n`);
} catch (e) {
db.exec('ROLLBACK');
console.error('\n✗ Ошибка записи, откат транзакции:', e.message);
process.exitCode = 1;
}
db.close();