Files
Learn_System/backend/scripts/seed_ctmath_rt2223_e1v1.js
T
Maxim Dolgolyov d2d379c5f5 feat(ctmath): пробник РТ-2022/23 этап I (вариант 107)
30 заданий А1–А10 + В1–В20, перенабор по PDF РИКЗ.
8 mc + 20 open + 2 long. Геометрия — текстом. Адаптации заданий
с картинкой: А5 (выбор графика) → MC о параболе y=x²−4; В1
(промежуток↔рисунок) → сопоставление со словесными описаниями
(ответ А3Б6В2); В3 (диаграмма) → данные таблицей в figure_html
(ответ А1Б2В6). Метки 107/108/109 (РТ-2022/23) в VARIANT_LABEL.
Идемпотентный seed, --apply — пользователь.

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

401 lines
39 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_rt2223_e1v1.js
Чистый вариант-пробник для трека exam-prep `ctmath`.
Источник: РТ–2022/2023, Этап I, Вариант 1 (РИКЗ, «Тематическое
консультирование по математике»). 30 заданий: А1–А10 + В1–В20.
Перенабрано вручную в KaTeX по PDF (визуальное чтение, НЕ OCR):
F:\!Рабочие\ЦТ\Математика\Математика\РТ\2022-2023\МАТ РТ-1 22_23 В1.pdf
variant=107 — РТ-2022/23 Этап I (этап II — 108, этап III — 109).
Геометрия закодирована текстом. Адаптации заданий-«с-картинкой»:
• А5 (выбор графика y=x²−4 среди 5 рисунков) → самодостаточный MC о
расположении параболы (та же проверяемая идея, авто-проверка);
• В1 (числовой промежуток ↔ изображение на прямой) → сопоставление с
словесными описаниями промежутков (ответ тот же: А3Б6В2);
• В3 (столбчатая диаграмма) → те же данные в таблице (figure_html),
сопоставление вопрос↔месяц (ответ А1Б2В6).
Идемпотентность: upsert по UNIQUE(exam_key, variant, task_idx).
Запуск:
node backend/scripts/seed_ctmath_rt2223_e1v1.js # DRY-RUN (по умолчанию)
node backend/scripts/seed_ctmath_rt2223_e1v1.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 = 107;
const PROV = 'РТ–2022/2023, Этап I, Вариант 1';
const R = String.raw;
const L = ['а', 'б', 'в', 'г', 'д'];
const mc = (...html) => html.map((h, i) => [L[i], h]);
/* ── figure_html для В3: данные диаграммы в виде таблицы (П — пробная версия,
ПЛ — купившие лицензию), по месяцам янв–июнь. Только HTML, без KaTeX. */
const FIG_B3 = `<table class="task-fig" style="border-collapse:collapse;margin:10px auto;font-size:14px;text-align:center">
<tr>
<th style="border:1px solid #cbd5e1;padding:5px 10px">Показатель</th>
<th style="border:1px solid #cbd5e1;padding:5px 10px">Январь</th>
<th style="border:1px solid #cbd5e1;padding:5px 10px">Февраль</th>
<th style="border:1px solid #cbd5e1;padding:5px 10px">Март</th>
<th style="border:1px solid #cbd5e1;padding:5px 10px">Апрель</th>
<th style="border:1px solid #cbd5e1;padding:5px 10px">Май</th>
<th style="border:1px solid #cbd5e1;padding:5px 10px">Июнь</th>
</tr>
<tr>
<td style="border:1px solid #cbd5e1;padding:5px 10px">П</td>
<td style="border:1px solid #cbd5e1;padding:5px 10px">58000</td>
<td style="border:1px solid #cbd5e1;padding:5px 10px">66000</td>
<td style="border:1px solid #cbd5e1;padding:5px 10px">64000</td>
<td style="border:1px solid #cbd5e1;padding:5px 10px">62000</td>
<td style="border:1px solid #cbd5e1;padding:5px 10px">50000</td>
<td style="border:1px solid #cbd5e1;padding:5px 10px">56000</td>
</tr>
<tr>
<td style="border:1px solid #cbd5e1;padding:5px 10px">ПЛ</td>
<td style="border:1px solid #cbd5e1;padding:5px 10px">22000</td>
<td style="border:1px solid #cbd5e1;padding:5px 10px">16000</td>
<td style="border:1px solid #cbd5e1;padding:5px 10px">14000</td>
<td style="border:1px solid #cbd5e1;padding:5px 10px">12000</td>
<td style="border:1px solid #cbd5e1;padding:5px 10px">10000</td>
<td style="border:1px solid #cbd5e1;padding:5px 10px">14000</td>
</tr>
</table>`;
/* ── 30 заданий ─────────────────────────────────────────────────────────── */
const TASKS = [
// ── Часть A: А1–А10 ──────────────────────────────────────────────────────
{ idx: 1, type: 'mc', topic: 'numbers', subtopic: 'num-real', diff: 1,
text: R`Среди чисел $-\dfrac58$, $\ 2$, $\ \dfrac85$, $\ \dfrac58$, $\ -\dfrac85$ выберите положительное число, меньшее единицы.`,
opts: mc('$-\dfrac58$', '$2$', '$\dfrac85$', '$\dfrac58$', '$-\dfrac85$'),
answer: 'г',
sol: R`Положительны числа $2$, $\dfrac85$ и $\dfrac58$. Из них меньше единицы только $\dfrac58$ (так как $2>1$ и $\dfrac85>1$).`,
ref: 'Герасимов «Математика, 6 кл.», гл. 4, § 3' },
{ idx: 2, type: 'mc', topic: 'numbers', subtopic: 'num-divisibility', diff: 2,
text: R`Среди данных утверждений укажите номер верного.<br>1) число $0$ — делитель числа $19$;<br>2) число $7$ — делитель числа $37$;<br>3) число $8$ — делитель числа $8$;<br>4) число $3$ — делитель числа $43$;<br>5) число $6$ — делитель числа $26$.`,
opts: mc('утверждение 1', 'утверждение 2', 'утверждение 3', 'утверждение 4', 'утверждение 5'),
answer: 'в',
sol: R`Делитель числа делит его без остатка. $\ 1)$ деление на $0$ не имеет смысла — неверно. $\ 2)$ $37=5\cdot7+2$ — неверно. $\ 3)$ $8:8=1$ — верно. $\ 4)$ $43=14\cdot3+1$ — неверно. $\ 5)$ $26=4\cdot6+2$ — неверно.`,
ref: 'Герасимов «Математика, 5 кл.», ч. 1, гл. 1, § 12' },
{ idx: 3, type: 'mc', topic: 'planimetry', subtopic: 'plan-triangles', diff: 2,
text: R`Треугольники $ABC$ и $A_1B_1C_1$ подобны, причём $\angle A=105^\circ$ и $\angle C_1=30^\circ$. Найдите градусную меру угла $B$ треугольника $ABC$.`,
opts: mc('$55^\circ$', '$45^\circ$', '$50^\circ$', '$35^\circ$', '$40^\circ$'),
answer: 'б',
sol: R`У подобных треугольников соответственные углы равны, поэтому $\angle C=\angle C_1=30^\circ$. По теореме о сумме градусных мер углов треугольника $\angle B=180^\circ-\angle A-\angle C=180^\circ-105^\circ-30^\circ=45^\circ$.`,
ref: 'Казаков «Геометрия, 8 кл.», гл. 3, § 20' },
{ idx: 4, type: 'mc', topic: 'equations', subtopic: 'eq-linear', diff: 1,
text: R`Среди чисел $-1$, $\ 2$, $\ \dfrac13$, $\ 1$, $\ -\dfrac13$ укажите то, которое является корнем уравнения $1-3x=2$.`,
opts: mc('$-1$', '$2$', '$\dfrac13$', '$1$', '$-\dfrac13$'),
answer: 'д',
sol: R`Из уравнения $1-3x=2$ получаем $-3x=1$, то есть $x=-\dfrac13$. Это число и есть корень.`,
ref: 'Арефьева «Алгебра, 7 кл.», гл. 3, § 15' },
{ idx: 5, type: 'mc', topic: 'functions', subtopic: 'fn-graphs', diff: 1,
text: R`График функции $y=x^{2}-4$ — парабола. Укажите верное утверждение о её расположении на координатной плоскости.`,
opts: mc('ветви вверх, вершина в точке $(0;-4)$', 'ветви вниз, вершина в точке $(0;-4)$', 'ветви вверх, вершина в точке $(0;4)$', 'ветви вниз, вершина в точке $(0;4)$', 'ветви вверх, вершина в точке $(4;0)$'),
answer: 'а',
sol: R`График $y=x^{2}-4$ получается из графика $y=x^{2}$ сдвигом на $4$ единицы вниз вдоль оси ординат. Это парабола с ветвями вверх и вершиной в точке $(0;-4)$.`,
ref: 'Арефьева «Алгебра, 8 кл.», гл. 3, § 13' },
{ idx: 6, type: 'open', topic: 'functions', subtopic: 'fn-properties', diff: 2,
text: R`Укажите номера функций, для которых выполняется неравенство $f(0)<-3$.<br>1) $f(x)=x^{2}-6$;<br>2) $f(x)=|x-4|$;<br>3) $f(x)=|x|-3$;<br>4) $f(x)=x^{3}-4$;<br>5) $f(x)=(x-8)^{2}$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
answer: '14', ansShow: '1, 4',
sol: R`Найдём $f(0)$: $\ 1)$ $0-6=-6<-3$ — верно. $\ 2)$ $|-4|=4$ — нет. $\ 3)$ $|0|-3=-3$, не меньше $-3$ — нет. $\ 4)$ $0-4=-4<-3$ — верно. $\ 5)$ $(-8)^{2}=64$ — нет. Подходят функции 1 и 4.`,
ref: 'Арефьева «Алгебра, 9 кл.», гл. 2, § 6' },
{ idx: 7, type: 'mc', topic: 'word-sequences', subtopic: 'word-problems', diff: 2,
text: R`Руда содержит $5\%$ чистого металла. Сколько тонн руды необходимо взять, чтобы получить $13$ т чистого металла?`,
opts: mc('$130$', '$230$', '$160$', '$260$', '$390$'),
answer: 'г',
sol: R`Пусть нужно взять $x$ т руды. Составим пропорцию: $x$ т — $100\%$, $13$ т — $5\%$. Тогда $x=\dfrac{13\cdot100}{5}=260$ (т).`,
ref: 'Герасимов «Математика, 6 кл.», гл. 2, § 12' },
{ idx: 8, type: 'mc', topic: 'expressions', subtopic: 'expr-powers-roots', diff: 1,
text: R`Найдите значение выражения $\dfrac{7\sqrt[3]{48}}{\sqrt[3]{6}}$.`,
opts: mc('$7\sqrt[3]{6}$', '$14$', '$7\sqrt[3]{2}$', '$7$', '$28$'),
answer: 'б',
sol: R`$\dfrac{7\sqrt[3]{48}}{\sqrt[3]{6}}=7\sqrt[3]{\dfrac{48}{6}}=7\sqrt[3]{8}=7\cdot2=14$.`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 2, § 14' },
{ idx: 9, type: 'mc', topic: 'stereometry', subtopic: 'ster-polyhedra', diff: 2,
text: R`Дан прямоугольный параллелепипед $ABCDA_1B_1C_1D_1$. Найдите площадь его диагонального сечения $AA_1C_1C$, если диагональ основания $AC=2\sqrt6$, а диагональ $A_1C=7$.`,
opts: mc('$12\sqrt3$', '$4\sqrt{37}$', '$9\sqrt6$', '$14\sqrt6$', '$10\sqrt6$'),
answer: 'д',
sol: R`Сечение $AA_1C_1C$ — прямоугольник со сторонами $AC$ и боковым ребром $A_1A$. По теореме Пифагора в треугольнике $A_1AC$: $A_1A=\sqrt{A_1C^{2}-AC^{2}}=\sqrt{49-24}=\sqrt{25}=5$. Площадь сечения $AC\cdot A_1A=2\sqrt6\cdot5=10\sqrt6$.`,
ref: 'Латотин «Геометрия, 11 кл.», разд. 1, § 1' },
{ idx: 10, type: 'open', topic: 'expressions', subtopic: 'expr-powers-roots', diff: 2,
text: R`Укажите номера выражений, областью определения которых является множество всех действительных чисел.<br>1) $\sqrt{x}$;<br>2) $\dfrac{1}{1+x}$;<br>3) $2x-1$;<br>4) $\sqrt[3]{x}$;<br>5) $\operatorname{tg}x$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
answer: '34', ansShow: '3, 4',
sol: R`$1)$ $\sqrt{x}$ определено при $x\ge0$ — нет. $\ 2)$ $\dfrac{1}{1+x}$ не определено при $x=-1$ — нет. $\ 3)$ $2x-1$ определено при всех $x$ — да. $\ 4)$ $\sqrt[3]{x}$ определено при всех $x$ — да. $\ 5)$ $\operatorname{tg}x$ не определено при $x=\dfrac{\pi}{2}+\pi n$ — нет. Подходят 3 и 4.`,
ref: 'Арефьева «Алгебра, 7 кл.», гл. 2, § 4' },
// ── Часть B: В1–В20 ──────────────────────────────────────────────────────
{ idx: 11, type: 'long', topic: 'numbers', subtopic: 'num-real', diff: 2,
text: R`Установите соответствие между числовым промежутком А–В и его описанием 16.<br><b>Промежуток:</b><br>А) $(-4{,}2;+\infty)$;<br>Б) $(-\infty;5]$;<br>В) $[-4{,}2;5)$.<br><b>Описание:</b><br>1) открытый луч, направленный влево от точки $5$;<br>2) полуинтервал от $-4{,}2$ (включая) до $5$ (не включая);<br>3) открытый луч, направленный вправо от точки $-4{,}2$;<br>4) отрезок от $-4{,}2$ до $5$ (обе границы включены);<br>5) луч, направленный вправо от точки $-4{,}2$, включая её;<br>6) луч, направленный влево от точки $5$, включая её.<br><i>Ответ запишите сочетанием букв и цифр, например: А1Б1В4.</i>`,
answer: 'А3Б6В2', ansShow: 'А3Б6В2',
sol: R`А) $(-4{,}2;+\infty)$ — открытый луч вправо от $-4{,}2$ (граница не включена) — описание 3. Б) $(-\infty;5]$ — луч влево, точка $5$ включена — описание 6. В) $[-4{,}2;5)$ — от $-4{,}2$ (включая) до $5$ (не включая) — описание 2.`,
ref: 'Арефьева «Алгебра, 8 кл.», гл. 1, § 5' },
{ idx: 12, type: 'open', topic: 'expressions', subtopic: 'expr-polynomials', diff: 2,
text: R`Выберите верные утверждения.<br>1) выражение $\dfrac27 a^{2}b^{5}$ является одночленом;<br>2) выражения $5ab^{4}$ и $5a^{5}b$ являются одночленами пятой степени;<br>3) коэффициент одночлена $x\cdot3^{2}$ равен $1$;<br>4) при $x=0{,}5$ и $y=-1$ значение одночлена $-6xy^{3}$ равно $3$;<br>5) степень одночлена $-3ab^{2}c^{4}$ равна $7$;<br>6) выражение $-6x^{0{,}5}y^{3}$ является одночленом.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
answer: '145', ansShow: '1, 4, 5',
sol: R`$1)$ верно: $\dfrac27 a^{2}b^{5}$ — произведение числа и натуральных степеней переменных. $\ 2)$ неверно: степень $5ab^{4}$ равна $5$, а $5a^{5}b$ — равна $6$. $\ 3)$ неверно: $x\cdot3^{2}=9x$, коэффициент $9$. $\ 4)$ верно: $-6\cdot0{,}5\cdot(-1)^{3}=3$. $\ 5)$ верно: степень $-3ab^{2}c^{4}$ равна $1+2+4=7$. $\ 6)$ неверно: $x^{0{,}5}$ — не натуральная степень.`,
ref: 'Арефьева «Алгебра, 7 кл.», гл. 2, § 6' },
{ idx: 13, type: 'long', topic: 'functions', subtopic: 'fn-graphs', diff: 2,
fig: FIG_B3,
text: R`В таблице приведено количество пользователей пробной версии (П) программного обеспечения и количество пользователей, купивших лицензию (ПЛ), за период шесть месяцев (с января по июнь). Установите соответствие между вопросами А–В и ответами 16.<br><b>Вопрос:</b><br>А) В каком месяце количество пользователей пробной версии составило $58000$?<br>Б) В каком месяце количество пользователей, купивших лицензию, равнялось $16000$?<br>В) В каком месяце количество пользователей, купивших лицензию, составило $25\%$ от количества пользователей пробной версии?<br><b>Ответ:</b><br>1) Январь;&emsp;2) Февраль;&emsp;3) Март;&emsp;4) Апрель;&emsp;5) Май;&emsp;6) Июнь.<br><i>Ответ запишите сочетанием букв и цифр, например: А1Б1В4.</i>`,
answer: 'А1Б2В6', ansShow: 'А1Б2В6',
sol: R`А) Пробная версия равна $58000$ в январе — ответ 1. Б) Купивших лицензию $16000$ в феврале — ответ 2. В) Отношение купивших лицензию к пользователям пробной версии равно $25\%$ в июне: $\dfrac{14000}{56000}=0{,}25$ — ответ 6. (В остальных месяцах отношение иное: январь $\approx38\%$, май $20\%$ и т. д.)`,
ref: 'Герасимов «Математика, 5 кл.», ч. 2, гл. 3, § 16' },
{ idx: 14, type: 'open', topic: 'stereometry', subtopic: 'ster-polyhedra', diff: 2,
text: R`Дана правильная призма, имеющая $12$ вершин. Выберите верные утверждения.<br>1) количество всех граней данной призмы равно $7$;<br>2) количество всех рёбер данной призмы равно $18$;<br>3) количество боковых граней данной призмы равно $6$;<br>4) градусная мера внутреннего угла основания данной призмы равна $120^\circ$;<br>5) количество боковых рёбер данной призмы равно $12$;<br>6) диагональным сечением данной призмы является шестиугольник.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
answer: '234', ansShow: '2, 3, 4',
sol: R`$12$ вершин $\Rightarrow$ в основаниях правильные шестиугольники (по $6$ вершин). $\ 1)$ неверно: граней $6+2=8$. $\ 2)$ верно: рёбер $6+6+6=18$. $\ 3)$ верно: боковых граней $6$. $\ 4)$ верно: внутренний угол правильного шестиугольника $\dfrac{180^\circ\cdot4}{6}=120^\circ$. $\ 5)$ неверно: боковых рёбер $6$. $\ 6)$ неверно: диагональное сечение призмы — четырёхугольник.`,
ref: 'Латотин «Геометрия, 11 кл.», разд. 1, § 1' },
{ idx: 15, type: 'open', topic: 'planimetry', subtopic: 'plan-triangles', diff: 2,
text: R`В равнобедренном треугольнике $ABC$ с основанием $AC$ известно, что $\angle BAC=34^\circ$. Через вершину $A$ проведён луч $AD$ так, что $AD\parallel BC$ (точки $D$ и $B$ лежат по одну сторону от прямой $AC$). Угол $1$ образован лучами $AD$ и $AB$. Найдите градусную меру угла $1$.`,
answer: '112',
sol: R`Углы при основании равнобедренного треугольника равны: $\angle ACB=\angle BAC=34^\circ$. По теореме о сумме углов $\angle ABC=180^\circ-2\cdot34^\circ=112^\circ$. Угол $1$ и угол $ABC$ — накрест лежащие при $AD\parallel BC$ и секущей $AB$, поэтому $\angle 1=\angle ABC=112^\circ$.`,
ref: 'Казаков «Геометрия, 7 кл.», гл. 2, § 11; гл. 3, § 17' },
{ idx: 16, type: 'open', topic: 'trigonometry', subtopic: 'trig-identities', diff: 2,
text: R`Найдите значение выражения $\dfrac{72}{\pi}\cdot\operatorname{arctg}\left(-\dfrac{\sqrt3}{3}\right)$.`,
answer: '-12',
sol: R`$\operatorname{arctg}\left(-\dfrac{\sqrt3}{3}\right)=-\operatorname{arctg}\dfrac{\sqrt3}{3}=-\dfrac{\pi}{6}$. Тогда $\dfrac{72}{\pi}\cdot\left(-\dfrac{\pi}{6}\right)=-12$.`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 1, § 7' },
{ idx: 17, type: 'open', topic: 'word-sequences', subtopic: 'seq-progressions', diff: 2,
text: R`Найдите третий член арифметической прогрессии, у которой сумма $n$ первых членов выражается формулой $S_n=\dfrac{11-3n}{2}\cdot n$.`,
answer: '-2',
sol: R`$a_3=S_3-S_2$. $\ S_2=\dfrac{11-6}{2}\cdot2=5$; $\ S_3=\dfrac{11-9}{2}\cdot3=3$. Тогда $a_3=3-5=-2$.`,
ref: 'Арефьева «Алгебра, 9 кл.», гл. 4, § 1516' },
{ idx: 18, type: 'open', topic: 'equations', subtopic: 'eq-linear', diff: 3,
text: R`Света купила $6$ ручек и $5$ карандашей, а Коля купил $4$ такие же по цене ручки и $8$ таких же по цене карандашей и заплатил на $1$ рубль $60$ копеек меньше, чем Света. Сколько копеек заплатила за покупку Света, если карандаш дешевле ручки на $90$ копеек?`,
answer: '760',
sol: R`Пусть ручка стоит $x$ коп., карандаш $y$ коп. Тогда $\begin{cases}(6x+5y)-(4x+8y)=160,\\x-y=90,\end{cases}$ то есть $\begin{cases}2x-3y=160,\\x-y=90.\end{cases}$ Отсюда $y=20$, $x=110$. Света заплатила $6\cdot110+5\cdot20=760$ (коп.).`,
ref: 'Арефьева «Алгебра, 7 кл.», гл. 4, § 25' },
{ idx: 19, type: 'open', topic: 'equations', subtopic: 'eq-exponential', diff: 3,
text: R`Найдите произведение наибольшего целого отрицательного и наименьшего целого положительного решений неравенства $(0{,}2)^{\,2x^{2}-72}<1$.`,
answer: '-49',
sol: R`Так как $1=(0{,}2)^{0}$, а основание $0{,}2<1$ (функция убывает), неравенство равносильно $2x^{2}-72>0$, то есть $x^{2}>36$, откуда $x<-6$ или $x>6$. Наибольшее целое отрицательное решение $-7$, наименьшее целое положительное $7$; их произведение $-49$.`,
ref: 'Арефьева «Алгебра, 11 кл.», гл. 2, § 6' },
{ idx: 20, type: 'open', topic: 'planimetry', subtopic: 'plan-quadrilaterals', diff: 3,
text: R`Длина одной из сторон параллелограмма на $5$ больше длины другой стороны, а высоты, проведённые к этим сторонам, равны $8$ и $12$. Найдите площадь параллелограмма.`,
answer: '120',
sol: R`Пусть меньшая сторона равна $x$, тогда большая $x+5$. К большей стороне проведена меньшая высота $8$, к меньшей — большая $12$. Площадь $S=ah$ одна и та же: $(x+5)\cdot8=x\cdot12$, $8x+40=12x$, $x=10$. Тогда $S=x\cdot12=120$.`,
ref: 'Казаков «Геометрия, 8 кл.», гл. 2, § 14' },
{ idx: 21, type: 'open', topic: 'functions', subtopic: 'fn-derivative', diff: 2,
text: R`Найдите $f'(-1)$ для функции $f(x)=\dfrac{x^{3}}{3}-1{,}5x^{2}+13x-2022$.`,
answer: '17',
sol: R`$f'(x)=\dfrac13\cdot3x^{2}-1{,}5\cdot2x+13=x^{2}-3x+13$. Тогда $f'(-1)=(-1)^{2}-3\cdot(-1)+13=1+3+13=17$.`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 3, § 19' },
{ idx: 22, type: 'open', topic: 'equations', subtopic: 'eq-rational', diff: 3,
text: R`Найдите наименьшее целое решение неравенства $\dfrac{x-3}{(x+14)(x-6)}\ge0$.`,
answer: '-13',
sol: R`Нуль числителя $x=3$; при $x=-14$ и $x=6$ значения не существуют. Методом интервалов решение неравенства — множество $(-14;3]\cup(6;+\infty)$. Наименьшее целое решение равно $-13$.`,
ref: 'Арефьева «Алгебра, 9 кл.», гл. 3, § 13' },
{ idx: 23, type: 'open', topic: 'stereometry', subtopic: 'ster-angles-distances', diff: 4,
text: R`Дана правильная четырёхугольная пирамида $SABCD$, у которой диагональ основания $AC=2\sqrt{10}$, а угол между боковым ребром и плоскостью основания $\angle SCO=60^\circ$ ($O$ — центр основания). Найдите значение выражения $S^{2}$, где $S$ — площадь боковой поверхности пирамиды.`,
answer: '2800',
sol: R`В основании квадрат $ABCD$ с диагональю $2\sqrt{10}$, значит сторона $AD=2\sqrt5$. Высота $SO=OC\cdot\operatorname{tg}60^\circ=\dfrac{AC}{2}\cdot\sqrt3=\sqrt{10}\cdot\sqrt3=\sqrt{30}$. Апофема $SK=\sqrt{SO^{2}+\left(\dfrac{AD}{2}\right)^{2}}=\sqrt{30+5}=\sqrt{35}$. Площадь боковой поверхности $S=\dfrac12\cdot P\cdot SK$, где $P=4\cdot AD$ — периметр основания: $S=2\cdot AD\cdot SK=2\cdot2\sqrt5\cdot\sqrt{35}=20\sqrt7$. Тогда $S^{2}=400\cdot7=2800$.`,
ref: 'Латотин «Геометрия, 11 кл.», разд. 2, § 3' },
{ idx: 24, type: 'open', topic: 'equations', subtopic: 'eq-linear', diff: 3,
text: R`Найдите сумму всех целых решений совокупности неравенств $\left[\begin{array}{l}x+6\le0,\\-2-x\ge0,\end{array}\right.$ принадлежащих промежутку $[-7;3]$.`,
answer: '-27',
sol: R`$x+6\le0\Rightarrow x\le-6$; $\ -2-x\ge0\Rightarrow x\le-2$. Объединение лучей — множество $(-\infty;-2]$. Пересечение с $[-7;3]$ — отрезок $[-7;-2]$. Целые решения $-7,-6,-5,-4,-3,-2$; их сумма равна $-27$.`,
ref: 'Арефьева «Алгебра, 8 кл.», гл. 1, § 6' },
{ idx: 25, type: 'open', topic: 'equations', subtopic: 'eq-rational', diff: 3,
text: R`Найдите сумму квадратов корней уравнения $\dfrac{x^{2}+7\sqrt3\,x-15}{(x-7)^{2}}=0$.`,
answer: '177',
sol: R`Дробь равна нулю, когда числитель равен нулю, а знаменатель отличен от нуля: $x^{2}+7\sqrt3\,x-15=0$ при $x\ne7$. По теореме Виета $x_1+x_2=-7\sqrt3$, $x_1x_2=-15$. Тогда $x_1^{2}+x_2^{2}=(x_1+x_2)^{2}-2x_1x_2=\left(7\sqrt3\right)^{2}+30=147+30=177$.`,
ref: 'Арефьева «Алгебра, 8 кл.», гл. 2, § 9' },
{ idx: 26, type: 'open', topic: 'trigonometry', subtopic: 'trig-equations', diff: 3,
text: R`Найдите (в градусах) корень уравнения $\operatorname{tg}5x=1$ на промежутке $(0^\circ;45^\circ)$.`,
answer: '9',
sol: R`$\operatorname{tg}5x=1\Rightarrow 5x=45^\circ+180^\circ n$, откуда $x=9^\circ+36^\circ n$. Промежутку $(0^\circ;45^\circ)$ принадлежит только корень $9^\circ$ (при $n=0$).`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 1, § 8' },
{ idx: 27, type: 'open', topic: 'equations', subtopic: 'eq-irrational', diff: 3,
text: R`Решите уравнение $\sqrt{x-1}+3\sqrt[4]{x-1}-18=0$. В ответ запишите его корень (произведение корней, если их несколько).`,
answer: '82',
sol: R`Пусть $t=\sqrt[4]{x-1}\ge0$, тогда $t^{2}=\sqrt{x-1}$ и уравнение примет вид $t^{2}+3t-18=0$, $t=3$ (корень $t=-6$ отброшен). Из $\sqrt[4]{x-1}=3$ получаем $x-1=81$, $x=82$.`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 2, § 17' },
{ idx: 28, type: 'open', topic: 'planimetry', subtopic: 'plan-circle', diff: 4,
text: R`Вписанный в окружность угол $KMN$, косинус которого равен $\dfrac34$, опирается на дугу $KN$. Радиус окружности равен $4$. Найдите значение выражения $S^{2}$, где $S$ — площадь треугольника $KON$ ($O$ — центр окружности).`,
answer: '63',
sol: R`Пусть $\angle KMN=\alpha$. Центральный угол $\angle KON=2\alpha$. Из $\cos\alpha=\dfrac34$ находим $\sin\alpha=\sqrt{1-\dfrac{9}{16}}=\dfrac{\sqrt7}{4}$, тогда $\sin2\alpha=2\sin\alpha\cos\alpha=2\cdot\dfrac{\sqrt7}{4}\cdot\dfrac34=\dfrac{3\sqrt7}{8}$. Площадь $S=\dfrac12\cdot OK\cdot ON\cdot\sin\angle KON=\dfrac12\cdot4^{2}\cdot\dfrac{3\sqrt7}{8}=3\sqrt7$. Тогда $S^{2}=9\cdot7=63$.`,
ref: 'Казаков «Геометрия, 9 кл.», гл. 1, § 5; Арефьева «Алгебра, 10 кл.», гл. 1, § 11' },
{ idx: 29, type: 'open', topic: 'word-sequences', subtopic: 'word-problems', diff: 4,
text: R`Катер в $10$ ч $30$ мин отправился по течению реки от пристани $A$ к пристани $B$. Пробыв $3$ ч у пристани $B$, катер отправился назад и прибыл к пристани $A$ не позднее $17$ ч $15$ мин того же дня. Найдите наименьшее возможное целое значение собственной скорости (в км/ч) катера, если скорость течения реки равна $3$ км/ч, а расстояние между пристанями равно $36$ км. (Собственная скорость катера не изменялась.)`,
answer: '20',
sol: R`Пусть собственная скорость $x$ км/ч. Время в пути и стоянка не превышают $17\dfrac14-10\dfrac12=6\dfrac34$ ч. Тогда $\dfrac{36}{x+3}+3+\dfrac{36}{x-3}\le\dfrac{27}{4}$, откуда $\dfrac{36}{x+3}+\dfrac{36}{x-3}\le\dfrac{15}{4}$. При $x>3$ это приводит к $5x^{2}-96x-45\ge0$, решение $x\ge\dfrac{48+3\sqrt{281}}{5}\approx19{,}7$. Наименьшее целое значение $x=20$.`,
ref: 'Арефьева «Алгебра, 9 кл.», гл. 3, § 10; § 13' },
{ idx: 30, type: 'open', topic: 'stereometry', subtopic: 'ster-angles-distances', diff: 5,
text: R`$ABCA_1B_1C_1$ — правильная треугольная призма, у которой $CC_1=1$. Радиус окружности, описанной около основания $ABC$, равен $\sqrt2$. На ребре $BC$ взята точка $N$ так, что $BN:NC=1:3$. Найдите значение выражения $\dfrac{32}{\cos^{2}\varphi}$, где $\varphi$ — угол между прямыми $A_1N$ и $CC_1$.`,
answer: '188',
sol: R`Сторона основания $a$: из $R=\dfrac{a\sqrt3}{3}=\sqrt2$ получаем $a=\sqrt6$. Тогда $BN=\dfrac{\sqrt6}{4}$. Так как $CC_1\parallel AA_1$, угол между $A_1N$ и $CC_1$ равен $\angle NA_1A=\varphi$. По теореме косинусов в треугольнике $ABN$: $AN^{2}=BN^{2}+AB^{2}-2\cdot BN\cdot AB\cos60^\circ=\dfrac{6}{16}+6-\dfrac{6}{4}=\dfrac{78}{16}$. В прямоугольном треугольнике $A_1AN$: $A_1N^{2}=AA_1^{2}+AN^{2}=1+\dfrac{78}{16}=\dfrac{94}{16}$, $A_1N=\dfrac{\sqrt{94}}{4}$. Тогда $\cos\varphi=\dfrac{AA_1}{A_1N}=\dfrac{4}{\sqrt{94}}$, $\cos^{2}\varphi=\dfrac{16}{94}=\dfrac{8}{47}$, и $\dfrac{32}{\cos^{2}\varphi}=32\cdot\dfrac{47}{8}=188$.`,
ref: 'Латотин «Геометрия, 10 кл.», разд. 2, § 4' },
];
/* ── Сборка 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_rt2223_e1v1 (${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_rt2223_e1v1.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 → «Варианты» → «РТ-2022/23 · этап I».\n`);
} catch (e) {
db.exec('ROLLBACK');
console.error('\n✗ Ошибка записи, откат транзакции:', e.message);
process.exitCode = 1;
}
db.close();