Files
Learn_System/backend/scripts/seed_ctmath_ce2024_v1.js
T
Maxim Dolgolyov 5193fd8252 feat(ctmath): пробник ЦЭ-2024 Вариант 1 (вариант 111)
Актуальный формат экзамена: А1–А10 (8 mc + 2 open) + В1–В20 (1 long + 19 open).
Перенабор по PDF сборника РИКЗ; решений в источнике нет — решено вручную,
ВСЕ 30 ответов сверены с официальным ключом (стр.35, столбец Вариант 1).
Адаптации: А1 (точки на прямой) → равные промежутки в тексте; А6 (промежуток
на рисунке) → описан словами. Метка 111 (ЦЭ-2024) в VARIANT_LABEL.
Идемпотентный seed, --apply — пользователь.

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

370 lines
36 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_ce2024_v1.js
Чистый вариант-пробник для трека exam-prep `ctmath`.
Источник: Централизованный экзамен / ЦТ по математике, 2024 (сборник тестов
РИКЗ / «Аверсэв»), Вариант 1. АКТУАЛЬНЫЙ формат: Часть А = А1–А10 (закрытые,
5 вариантов), Часть В = В1–В20 (открытые). Всего 30 заданий. Перенабрано
вручную в KaTeX по PDF:
F:\!Рабочие\ЦТ\Математика\Математика\ЦТ-ЦЭ\ЦЭ-ЦТ-2024 МАТ.pdf
⚠️ В PDF РЕШЕНИЙ НЕТ (только задания). Решения и ответы получены вручную и
СВЕРЕНЫ с официальной таблицей ответов в конце сборника (стр. 35, столбец
«Вариант 1»). Все 30 ответов совпали. variant=111.
Адаптации заданий-«с-картинкой» (исходный ответ/идея сохранены):
• А1 (точки на координатной прямой) → равные промежутки заданы в тексте
(та же точка-ответ);
• А6 (изображённый числовой промежуток) → промежуток $(-6;9]$ описан
словами (ответ 24 сохранён).
Остальная геометрия закодирована текстом (как у РТ-вариантов 101–109).
Идемпотентность: upsert по UNIQUE(exam_key, variant, task_idx).
Запуск:
node backend/scripts/seed_ctmath_ce2024_v1.js # DRY-RUN (по умолчанию)
node backend/scripts/seed_ctmath_ce2024_v1.js --apply # запись в БД
⚠️ Массовую запись в БД запускает ПОЛЬЗОВАТЕЛЬ вручную. Без --apply ничего не пишется.
─────────────────────────────────────────────────────────────────────────── */
const { DatabaseSync } = require('node:sqlite');
const path = require('path');
const APPLY = process.argv.includes('--apply');
const EXAM = 'ctmath';
const VARIANT = 111;
const PROV = 'ЦЭ–2024, Вариант 1';
const R = String.raw;
const L = ['а', 'б', 'в', 'г', 'д'];
const mc = (...html) => html.map((h, i) => [L[i], h]);
/* ── 30 заданий ─────────────────────────────────────────────────────────── */
const TASKS = [
// ── Часть A: А1–А10 ──────────────────────────────────────────────────────
{ idx: 1, type: 'mc', topic: 'functions', subtopic: 'fn-graphs', diff: 1,
text: R`На координатной прямой точки $D$, $O$, $C$, $B$, $A$, $E$ идут в указанном порядке через равные промежутки; $O$ — начало отсчёта, а соседние точки отличаются по координате на $0{,}8$. Какой точке соответствует число $1{,}6$?`,
opts: mc('$A$', '$B$', '$C$', '$D$', '$E$'),
answer: 'б',
sol: R`От $O$ вправо: $C=0{,}8$, $B=1{,}6$, $A=2{,}4$. Числу $1{,}6$ соответствует точка $B$.`,
ref: 'Латотин «Математика, 6 кл.», гл. 5' },
{ idx: 2, type: 'mc', topic: 'stereometry', subtopic: 'ster-basics', diff: 2,
text: R`На рисунке изображена правильная четырёхугольная пирамида $SABCD$, точка $O$ — точка пересечения диагоналей основания $ABCD$. Среди прямых $BC$, $BD$, $SO$, $SB$, $SD$ укажите прямую, по которой пересекаются плоскости $DSO$ и $SCB$.`,
opts: mc('$BC$', '$BD$', '$SO$', '$SB$', '$SD$'),
answer: 'г',
sol: R`Точка $O$ лежит на диагонали $BD$, поэтому плоскость $DSO$ совпадает с плоскостью $SBD$. Плоскости $SBD$ и $SCB$ имеют общие точки $S$ и $B$, поэтому пересекаются по прямой $SB$.`,
ref: 'Латотин «Геометрия, 10 кл.», разд. 1, § 2' },
{ idx: 3, type: 'mc', topic: 'trigonometry', subtopic: 'trig-circle', diff: 1,
text: R`Среди значений аргумента, равных $-\dfrac{\pi}{6}$, $\dfrac{\pi}{4}$, $\dfrac{\pi}{3}$, $-\dfrac{3\pi}{2}$, $-6\pi$, укажите то, при котором значение функции $y=\sin x$ равно нулю.`,
opts: mc('$-\dfrac{\pi}{6}$', '$\dfrac{\pi}{4}$', '$\dfrac{\pi}{3}$', '$-\dfrac{3\pi}{2}$', '$-6\pi$'),
answer: 'д',
sol: R`$\sin x=0$ при $x=\pi n$, $n\in\mathbb{Z}$. Из данных значений этому условию удовлетворяет только $-6\pi$.`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 1, § 2' },
{ idx: 4, type: 'mc', topic: 'numbers', subtopic: 'num-divisibility', diff: 1,
text: R`Укажите номер формулы, по которой можно найти делимое $n$ при делении с остатком, если делитель $15$, неполное частное $k$, остаток $7$ ($n$ — натуральное число).`,
opts: mc('$n=15(k+7)$', '$n=k+22$', '$n=15k+7$', '$n=7k+15$', '$n=7(k+15)$'),
answer: 'в',
sol: R`При делении с остатком $n=q\cdot b+r$, где $b$ — делитель, $q$ — неполное частное, $r$ — остаток. Значит, $n=15k+7$.`,
ref: 'Герасимов «Математика, 5 кл.», ч. 1, гл. 1, § 11' },
{ idx: 5, type: 'mc', topic: 'equations', subtopic: 'eq-rational', diff: 2,
text: R`Укажите номер квадратного уравнения, произведение действительных корней которого равно $5$.`,
opts: mc('$x^{2}-6x+5=0$', '$x^{2}-4x+5=0$', '$x^{2}-5x+6=0$', '$x^{2}+5x=0$', '$x^{2}-5=0$'),
answer: 'а',
sol: R`По теореме Виета произведение корней приведённого уравнения равно свободному члену. Произведение $5$ имеют уравнения 1 и 2, но у уравнения $x^{2}-4x+5=0$ дискриминант отрицателен (действительных корней нет). Значит, подходит $x^{2}-6x+5=0$ ($D=16>0$).`,
ref: 'Арефьева «Алгебра, 8 кл.», гл. 2' },
{ idx: 6, type: 'open', topic: 'numbers', subtopic: 'num-real', diff: 2,
text: R`На координатной прямой изображён промежуток $(-6;9]$ (точка $-6$ не входит, точка $9$ входит). Укажите номера пар промежутков, объединением которых является этот промежуток.<br>1) $(-6;+\infty)$ и $(-6;9)$;<br>2) $(-6;0)$ и $[0;9]$;<br>3) $(-\infty;-6)$ и $(-\infty;9)$;<br>4) $(-6;9]$ и $(0;4)$;<br>5) $(-\infty;9]$ и $(-6;+\infty)$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
answer: '24', ansShow: '2, 4',
sol: R`$2)$ $(-6;0)\cup[0;9]=(-6;9]$ — верно. $\ 4)$ $(-6;9]\cup(0;4)=(-6;9]$ (так как $(0;4)\subset(-6;9]$) — верно. Остальные дают другие множества: 1) $(-6;+\infty)$; 3) $(-\infty;9)$; 5) $\mathbb{R}$. Подходят пары 2 и 4.`,
ref: 'Арефьева «Алгебра, 8 кл.», гл. 1, § 5' },
{ idx: 7, type: 'mc', topic: 'word-sequences', subtopic: 'word-problems', diff: 2,
text: R`Толя купил $3$ альбома и $5$ карандашей. Стоимость одного альбома равна $1$ р. $20$ к., а стоимость одного карандаша равна $25$ к. Какая сумма (в копейках) осталась у Толи после покупки альбомов и карандашей, если всего у него было $6$ р.?`,
opts: mc('$115$ к.', '$145$ к.', '$110$ к.', '$125$ к.', '$275$ к.'),
answer: 'а',
sol: R`Потрачено $3\cdot120+5\cdot25=360+125=485$ (к.). Осталось $600-485=115$ (к.).`,
ref: 'Герасимов «Математика, 5 кл.», ч. 1, гл. 2' },
{ idx: 8, type: 'mc', topic: 'trigonometry', subtopic: 'trig-circle', diff: 2,
text: R`Найдите значение выражения $\dfrac{38}{\pi}\cdot\arcsin(-1)-\left|-7\right|$.`,
opts: mc('$-16$', '$-12$', '$12$', '$26$', '$-26$'),
answer: 'д',
sol: R`$\arcsin(-1)=-\dfrac{\pi}{2}$, поэтому $\dfrac{38}{\pi}\cdot\left(-\dfrac{\pi}{2}\right)-7=-19-7=-26$.`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 1, § 7' },
{ idx: 9, type: 'mc', topic: 'stereometry', subtopic: 'ster-rotation', diff: 2,
text: R`Квадрат, длина диагонали которого равна $8$, лежит в плоскости $\alpha$. Сфера касается плоскости $\alpha$ в точке пересечения диагоналей квадрата. Найдите площадь сферы, если расстояние от центра сферы до вершины квадрата равно $4\sqrt2$.`,
opts: mc('$8\pi$', '$16\pi$', '$64\pi$', '$32\sqrt2\,\pi$', '$32\pi$'),
answer: 'в',
sol: R`Точка касания — центр квадрата; радиус сферы $R$ перпендикулярен плоскости. Расстояние от центра квадрата до вершины равно половине диагонали — $4$. Тогда $R^{2}+4^{2}=(4\sqrt2)^{2}=32$, $R^{2}=16$, $R=4$. Площадь сферы $S=4\pi R^{2}=64\pi$.`,
ref: 'Латотин «Геометрия, 11 кл.», разд. 3' },
{ idx: 10, type: 'open', topic: 'expressions', subtopic: 'expr-powers-roots', diff: 2,
text: R`Укажите номера выражений, которые имеют смысл при $a=-6$.<br>1) $\dfrac{1}{\sqrt[5]{a-6}}$;<br>2) $\sqrt{a^{5}}$;<br>3) $\sqrt[5]{a}$;<br>4) $\dfrac{1}{\sqrt[6]{a-6}}$;<br>5) $\sqrt[6]{a}$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
answer: '13', ansShow: '1, 3',
sol: R`При $a=-6$: $\ 1)$ $\sqrt[5]{-12}$ определён (нечётный корень) и не равен нулю — смысл есть. $\ 2)$ $\sqrt{(-6)^{5}}$ — корень чётной степени из отрицательного числа — нет смысла. $\ 3)$ $\sqrt[5]{-6}$ определён — смысл есть. $\ 4)$ $\sqrt[6]{-12}$ — нет смысла. $\ 5)$ $\sqrt[6]{-6}$ — нет смысла. Подходят 1 и 3.`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 2, § 14' },
// ── Часть B: В1–В20 ──────────────────────────────────────────────────────
{ idx: 11, type: 'open', topic: 'stereometry', subtopic: 'ster-angles-distances', diff: 3,
text: R`Дана прямая треугольная призма $ABCA_1B_1C_1$. Точка $M$ — середина ребра $AB$, $\angle ABC=90^\circ$. Выберите верные утверждения.<br>1) расстояние от точки $C_1$ до прямой $AB$ равно длине отрезка $BC_1$;<br>2) расстояние от точки $C_1$ до прямой $AB$ равно длине отрезка $C_1M$;<br>3) расстояние от точки $A$ до прямой $BC$ равно длине отрезка $AB$;<br>4) расстояние между прямыми $BB_1$ и $CC_1$ равно длине отрезка $BC_1$;<br>5) расстояние между прямыми $A_1B_1$ и $AB$ равно длине отрезка $AA_1$;<br>6) расстояние от точки $B$ до прямой $AC$ равно длине отрезка $BC$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
answer: '135', ansShow: '1, 3, 5',
sol: R`$1)$ верно: $AB\perp BC$ и $AB\perp BB_1$, поэтому $AB$ перпендикулярна плоскости $BB_1C_1C$, и расстояние от $C_1$ до $AB$ равно $BC_1$. $\ 2)$ неверно. $\ 3)$ верно: $BC\perp AB$, расстояние от $A$ до $BC$ равно $AB$. $\ 4)$ неверно: расстояние между $BB_1$ и $CC_1$ равно $BC$. $\ 5)$ верно: $A_1B_1\parallel AB$, расстояние равно боковому ребру $AA_1$. $\ 6)$ неверно. Подходят 1, 3, 5.`,
ref: 'Латотин «Геометрия, 10 кл.», разд. 3' },
{ idx: 12, type: 'long', topic: 'functions', subtopic: 'fn-properties', diff: 2,
text: R`Функция задана формулой $f(x)=x^{2}+4x-5$ на множестве действительных чисел. Для начала каждого из предложений А–В подберите его окончание 1–6 так, чтобы получилось верное утверждение.<br><b>Начало:</b><br>А) Сумма координат точки пересечения графика данной функции с осью ординат равна …<br>Б) Сумма нулей данной функции равна …<br>В) Наименьшее значение данной функции на области определения равно …<br><b>Окончание:</b><br>1) $9$;&emsp;2) $-4$;&emsp;3) $5$;&emsp;4) $-9$;&emsp;5) $-5$;&emsp;6) $4$.<br><i>Ответ запишите сочетанием букв и цифр, например: А1Б1В4.</i>`,
answer: 'А5Б2В4', ansShow: 'А5Б2В4',
sol: R`А) График пересекает ось ординат в точке $(0;f(0))=(0;-5)$; сумма координат $0+(-5)=-5$ — окончание 5. Б) Нули: $x^{2}+4x-5=0$, $x=1$ и $x=-5$; их сумма $-4$ — окончание 2. В) Наименьшее значение $f(-2)=4-8-5=-9$ — окончание 4.`,
ref: 'Арефьева «Алгебра, 8 кл.», гл. 3' },
{ idx: 13, type: 'open', topic: 'numbers', subtopic: 'num-divisibility', diff: 2,
text: R`Найдите сумму всех натуральных чисел, которые кратны $9$ и больше $141$, но меньше $170$.`,
answer: '459',
sol: R`Кратные $9$ в промежутке $(141;170)$: $144$, $153$, $162$. Их сумма $144+153+162=459$.`,
ref: 'Герасимов «Математика, 5 кл.», ч. 1, гл. 1' },
{ idx: 14, type: 'open', topic: 'trigonometry', subtopic: 'trig-identities', diff: 2,
text: R`Найдите значение выражения $\operatorname{ctg}^{2}\alpha$, если $\sin\alpha=\dfrac15$.`,
answer: '24',
sol: R`$\cos^{2}\alpha=1-\sin^{2}\alpha=1-\dfrac{1}{25}=\dfrac{24}{25}$. Тогда $\operatorname{ctg}^{2}\alpha=\dfrac{\cos^{2}\alpha}{\sin^{2}\alpha}=\dfrac{24/25}{1/25}=24$.`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 1, § 4' },
{ idx: 15, type: 'open', topic: 'planimetry', subtopic: 'plan-triangles', diff: 2,
text: R`Радиус окружности, описанной около прямоугольного треугольника $ABC$ ($\angle ABC=90^\circ$), равен $18\sqrt2$. Найдите значение выражения $90\cdot\cos\angle ACB$, если $BC=6\sqrt2$.`,
answer: '15',
sol: R`Гипотенуза $AC=2R=36\sqrt2$. $\cos\angle ACB=\dfrac{BC}{AC}=\dfrac{6\sqrt2}{36\sqrt2}=\dfrac16$. Тогда $90\cdot\dfrac16=15$.`,
ref: 'Казаков «Геометрия, 9 кл.», гл. 2' },
{ idx: 16, type: 'open', topic: 'word-sequences', subtopic: 'seq-progressions', diff: 2,
text: R`Пятый член геометрической прогрессии равен $48$, а шестой её член равен $96$. Найдите сумму четырёх первых членов этой прогрессии.`,
answer: '45',
sol: R`Знаменатель $q=\dfrac{96}{48}=2$. Из $b_5=b_1 q^{4}=48$: $b_1=\dfrac{48}{16}=3$. Сумма $S_4=\dfrac{b_1(q^{4}-1)}{q-1}=\dfrac{3(16-1)}{1}=45$.`,
ref: 'Арефьева «Алгебра, 9 кл.», гл. 4, § 18' },
{ idx: 17, type: 'open', topic: 'word-sequences', subtopic: 'word-problems', diff: 3,
text: R`Проездной билет на автобус на месяц стоит $39$ р., а стоимость билета на одну поездку на автобусе равна $80$ к. Сколько поездок на автобусе совершила Маша за месяц, покупая только билеты на одну поездку, если известно, что $75\%$ от суммы денег, которую она потратила за месяц на оплату поездок, равны стоимости проездного билета на месяц?`,
answer: '65',
sol: R`Пусть $n$ — число поездок. Потрачено $80n$ копеек; $39$ р. $=3900$ к. По условию $0{,}75\cdot80n=3900$, $60n=3900$, $n=65$.`,
ref: 'Герасимов «Математика, 6 кл.», гл. 2' },
{ idx: 18, type: 'open', topic: 'equations', subtopic: 'eq-linear', diff: 2,
text: R`Найдите сумму наименьшего и наибольшего целых решений двойного неравенства $-3\le2-\dfrac{3x-2}{2}<27$.`,
answer: '-11',
sol: R`Вычтем $2$: $-5\le-\dfrac{3x-2}{2}<25$. Умножим на $-2$ (знаки меняются): $10\ge3x-2>-50$, то есть $-48<3x\le12$, $-16<x\le4$. Целые решения $-15,\ldots,4$; сумма наименьшего и наибольшего $-15+4=-11$.`,
ref: 'Арефьева «Алгебра, 8 кл.», гл. 1, § 6' },
{ idx: 19, type: 'open', topic: 'functions', subtopic: 'fn-properties', diff: 3,
text: R`Функция $y=f(x)$ определена на множестве действительных чисел, точки $A\left(3;-\dfrac23\right)$ и $B\left(6;-\dfrac34\right)$ принадлежат графику данной функции. Найдите значение выражения $6f(-3)+8f(-6)$, если известно, что график функции $y=f(x)$ симметричен относительно оси ординат.`,
answer: '-10',
sol: R`График симметричен относительно оси ординат, поэтому функция чётная: $f(-3)=f(3)=-\dfrac23$, $f(-6)=f(6)=-\dfrac34$. Тогда $6\cdot\left(-\dfrac23\right)+8\cdot\left(-\dfrac34\right)=-4-6=-10$.`,
ref: 'Арефьева «Алгебра, 9 кл.», гл. 2' },
{ idx: 20, type: 'open', topic: 'planimetry', subtopic: 'plan-circle', diff: 3,
text: R`Радиус окружности, вписанной в правильный шестиугольник, равен $7\sqrt3$. Найдите значение выражения $\dfrac{S}{\sqrt3}$, где $S$ — площадь правильного шестиугольника.`,
answer: '294',
sol: R`Для правильного шестиугольника радиус вписанной окружности $r=\dfrac{\sqrt3}{2}a$, откуда сторона $a=\dfrac{2r}{\sqrt3}=\dfrac{2\cdot7\sqrt3}{\sqrt3}=14$. Площадь $S=\dfrac{3\sqrt3}{2}a^{2}=\dfrac{3\sqrt3}{2}\cdot196=294\sqrt3$. Тогда $\dfrac{S}{\sqrt3}=294$.`,
ref: 'Казаков «Геометрия, 9 кл.», гл. 1' },
{ idx: 21, type: 'open', topic: 'equations', subtopic: 'eq-logarithmic', diff: 3,
text: R`Найдите произведение корней уравнения $\log_2^{2}x-2\log_2 x=\log_2 24-\log_2 3$. В ответ запишите найденное произведение, увеличенное в $11$ раз.`,
answer: '44',
sol: R`Правая часть $\log_2\dfrac{24}{3}=\log_2 8=3$. Пусть $u=\log_2 x$: $u^{2}-2u-3=0$, $u=3$ или $u=-1$. Тогда $x=8$ или $x=\dfrac12$. Произведение корней $8\cdot\dfrac12=4$; увеличенное в $11$ раз — $44$.`,
ref: 'Арефьева «Алгебра, 11 кл.», гл. 3, § 9' },
{ idx: 22, type: 'open', topic: 'numbers', subtopic: 'num-divisibility', diff: 3,
text: R`Дана правильная несократимая дробь. При делении её знаменателя на числитель неполное частное равно $8$, а остаток равен $3$. Если числитель дроби увеличить на $75\%$, то полученная дробь будет равна $\dfrac15$. Найдите наименьшее общее кратное числителя и знаменателя исходной дроби.`,
answer: '140',
sol: R`Пусть числитель $c$, знаменатель $d$. Тогда $d=8c+3$. Условие $\dfrac{1{,}75c}{d}=\dfrac15$ даёт $d=5\cdot1{,}75c=8{,}75c$. Из $8{,}75c=8c+3$: $0{,}75c=3$, $c=4$, $d=35$. Дробь $\dfrac{4}{35}$; числа $4$ и $35$ взаимно просты, поэтому их наименьшее общее кратное равно $4\cdot35=140$.`,
ref: 'Герасимов «Математика, 5 кл.», ч. 1, гл. 1' },
{ idx: 23, type: 'open', topic: 'stereometry', subtopic: 'ster-rotation', diff: 3,
text: R`Цилиндр пересечён плоскостью, параллельной оси цилиндра, так, что в сечении получился квадрат площадью $100$. Найдите значение выражения $\dfrac{S}{\pi}$, где $S$ — площадь боковой поверхности цилиндра, если расстояние от оси цилиндра до плоскости сечения равно $\sqrt{39}$.`,
answer: '160',
sol: R`Сторона квадрата $10$, поэтому высота цилиндра $h=10$ и хорда сечения равна $10$. Половина хорды $5$, расстояние до оси $\sqrt{39}$, поэтому радиус $r=\sqrt{39+25}=8$. Площадь боковой поверхности $S=2\pi rh=2\pi\cdot8\cdot10=160\pi$. Тогда $\dfrac{S}{\pi}=160$.`,
ref: 'Латотин «Геометрия, 11 кл.», разд. 1, § 2' },
{ idx: 24, type: 'open', topic: 'equations', subtopic: 'eq-exponential', diff: 3,
text: R`Найдите наименьшее целое решение неравенства $8^{\,2x-32}+10\cdot4^{\,3x-49}>56$.`,
answer: '17',
sol: R`$8^{\,2x-32}=2^{\,6x-96}$, $4^{\,3x-49}=2^{\,6x-98}$. Неравенство: $2^{\,6x-98}(2^{2}+10)>56$, $14\cdot2^{\,6x-98}>56$, $2^{\,6x-98}>4=2^{2}$, $6x-98>2$, $x>\dfrac{100}{6}$. Наименьшее целое решение $17$.`,
ref: 'Арефьева «Алгебра, 11 кл.», гл. 2, § 6' },
{ idx: 25, type: 'open', topic: 'trigonometry', subtopic: 'trig-equations', diff: 4,
text: R`Найдите (в градусах) сумму различных корней уравнения $2\sin3x\cos3x-\sin6x\sin10x=0$ на промежутке $(-150^\circ;-55^\circ)$.`,
answer: '-567',
sol: R`$2\sin3x\cos3x=\sin6x$, поэтому $\sin6x(1-\sin10x)=0$. Из $\sin6x=0$: $x=30^\circ n$ — на промежутке корни $-120^\circ,-90^\circ,-60^\circ$. Из $\sin10x=1$: $x=9^\circ+36^\circ n$ — корни $-135^\circ,-99^\circ,-63^\circ$. Сумма всех различных корней: $-120-90-60-135-99-63=-567$.`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 1, § 8' },
{ idx: 26, type: 'open', topic: 'equations', subtopic: 'eq-logarithmic', diff: 4,
text: R`Найдите произведение наименьшего целого решения на наибольшее целое решение неравенства $\log_3^{2}(x+12)-\log_3(x+12)-6<0$.`,
answer: '-154',
sol: R`Пусть $u=\log_3(x+12)$: $u^{2}-u-6<0$, $(u-3)(u+2)<0$, $-2<u<3$. Тогда $3^{-2}<x+12<3^{3}$, $\dfrac19<x+12<27$, $-11\dfrac89<x<15$. Целые решения от $-11$ до $14$; произведение наименьшего и наибольшего $-11\cdot14=-154$.`,
ref: 'Арефьева «Алгебра, 11 кл.», гл. 3, § 10' },
{ idx: 27, type: 'open', topic: 'stereometry', subtopic: 'ster-polyhedra', diff: 3,
text: R`Плоскость, параллельная основанию треугольной пирамиды, делит её высоту в отношении $5:3$, если считать от вершины пирамиды. Найдите площадь сечения пирамиды данной плоскостью, если она меньше площади основания пирамиды на $39$.`,
answer: '25',
sol: R`Сечение подобно основанию с коэффициентом $\dfrac{5}{5+3}=\dfrac58$, поэтому отношение площадей $\left(\dfrac58\right)^{2}=\dfrac{25}{64}$. Пусть площадь основания $S_0$: $S_0-\dfrac{25}{64}S_0=39$, $\dfrac{39}{64}S_0=39$, $S_0=64$. Площадь сечения $\dfrac{25}{64}\cdot64=25$.`,
ref: 'Латотин «Геометрия, 10 кл.», разд. 1, § 4' },
{ idx: 28, type: 'open', topic: 'equations', subtopic: 'eq-irrational', diff: 3,
text: R`Найдите сумму корней (корень, если он единственный) уравнения $\sqrt[8]{2x^{2}-20x+32}-\sqrt[8]{76-23x}=0$. В ответ запишите полученный результат, увеличенный в $6$ раз.`,
answer: '-33',
sol: R`Уравнение равносильно $2x^{2}-20x+32=76-23x$ при условии $76-23x\ge0$. Получаем $2x^{2}+3x-44=0$, $x=4$ или $x=-\dfrac{11}{2}$. Условие $x\le\dfrac{76}{23}\approx3{,}3$ выполняется только для $x=-\dfrac{11}{2}$. Сумма корней $-\dfrac{11}{2}$; увеличенная в $6$ раз — $-33$.`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 2, § 17' },
{ idx: 29, type: 'open', topic: 'functions', subtopic: 'fn-derivative', diff: 4,
text: R`Дана функция $f(x)=-\dfrac{x^{4}}{4}+2x^{3}+10x^{2}+\lg4$. Найдите значение выражения $a\cdot n$, где $a$ — наибольшее целое отрицательное число из промежутков возрастания данной функции, $n$ — количество всех натуральных чисел из промежутков возрастания данной функции.`,
answer: '-24',
sol: R`$f'(x)=-x^{3}+6x^{2}+20x=-x\left(x^{2}-6x-20\right)$. Корни $x=0$ и $x=3\pm\sqrt{29}$ ($3-\sqrt{29}\approx-2{,}39$, $3+\sqrt{29}\approx8{,}39$). Функция возрастает на $\left(-\infty;3-\sqrt{29}\right]$ и $\left[0;3+\sqrt{29}\right]$. Наибольшее целое отрицательное из них $a=-3$, натуральные числа из них — $1,\ldots,8$, то есть $n=8$. Тогда $a\cdot n=-24$.`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 3, § 20' },
{ idx: 30, type: 'open', topic: 'stereometry', subtopic: 'ster-angles-distances', diff: 5,
text: R`$ABCDA_1B_1C_1D_1$ — прямой параллелепипед, объём которого равен $\dfrac{5\sqrt7}{2}$. Длины сторон $AB$ и $BC$ основания $ABCD$ равны $\sqrt7$ и $\sqrt2$ соответственно, косинус угла $ABC$ равен $-\dfrac{\sqrt{14}}{8}$. На рёбрах $AA_1$ и $A_1B_1$ взяты точки $M$ и $N$ соответственно, такие, что $AM:MA_1=4:1$, $A_1N:NB_1=1:4$. Найдите значение выражения $8\sqrt{66}\cdot\cos\varphi$, где $\varphi$ — угол между прямыми $MN$ и $BC_1$.`,
answer: '46',
sol: R`$\sin\angle ABC=\sqrt{1-\dfrac{14}{64}}=\dfrac{5\sqrt2}{8}$, площадь основания $AB\cdot BC\cdot\sin\angle ABC=\sqrt7\cdot\sqrt2\cdot\dfrac{5\sqrt2}{8}=\dfrac{5\sqrt7}{4}$. Из объёма $\dfrac{5\sqrt7}{2}$ высота $AA_1=2$. Введём координаты: $B(0;0;0)$, $C(\sqrt2;0;0)$, $A\left(-\dfrac{7\sqrt2}{8};\dfrac{5\sqrt{14}}{8};0\right)$, вертикаль — ось $z$. Тогда $M=A+(0;0;\tfrac85)$, $N=\left(-\dfrac{7\sqrt2}{10};\dfrac{\sqrt{14}}{2};2\right)$, $\vec{MN}=\left(\dfrac{7\sqrt2}{40};-\dfrac{\sqrt{14}}{8};\dfrac25\right)$, $\vec{BC_1}=(\sqrt2;0;2)$. Тогда $\vec{MN}\cdot\vec{BC_1}=\dfrac{23}{20}$, $|\vec{BC_1}|=\sqrt6$, $|\vec{MN}|=\dfrac{\sqrt{11}}{5}$, поэтому $\cos\varphi=\dfrac{23}{4\sqrt{66}}$ и $8\sqrt{66}\cos\varphi=46$.`,
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_ce2024_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_ce2024_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 → «Варианты» → «ЦЭ-2024».\n`);
} catch (e) {
db.exec('ROLLBACK');
console.error('\n✗ Ошибка записи, откат транзакции:', e.message);
process.exitCode = 1;
}
db.close();