Files
Learn_System/backend/scripts/seed_ctmath_ct2019_v1.js
T
Maxim Dolgolyov fec638135f chore(ctmath): убрать упоминания сторонних авторов из ссылок-учебников
Поле ref в решениях задач (показывается ученику как «Учебник: …») содержало фамилии
авторов чужих учебников (Арефьева, Казаков, Латотин, Герасимов). Заменено на обобщённые
ссылки нашего курса: «Алгебра, 7 класс, гл. 1» и т.п. (фамилии и кавычки-ёлочки убраны).
452 замены в 15 seed_ctmath_*.js. Синтаксис OK, валидация 30/30.
Применённые варианты (112,113) обновятся при повторном --apply (upsert solution_html).

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

381 lines
34 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_ct2019_v1.js
Чистый вариант-пробник для трека exam-prep `ctmath`.
Источник: Централизованное тестирование (ЦТ) по математике, 2019, Вариант 1.
Формат: Часть А = А1–А18 (закрытые), Часть В = В1–В12 (открытые; В1 — на соответствие,
В2 — множественный выбор). Всего 30 заданий. Перенабрано вручную в KaTeX по PDF:
F:\!Рабочие\ЦТ\Математика\Математика\ЦТ-ЦЭ\ЦТ 2019.pdf (10 вариантов, табл. ответов стр.45).
⚠️ Ответы решены самостоятельно и СВЕРЕНЫ: (1) с (затемнённым) столбцом «Вариант 1»
таблицы — читаемые ячейки совпали; (2) методы B5/B6/B7/B11/B12 перекрёстно проверены на
Варианте 10 (его задания напечатаны на стр.43–44, ответы читаемы): дали ровно табличные
81/56/-1071/624/540 → метод верен. variant=115 (после ЦТ-2018 = 114).
Реконструкции/адаптации заданий-«с-картинкой» (смысл/ответ сохранены, авто-проверка):
А1 (число $\tfrac{7\pi}{6}$ на прямой) → промежутки точек заданы явно (ответ $D$);
• А7 (узел сетки) → координаты точки $A(5;-3)$ заданы ($AB=2\sqrt{34}$);
• А9 (графики движения) → скорости катера/лодки относительно берега даны числами
($12$ и $7{,}2$ км/ч → течение $2{,}4$);
• В1/В2 — данные предложений/утверждений приведены текстом (как в оригинале).
Идемпотентность: upsert по UNIQUE(exam_key, variant, task_idx).
Запуск:
node backend/scripts/seed_ctmath_ct2019_v1.js # DRY-RUN (по умолчанию)
node backend/scripts/seed_ctmath_ct2019_v1.js --apply # запись в БД
⚠️ Массовую запись в БД запускает ПОЛЬЗОВАТЕЛЬ вручную. Без --apply ничего не пишется.
─────────────────────────────────────────────────────────────────────────── */
const { DatabaseSync } = require('node:sqlite');
const path = require('path');
const APPLY = process.argv.includes('--apply');
const EXAM = 'ctmath';
const VARIANT = 115;
const PROV = 'ЦТ–2019, Вариант 1';
const R = String.raw;
const L = ['а', 'б', 'в', 'г', 'д'];
const mc = (...html) => html.map((h, i) => [L[i], h]);
/* ── 30 заданий ─────────────────────────────────────────────────────────── */
const TASKS = [
// ── Часть A: А1–А18 ──────────────────────────────────────────────────────
{ idx: 1, type: 'mc', topic: 'numbers', subtopic: 'num-real', diff: 1,
text: R`На координатной прямой отмечены точки (слева направо) $F,A,B,D,C$, лежащие в единичных промежутках: $F\in(0;1)$, $A\in(1;2)$, $B\in(2;3)$, $D\in(3;4)$, $C\in(4;5)$. Числу $\dfrac{7\pi}{6}$ на координатной прямой может соответствовать точка:`,
opts: mc('$F$', '$A$', '$B$', '$C$', '$D$'),
answer: 'д',
sol: R`$\dfrac{7\pi}{6}\approx3{,}67$ лежит в промежутке $(3;4)$, которому соответствует точка $D$.`,
ref: 'Алгебра, 10 класс, гл. 1' },
{ idx: 2, type: 'mc', topic: 'equations', subtopic: 'eq-rational', diff: 2,
text: R`Укажите номер системы неравенств, равносильной системе $\begin{cases}x>3,\\ x\le5.\end{cases}$<br>$1)\ \begin{cases}x-2>1,\\ x+1\le6;\end{cases}$ $\ 2)\ \begin{cases}2x>3,\\ x\le5;\end{cases}$ $\ 3)\ \begin{cases}x>3,\\ x+2\le3;\end{cases}$ $\ 4)\ \begin{cases}x+1>2,\\ x\le5;\end{cases}$ $\ 5)\ \begin{cases}x>3,\\ -x\le5.\end{cases}$`,
opts: mc('$1$', '$2$', '$3$', '$4$', '$5$'),
answer: 'а',
sol: R`В системе 1: $x-2>1\Rightarrow x>3$ и $x+1\le6\Rightarrow x\le5$ — это и есть данная система.`,
ref: 'Алгебра, 8 класс, гл. 3' },
{ idx: 3, type: 'mc', topic: 'numbers', subtopic: 'num-real', diff: 2,
text: R`Укажите номер верного утверждения.<br>$1)\ 11^{16}=121^{4}$; $\ 2)\ -\dfrac37>-\dfrac47$; $\ 3)\ \sqrt{79}>9$; $\ 4)\ 0{,}72<0{,}702$; $\ 5)\ 6^{1/5}=6^{-5}$.`,
opts: mc('$1$', '$2$', '$3$', '$4$', '$5$'),
answer: 'б',
sol: R`$-\dfrac37>-\dfrac47$ — верно (утверждение 2). Остальные неверны: $121^{4}=11^{8}\ne11^{16}$; $\sqrt{79}<9$; $0{,}72>0{,}702$; $6^{1/5}\ne6^{-5}$.`,
ref: 'Алгебра, 8 класс, гл. 1' },
{ idx: 4, type: 'mc', topic: 'trigonometry', subtopic: 'trig-circle', diff: 1,
text: R`Найдите градусную меру угла, смежного с углом, радианная мера которого равна $\dfrac{11\pi}{15}$.`,
opts: mc('$46^\circ$', '$42^\circ$', '$50^\circ$', '$45^\circ$', '$48^\circ$'),
answer: 'д',
sol: R`$\dfrac{11\pi}{15}=\dfrac{11\cdot180^\circ}{15}=132^\circ$. Смежный угол равен $180^\circ-132^\circ=48^\circ$.`,
ref: 'Алгебра, 10 класс, гл. 1' },
{ idx: 5, type: 'mc', topic: 'expressions', subtopic: 'expr-polynomials', diff: 2,
text: R`Результат разложения многочлена $cx+cy-(x+y)^{2}$ на множители имеет вид:`,
opts: mc('$(x+y)(2c-x+y)$', '$(x+y)(c-x+y)$', '$(x+y)(c-x-y)$', '$(x+y)(c-2)$', '$(x+y)(c-1)$'),
answer: 'в',
sol: R`$cx+cy-(x+y)^{2}=c(x+y)-(x+y)^{2}=(x+y)\bigl(c-(x+y)\bigr)=(x+y)(c-x-y)$.`,
ref: 'Алгебра, 7 класс, гл. 2' },
{ idx: 6, type: 'mc', topic: 'functions', subtopic: 'fn-graphs', diff: 2,
text: R`Окружность задана уравнением $(x-3)^{2}+(y+4)^{2}=14$. Укажите номер верного утверждения.<br>$1)$ точка $A(-4;3)$ лежит на окружности;<br>$2)$ центром окружности является точка $O(-3;4)$;<br>$3)$ диаметр окружности равен $14$;<br>$4)$ прямая $y=2x-10$ проходит через центр окружности;<br>$5)$ радиус окружности равен $7$.`,
opts: mc('$1$', '$2$', '$3$', '$4$', '$5$'),
answer: 'г',
sol: R`Центр окружности $(3;-4)$. Подстановка в $y=2x-10$: $2\cdot3-10=-4$ — прямая проходит через центр (утверждение 4). Остальные неверны: $A$ не на окружности; центр $(3;-4)$; диаметр $2\sqrt{14}$; радиус $\sqrt{14}$.`,
ref: 'Геометрия, 8 класс, разд. 5' },
{ idx: 7, type: 'mc', topic: 'planimetry', subtopic: 'plan-triangles', diff: 2,
text: R`Точка $A(5;-3)$ — узел координатной сетки. Точка $B$ симметрична точке $A$ относительно начала координат. Найдите длину отрезка $AB$.`,
opts: mc('$2\sqrt{34}$', '$10$', '$2\sqrt{14}$', '$4\sqrt7$', '$6$'),
answer: 'а',
sol: R`$B(-5;3)$, поэтому $AB=\sqrt{(5+5)^{2}+(-3-3)^{2}}=\sqrt{100+36}=\sqrt{136}=2\sqrt{34}$.`,
ref: 'Математика, 6 класс, гл. 7' },
{ idx: 8, type: 'mc', topic: 'planimetry', subtopic: 'plan-circle', diff: 2,
text: R`Через точку $A$ к окружности с центром $O$ проведены две касательные $AB$ и $AC$ ($B,C$ — точки касания). Найдите градусную меру угла $BAC$, если $\angle OBC=33^\circ$.`,
opts: mc('$24^\circ$', '$66^\circ$', '$60^\circ$', '$57^\circ$', '$73^\circ$'),
answer: 'б',
sol: R`Радиус $OB\perp AB$, поэтому $\angle ABC=90^\circ-\angle OBC=57^\circ$. Так как $AB=AC$ (касательные из одной точки), то $\angle ACB=57^\circ$ и $\angle BAC=180^\circ-2\cdot57^\circ=66^\circ$.`,
ref: 'Геометрия, 9 класс, гл. 1' },
{ idx: 9, type: 'mc', topic: 'word-sequences', subtopic: 'word-problems', diff: 2,
text: R`Катер плывёт по течению реки, а моторная лодка — против течения; их собственные скорости равны. По графикам движения скорость катера относительно берега равна $12$ км/ч, а лодки — $7{,}2$ км/ч. Найдите скорость течения реки.`,
opts: mc('$2{,}6$ км/ч', '$5{,}2$ км/ч', '$2{,}4$ км/ч', '$4{,}6$ км/ч', '$4{,}8$ км/ч'),
answer: 'в',
sol: R`Скорость катера $u+v=12$, лодки $u-v=7{,}2$. Вычитая, $2v=4{,}8$, $v=2{,}4$ км/ч.`,
ref: 'Алгебра, 7 класс, гл. 3' },
{ idx: 10, type: 'mc', topic: 'equations', subtopic: 'eq-quadratic', diff: 2,
text: R`Пусть $x_1$ и $x_2$ — корни уравнения $x^{2}-3x+q=0$. Найдите число $q$, при котором выполняется равенство $x_1^{2}+x_2^{2}=25$.`,
opts: mc('$-8$', '$-3$', '$8$', '$3$', '$-5$'),
answer: 'а',
sol: R`По теореме Виета $x_1+x_2=3$, $x_1x_2=q$. Тогда $x_1^{2}+x_2^{2}=(x_1+x_2)^{2}-2x_1x_2=9-2q=25$, откуда $q=-8$.`,
ref: 'Алгебра, 8 класс, гл. 2' },
{ idx: 11, type: 'mc', topic: 'word-sequences', subtopic: 'seq-progressions', diff: 2,
text: R`Сумма первых четырёх членов геометрической прогрессии равна $60$, знаменатель прогрессии равен $2$. Найдите второй член прогрессии.`,
opts: mc('$5$', '$16$', '$6$', '$4$', '$8$'),
answer: 'д',
sol: R`$S_4=b_1\cdot\dfrac{2^{4}-1}{2-1}=15b_1=60$, откуда $b_1=4$. Второй член $b_2=b_1\cdot2=8$.`,
ref: 'Алгебра, 9 класс, гл. 4' },
{ idx: 12, type: 'mc', topic: 'planimetry', subtopic: 'plan-triangles', diff: 2,
text: R`В треугольнике $ABC$ $\angle ACB=90^\circ$, $AB=8$, $\operatorname{ctg}\angle BAC=\sqrt{15}$. Найдите длину стороны $CB$.`,
opts: mc('$2$', '$3$', '$2\sqrt{15}$', '$8\sqrt{15}$', '$\dfrac{8\sqrt{15}}{15}$'),
answer: 'а',
sol: R`$\operatorname{ctg}\angle BAC=\dfrac{AC}{CB}=\sqrt{15}$, поэтому $AC=\sqrt{15}\,CB$. Из $AC^{2}+CB^{2}=AB^{2}$: $15CB^{2}+CB^{2}=64$, $CB^{2}=4$, $CB=2$.`,
ref: 'Геометрия, 8 класс, гл. 2' },
{ idx: 13, type: 'mc', topic: 'equations', subtopic: 'eq-quadratic', diff: 2,
text: R`Укажите номера уравнений, которые не имеют действительных корней.<br>$1)\ x^{2}=49$; $\ 2)\ \dfrac{1}{x^{2}-49}=0$; $\ 3)\ x^{2}+49=0$; $\ 4)\ x^{2}+49x=0$; $\ 5)\ x^{2}+x-49=0$.`,
opts: mc('$1$ и $2$', '$2$ и $3$', '$1$ и $5$', '$3$ и $4$', '$4$ и $5$'),
answer: 'б',
sol: R`Уравнение $\dfrac{1}{x^{2}-49}=0$ не имеет решений, а $x^{2}+49=0$ не имеет действительных корней. Остальные корни имеют. Значит уравнения $2$ и $3$.`,
ref: 'Алгебра, 8 класс, гл. 2' },
{ idx: 14, type: 'mc', topic: 'planimetry', subtopic: 'plan-triangles', diff: 3,
text: R`В ботаническом саду разбили клумбу треугольной формы. Длина первой стороны равна $4$ м, длина второй в $2{,}5$ раза больше длины первой, а длина третьей составляет не менее 120 % длины второй. Какому условию должен удовлетворять периметр $P$ (в метрах) этой клумбы?`,
opts: mc('$26<P\le28$', '$P\le28$', '$26\le P<28$', '$P>26$', '$26\le P\le28$'),
answer: 'в',
sol: R`Первая сторона $4$ м, вторая $10$ м, третья $c\ge12$ м. По неравенству треугольника $c<4+10=14$. Значит $12\le c<14$, и $P=14+c$, то есть $26\le P<28$.`,
ref: 'Геометрия, 7 класс, гл. 3' },
{ idx: 15, type: 'mc', topic: 'numbers', subtopic: 'num-divisibility', diff: 2,
text: R`Найдите сумму всех натуральных чисел $n$, для которых выполняется равенство НОК$(n;63)=63$.`,
opts: mc('$103$', '$105$', '$64$', '$104$', '$126$'),
answer: 'г',
sol: R`НОК$(n;63)=63$ означает, что $n$ — делитель числа $63$. Делители: $1,3,7,9,21,63$; их сумма $104$.`,
ref: 'Математика, 6 класс, гл. 1' },
{ idx: 16, type: 'mc', topic: 'stereometry', subtopic: 'ster-rotation', diff: 2,
text: R`Секущая плоскость пересекает сферу по окружности, радиус которой равен $2$. Если расстояние от центра сферы до секущей плоскости равно $4$, то площадь сферы равна:`,
opts: mc('$40\pi$', '$20\pi$', '$160\pi$', '$85\pi$', '$80\pi$'),
answer: 'д',
sol: R`$R^{2}=r^{2}+d^{2}=2^{2}+4^{2}=20$. Площадь сферы $4\pi R^{2}=80\pi$.`,
ref: 'Геометрия, 11 класс, разд. 3' },
{ idx: 17, type: 'mc', topic: 'trigonometry', subtopic: 'trig-equations', diff: 3,
text: R`Сумма наибольшего отрицательного и наименьшего положительного корней уравнения $\cos(3\pi x)\cdot\cos\left(3\pi x+\dfrac{\pi}{2}\right)=\dfrac12$ равна:`,
opts: mc('$\dfrac{1}{2}$', '$\dfrac{7}{12}$', '$\dfrac{1}{6}$', '$-\dfrac{1}{12}$', '$\dfrac14$'),
answer: 'в',
sol: R`$\cos\left(3\pi x+\dfrac{\pi}{2}\right)=-\sin(3\pi x)$, поэтому $-\sin(3\pi x)\cos(3\pi x)=\dfrac12$, то есть $\sin(6\pi x)=-1$, $x=-\dfrac{1}{12}+\dfrac{k}{3}$. Наибольший отрицательный корень $-\dfrac{1}{12}$, наименьший положительный $\dfrac14$; их сумма $\dfrac14-\dfrac{1}{12}=\dfrac16$.`,
ref: 'Алгебра, 10 класс, гл. 1, § 8' },
{ idx: 18, type: 'mc', topic: 'stereometry', subtopic: 'ster-polyhedra', diff: 4,
text: R`$ABCA_1B_1C_1$ — правильная треугольная призма, все рёбра которой равны $24\sqrt3$. Точки $P$ и $K$ — середины рёбер $A_1B_1$ и $AA_1$, точка $M$ на ребре $B_1C_1$ такова, что $C_1M:C_1B_1=1:3$. Найдите длину отрезка, по которому плоскость, проходящая через $M,P,K$, пересекает грань $BB_1C_1C$.`,
opts: mc('$8\sqrt3$', '$20\sqrt3$', '$18\sqrt3$', '$10\sqrt3$', '$12\sqrt3$'),
answer: 'г',
sol: R`Введём координаты с основанием — равносторонним треугольником со стороной $24\sqrt3$ и высотой призмы $24\sqrt3$. Секущая плоскость через $M,P,K$ пересекает грань $BB_1C_1C$ по отрезку от $M$ до точки на ребре $CC_1$; его длина $\sqrt{(4\sqrt3)^{2}+12^{2}+(6\sqrt3)^{2}}=\sqrt{48+144+108}=\sqrt{300}=10\sqrt3$.`,
ref: 'Геометрия, 10 класс, разд. 4' },
// ── Часть B: В1–В12 ──────────────────────────────────────────────────────
{ idx: 19, type: 'long', topic: 'expressions', subtopic: 'expr-powers-roots', diff: 3,
text: R`Для начала каждого из предложений А–В подберите его окончание $1$–$5$ так, чтобы получилось верное утверждение.<br>А) Значение выражения $2^{-8}:2^{0}$ равно …<br>Б) Значение выражения $(-2)^{-11}\cdot8$ равно …<br>В) Значение выражения $20^{4}:(-5)^{4}$ равно …<br>Окончания: $1)\;256$; $\ 2)\;-256$; $\ 3)\;-\dfrac{1}{256}$; $\ 4)\;\dfrac{1}{256}$; $\ 5)\;32$.`,
answer: 'А4Б3В1',
ansShow: 'А4Б3В1',
sol: R`А) $2^{-8}:2^{0}=2^{-8}=\dfrac{1}{256}$ (окончание 4). Б) $(-2)^{-11}\cdot8=-\dfrac{1}{2048}\cdot8=-\dfrac{1}{256}$ (окончание 3). В) $20^{4}:(-5)^{4}=\left(\dfrac{20}{5}\right)^{4}=4^{4}=256$ (окончание 1). Ответ: А4Б3В1.`,
ref: 'Алгебра, 7 класс, гл. 1' },
{ idx: 20, type: 'open', topic: 'stereometry', subtopic: 'ster-basics', diff: 3,
text: R`Прямая $a$ перпендикулярна плоскости $\alpha$ и пересекает её в точке $O$. Выберите номера трёх верных утверждений (запишите цифрами в порядке возрастания).<br>$1)$ любая прямая, перпендикулярная плоскости $\alpha$, параллельна прямой $a$;<br>$2)$ любая прямая, перпендикулярная прямой $a$, лежит в плоскости $\alpha$;<br>$3)$ прямая $a$ перпендикулярна любой прямой плоскости $\alpha$;<br>$4)$ через прямую $a$ проходит единственная плоскость, перпендикулярная плоскости $\alpha$;<br>$5)$ существует множество плоскостей, перпендикулярных прямой $a$;<br>$6)$ существует единственная прямая, параллельная прямой $a$ и перпендикулярная плоскости $\alpha$.`,
answer: '135',
sol: R`Верны утверждения $1$ (все прямые, перпендикулярные $\alpha$, параллельны между собой), $3$ ($a\perp\alpha$ означает перпендикулярность любой прямой плоскости) и $5$ (плоскостей, перпендикулярных $a$, бесконечно много). Утверждения $2,4,6$ неверны.`,
ref: 'Геометрия, 10 класс, разд. 2' },
{ idx: 21, type: 'open', topic: 'word-sequences', subtopic: 'word-problems', diff: 3,
text: R`В двух сосудах содержится $57$ л жидкости. Если 5 % жидкости из первого сосуда перелить во второй, то в обоих сосудах окажется одинаковое количество жидкости. Сколько литров жидкости было во втором сосуде первоначально?`,
answer: '27',
sol: R`Пусть в первом сосуде $a$ л, во втором $b$ л, $a+b=57$. После переливания: $0{,}95a=b+0{,}05a$, то есть $0{,}9a=b$. Тогда $a+0{,}9a=57$, $a=30$, $b=27$.`,
ref: 'Алгебра, 7 класс, гл. 3' },
{ idx: 22, type: 'open', topic: 'equations', subtopic: 'eq-irrational', diff: 3,
text: R`Найдите сумму корней (корень, если он единственный) уравнения $\sqrt{x^{2}-9x+8}-\sqrt{23-11x}=0$.`,
answer: '-5',
sol: R`$\sqrt{x^{2}-9x+8}=\sqrt{23-11x}$, поэтому $x^{2}-9x+8=23-11x$, $x^{2}+2x-15=0$, $x=3$ или $x=-5$. ОДЗ ($x\le\dfrac{23}{11}$ и $x^{2}-9x+8\ge0$) удовлетворяет лишь $x=-5$.`,
ref: 'Алгебра, 10 класс, гл. 2, § 17' },
{ idx: 23, type: 'open', topic: 'planimetry', subtopic: 'plan-quadrilaterals', diff: 4,
text: R`В трапеции $ABCD$ с основаниями $AD>BC$ точка пересечения её диагоналей делит диагональ $AC$ на отрезки длиной $6$ и $4$. Найдите площадь трапеции $ABCD$, если площадь треугольника $ABC$ равна $20$.`,
answer: '50',
sol: R`Из подобия $\dfrac{AD}{BC}=\dfrac{AO}{OC}=\dfrac64=\dfrac32$. Площадь $ABC=\dfrac12\,BC\cdot h=20$ ($h$ — высота трапеции), значит $BC\cdot h=40$. Площадь трапеции $\dfrac12(AD+BC)h=\dfrac12\left(\dfrac32 BC+BC\right)h=\dfrac54\,BC\cdot h=\dfrac54\cdot40=50$.`,
ref: 'Геометрия, 8 класс, гл. 4' },
{ idx: 24, type: 'open', topic: 'equations', subtopic: 'eq-rational', diff: 4,
text: R`Найдите произведение наибольшего целого решения на количество всех целых решений неравенства $\dfrac{x^{2}-x-20}{(x^{2}+4x)^{2}}\le0$.`,
answer: '40',
sol: R`После сокращения $\dfrac{(x-5)(x+4)}{x^{2}(x+4)^{2}}=\dfrac{x-5}{x^{2}(x+4)}\le0$. Так как $x^{2}>0$, знак определяет $\dfrac{x-5}{x+4}\le0$, то есть $-4<x\le5$, $x\ne0$. Целые решения $-3,-2,-1,1,2,3,4,5$ (всего $8$); наибольшее $5$. Произведение $5\cdot8=40$.`,
ref: 'Алгебра, 9 класс, гл. 3' },
{ idx: 25, type: 'open', topic: 'functions', subtopic: 'fn-properties', diff: 5,
text: R`Функция $y=f(x)$ определена на $\mathbb{R}$, нечётна, периодична с периодом $T=10$ и при $x\in[0;5]$ задаётся формулой $f(x)=3x^{2}-15x$. Найдите произведение абсцисс точек пересечения прямой $y=12$ и графика функции на промежутке $[-13;7]$.`,
answer: '-264',
sol: R`На $[0;5]$ значения $f$ не больше $0$, а на $[-5;0]$ (по нечётности $f(x)=-3x^{2}-15x$) уравнение $f(x)=12$ даёт $x=-1$ и $x=-4$. С учётом периода $10$ на $[-13;7]$ корни: $-11,-4,-1,6$. Произведение $(-11)(-4)(-1)\cdot6=-264$.`,
ref: 'Алгебра, 9 класс, гл. 2' },
{ idx: 26, type: 'open', topic: 'stereometry', subtopic: 'ster-polyhedra', diff: 4,
text: R`В основании пирамиды лежит прямоугольный треугольник, длина гипотенузы которого равна $6$, острый угол равен $30^\circ$. Каждая боковая грань пирамиды наклонена к плоскости основания под углом $\arccos\dfrac{\sqrt3}{10}$. Найдите площадь боковой поверхности пирамиды.`,
answer: '45',
sol: R`Катеты основания равны $3$ и $3\sqrt3$, площадь основания $S=\dfrac12\cdot3\cdot3\sqrt3=\dfrac{9\sqrt3}{2}$. При равном наклоне всех боковых граней площадь боковой поверхности равна $\dfrac{S}{\cos\varphi}=\dfrac{9\sqrt3/2}{\sqrt3/10}=45$.`,
ref: 'Геометрия, 11 класс, разд. 1' },
{ idx: 27, type: 'open', topic: 'equations', subtopic: 'eq-exponential', diff: 4,
text: R`Найдите увеличенную в $3$ раза сумму квадратов корней уравнения $\sqrt[5]{5^{\,2x^{2}+3x-5}}-\left(\sqrt{6-2\sqrt5}+1\right)^{2x}=0$.`,
answer: '18',
sol: R`$\sqrt{6-2\sqrt5}=\sqrt{(\sqrt5-1)^{2}}=\sqrt5-1$, поэтому $\left(\sqrt5-1+1\right)^{2x}=5^{x}$. Уравнение принимает вид $5^{(2x^{2}+3x-5)/5}=5^{x}$, то есть $2x^{2}-2x-5=0$. Сумма квадратов корней $(x_1+x_2)^{2}-2x_1x_2=1+5=6$; увеличенная в $3$ раза — $18$.`,
ref: 'Алгебра, 11 класс, гл. 2' },
{ idx: 28, type: 'open', topic: 'functions', subtopic: 'fn-properties', diff: 4,
text: R`Найдите сумму всех целых чисел из области определения функции $y=\dfrac{\sqrt[4]{56+9x-2x^{2}}}{\log_{\sqrt7}(x-3)}$.`,
answer: '26',
sol: R`Под корнем $56+9x-2x^{2}\ge0$: $-3{,}5\le x\le8$. Знаменатель: $x-3>0$ и $\log_{\sqrt7}(x-3)\ne0$, то есть $x>3$, $x\ne4$. Итого $x\in(3;8]$, $x\ne4$. Целые $5,6,7,8$; их сумма $26$.`,
ref: 'Алгебра, 11 класс, гл. 3' },
{ idx: 29, type: 'open', topic: 'word-sequences', subtopic: 'word-problems', diff: 5,
text: R`Двое рабочих различной квалификации выполнили работу. Первый проработал $3$ ч, прежде чем к нему присоединился второй. Если бы сначала второй работал $3$ ч, а затем к нему присоединился первый, то работа была бы закончена на $36$ мин позже. Первый рабочий шестую часть работы выполняет на $2$ ч быстрее, чем второй выполняет третью часть. Сколько минут заняло выполнение всей работы?`,
answer: '288',
sol: R`Пусть производительности $r_1,r_2$. Разность сценариев $\dfrac{3(r_1-r_2)}{r_1+r_2}=0{,}6$ даёт $r_1=1{,}5r_2$; условие $\dfrac{1/3}{r_2}-\dfrac{1/6}{r_1}=2$ даёт $r_2=\dfrac19$, $r_1=\dfrac16$. Тогда первый за $3$ ч выполнит половину, остальное вместе за $\dfrac{1/2}{5/18}=1{,}8$ ч; всего $4{,}8$ ч $=288$ мин.`,
ref: 'Алгебра, 9 класс, гл. 1' },
{ idx: 30, type: 'open', topic: 'stereometry', subtopic: 'ster-rotation', diff: 5,
text: R`Прямоугольный треугольник, длина гипотенузы которого равна $10$, а высота, проведённая к ней, равна $3$, вращается вокруг прямой, перпендикулярной гипотенузе и проходящей в плоскости треугольника через вершину большего острого угла. Найдите объём $V$ тела вращения и в ответ запишите значение выражения $\dfrac{V}{\pi}$.`,
answer: '110',
sol: R`Высота делит гипотенузу на отрезки $1$ и $9$ ($AD\cdot DB=3^{2}$). Больший острый угол — у вершины при меньшем отрезке. В координатах $A(0;0)$, $C(1;3)$, $B(10;0)$; ось вращения — прямая $x=0$ через $A$. По теореме Гульдина $V=2\pi\,x_{c}\,S$, где $x_{c}=\dfrac{0+1+10}{3}=\dfrac{11}{3}$, $S=15$. Тогда $V=2\pi\cdot\dfrac{11}{3}\cdot15=110\pi$, и $\dfrac{V}{\pi}=110$.`,
ref: 'Геометрия, 11 класс, разд. 2' },
];
/* ── Сборка 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_ct2019_v1 (${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), '\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_ct2019_v1.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 → «Варианты» → «ЦТ-2019».\n`);
} catch (e) {
db.exec('ROLLBACK');
console.error('\n✗ Ошибка записи, откат транзакции:', e.message);
process.exitCode = 1;
}
db.close();