Files
Learn_System/backend/scripts/seed_ctmath_rt2324_e2v1.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

365 lines
35 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_e2v1.js
Чистый вариант-пробник для трека exam-prep `ctmath`.
Источник: РТ–2023/2024, Этап II, Вариант 1 (РИКЗ, «Тематическое
консультирование по математике»). 30 заданий: А1–А10 + В1–В20.
Перенабрано вручную в KaTeX по PDF (визуальное чтение, НЕ OCR):
F:\!Рабочие\ЦТ\Математика\Математика\РТ\2023-2024\МАТ РТ-2 23_24 В1.pdf
variant=105 — Этап II РТ-2023/24 (этап I — 104, этап III — 106).
Геометрия закодирована текстом (стандартная разметка фигур / углы словами) —
отдельных чертежей не требуется (как у большинства существующих задач).
Идемпотентность: upsert по UNIQUE(exam_key, variant, task_idx).
Запуск:
node backend/scripts/seed_ctmath_rt2324_e2v1.js # DRY-RUN (по умолчанию)
node backend/scripts/seed_ctmath_rt2324_e2v1.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 = 105;
const PROV = 'РТ–2023/2024, Этап II, Вариант 1';
const R = String.raw;
/* opts: метки кириллица а–д (как в существующих строках ctmath; checkAnswerServer
имеет ветку /^[а-д]$/). РТ-варианты 1..5 → а..д. */
const L = ['а', 'б', 'в', 'г', 'д'];
const mc = (...html) => html.map((h, i) => [L[i], h]);
/* ── 30 заданий ─────────────────────────────────────────────────────────── */
const TASKS = [
// ── Часть A: А1–А10 ──────────────────────────────────────────────────────
{ idx: 1, type: 'mc', topic: 'stereometry', subtopic: 'ster-basics', diff: 2,
text: R`Дана треугольная пирамида $SABC$. Точка $K$ принадлежит ребру $SC$. Среди прямых $SB$, $AK$, $SC$, $BK$, $BA$ укажите прямую, по которой пересекаются плоскости $BKA$ и $SBC$.`,
opts: mc('$SB$', '$AK$', '$SC$', '$BK$', '$BA$'),
answer: 'г',
sol: R`Точка $K$ лежит на ребре $SC$, поэтому она принадлежит плоскости $SBC$. Точки $B$ и $K$ принадлежат обеим плоскостям $BKA$ и $SBC$, значит, плоскости пересекаются по прямой $BK$.`,
ref: 'Геометрия, 10 класс, разд. 1, § 2' },
{ idx: 2, type: 'mc', topic: 'functions', subtopic: 'fn-properties', diff: 2,
text: R`Наименьшим целым числом, принадлежащим области определения функции $y=\log_5(x+6)$, является число:`,
opts: mc('$-7$', '$-6$', '$-5$', '$-1$', '$0$'),
answer: 'в',
sol: R`Логарифмическая функция $y=\log_5 t$ определена при $t>0$, поэтому $x+6>0$, то есть $x>-6$ и $D(y)=(-6;+\infty)$. Наименьшее целое число из этого промежутка — $-5$.`,
ref: 'Алгебра, 11 класс, гл. 3, § 8' },
{ idx: 3, type: 'mc', topic: 'equations', subtopic: 'eq-linear', diff: 1,
text: R`Укажите номер числового промежутка, который является решением неравенства $x\ge-10$.`,
opts: mc('$(-10;+\infty)$', '$[-10;+\infty)$', '$(-\infty;-10]$', '$(-\infty;-10)$', '$[-10;0)$'),
answer: 'б',
sol: R`Решением неравенства $x\ge-10$ является числовой луч $[-10;+\infty)$.`,
ref: 'Алгебра, 8 класс, гл. 1, § 56' },
{ idx: 4, type: 'mc', topic: 'functions', subtopic: 'fn-graphs', diff: 1,
text: R`Укажите номер функции, графиком которой является гипербола.`,
opts: mc('$f(x)=-x^{2}+7$', '$f(x)=x^{3}$', '$f(x)=|x|-7$', '$f(x)=-\dfrac{x}{7}$', '$f(x)=-\dfrac{7}{x}$'),
answer: 'д',
sol: R`Графиком обратной пропорциональности $y=\dfrac{k}{x}$ ($k\ne0$) является гипербола. Среди предложенных функций обратную пропорциональность задаёт только $f(x)=-\dfrac{7}{x}$.`,
ref: 'Алгебра, 8 класс, гл. 3, § 13' },
{ idx: 5, type: 'mc', topic: 'equations', subtopic: 'eq-rational', diff: 2,
text: R`Укажите номер уравнения, равносильного уравнению $x=6$.`,
opts: mc('$\sqrt{x-5}=1$', '$\log_6 x=0$', '$x^{2}=6$', '$x+6=0$', '$6^{x}=36$'),
answer: 'а',
sol: R`Уравнения равносильны, если имеют одно и то же множество корней. Уравнение $\sqrt{x-5}=1$ даёт $x-5=1$, то есть $x=6$ — то же множество корней. (Остальные: $\log_6 x=0\Rightarrow x=1$; $x^{2}=6\Rightarrow x=\pm\sqrt6$; $x+6=0\Rightarrow x=-6$; $6^{x}=36\Rightarrow x=2$.)`,
ref: 'Алгебра, 7 класс, гл. 3, § 15' },
{ idx: 6, type: 'open', topic: 'numbers', subtopic: 'num-real', diff: 2,
text: R`Укажите номера верных неравенств.<br>1) $\sqrt5<2$;<br>2) $3<2\sqrt3$;<br>3) $\sqrt{(-4)^{2}}<-3$;<br>4) $0{,}82>\sqrt{0{,}81}$;<br>5) $\sqrt{(-5)^{2}}>\sqrt{(-3)^{2}}$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
answer: '25', ansShow: '2, 5',
sol: R`$1)$ неверно: возведя в квадрат, получим ложное $5<4$. $\ 2)$ верно: $9<12$. $\ 3)$ неверно: $\sqrt{(-4)^{2}}=4$, а $4<-3$ ложно. $\ 4)$ неверно: $\sqrt{0{,}81}=0{,}9$, а $0{,}82>0{,}9$ ложно. $\ 5)$ верно: $\sqrt{(-5)^{2}}=5$, $\sqrt{(-3)^{2}}=3$, и $5>3$.`,
ref: 'Алгебра, 8 класс, гл. 1, § 14' },
{ idx: 7, type: 'mc', topic: 'word-sequences', subtopic: 'word-problems', diff: 2,
text: R`Найдите расстояние (в километрах) между двумя посёлками, если $\dfrac49$ этого расстояния на $10$ км меньше всего расстояния между ними.`,
opts: mc('$22{,}5$', '$20$', '$15$', '$24$', '$18$'),
answer: 'д',
sol: R`Числу $10$ соответствует дробь $1-\dfrac49=\dfrac59$ всего расстояния. Тогда расстояние равно $10:\dfrac59=\dfrac{10\cdot9}{5}=18$ (км).`,
ref: 'Математика, 5 класс, ч. 2, гл. 3, § 10' },
{ idx: 8, type: 'mc', topic: 'stereometry', subtopic: 'ster-rotation', diff: 2,
text: R`Радиус основания конуса равен $7$. Если осевым сечением конуса является равносторонний треугольник, то образующая конуса равна:`,
opts: mc('$7$', '$3{,}5$', '$14$', '$6$', '$7\sqrt2$'),
answer: 'в',
sol: R`Осевое сечение конуса — равнобедренный треугольник с основанием, равным диаметру, и боковыми сторонами, равными образующим. Если это равносторонний треугольник, то образующая равна диаметру основания, то есть $2\cdot7=14$.`,
ref: 'Геометрия, 11 класс, разд. 2, § 4' },
{ idx: 9, type: 'mc', topic: 'trigonometry', subtopic: 'trig-identities', diff: 2,
text: R`Найдите значение выражения $\sqrt6\cdot\cos(-135^\circ)$.`,
opts: mc('$\dfrac{3\sqrt2}{2}$', '$-\sqrt3$', '$-\dfrac{3\sqrt2}{2}$', '$-\dfrac{\sqrt6}{2}$', '$\sqrt3$'),
answer: 'б',
sol: R`$\sqrt6\cdot\cos(-135^\circ)=\sqrt6\cdot\cos135^\circ=\sqrt6\cdot\cos(180^\circ-45^\circ)=-\sqrt6\cdot\cos45^\circ=-\sqrt6\cdot\dfrac{\sqrt2}{2}=-\sqrt3.$`,
ref: 'Алгебра, 10 класс, гл. 1, § 2; § 9' },
{ idx: 10, type: 'open', topic: 'expressions', subtopic: 'expr-powers-roots', diff: 2,
text: R`Укажите номера выражений, которые не имеют смысла при $x=-5$.<br>1) $\sqrt{x-5}$;<br>2) $\dfrac{1}{\sqrt{5-x}}$;<br>3) $\dfrac{1}{\sqrt{x+5}}$;<br>4) $\sqrt{-x-5}$;<br>5) $\sqrt{x+5}$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
answer: '13', ansShow: '1, 3',
sol: R`$1)$ $\sqrt{x-5}$ имеет смысл при $x\ge5$; число $-5$ не входит — нет смысла. $\ 2)$ $\dfrac{1}{\sqrt{5-x}}$ имеет смысл при $x<5$ — смысл есть. $\ 3)$ $\dfrac{1}{\sqrt{x+5}}$ имеет смысл при $x>-5$; число $-5$ не входит — нет смысла. $\ 4)$ $\sqrt{-x-5}$ имеет смысл при $x\le-5$ — смысл есть. $\ 5)$ $\sqrt{x+5}$ имеет смысл при $x\ge-5$ — смысл есть.`,
ref: 'Алгебра, 7 класс, гл. 2, § 4' },
// ── Часть B: В1–В20 ──────────────────────────────────────────────────────
{ idx: 11, type: 'open', topic: 'planimetry', subtopic: 'plan-triangles', diff: 3,
text: R`Дан прямоугольный треугольник $ABC$ ($\angle ABC=90^\circ$), в котором катет $AB=\sqrt7$, катет $BC=\sqrt2$. Выберите верные утверждения.<br>1) площадь треугольника $ABC$ равна $\sqrt{14}$;<br>2) косинус угла $ACB$ равен $\dfrac{\sqrt2}{3}$;<br>3) синус угла $BAC$ равен $\dfrac{\sqrt7}{3}$;<br>4) тангенс угла $ACB$ равен $\dfrac{\sqrt{14}}{7}$;<br>5) котангенс угла $BAC$ равен $\dfrac{\sqrt{14}}{2}$;<br>6) радиус окружности, описанной около треугольника $ABC$, равен $1{,}5$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
answer: '256', ansShow: '2, 5, 6',
sol: R`По теореме Пифагора $AC=\sqrt{AB^{2}+BC^{2}}=\sqrt{7+2}=3$. $\ 1)$ неверно: $S=\dfrac12\cdot\sqrt7\cdot\sqrt2=\dfrac{\sqrt{14}}{2}$. $\ 2)$ верно: $\cos\angle ACB=\dfrac{BC}{AC}=\dfrac{\sqrt2}{3}$. $\ 3)$ неверно: $\sin\angle BAC=\dfrac{BC}{AC}=\dfrac{\sqrt2}{3}$. $\ 4)$ неверно: $\operatorname{tg}\angle ACB=\dfrac{AB}{BC}=\dfrac{\sqrt7}{\sqrt2}=\dfrac{\sqrt{14}}{2}$. $\ 5)$ верно: $\operatorname{ctg}\angle BAC=\dfrac{AB}{BC}=\dfrac{\sqrt{14}}{2}$. $\ 6)$ верно: радиус описанной около прямоугольного треугольника окружности равен половине гипотенузы, то есть $1{,}5$.`,
ref: 'Геометрия, 8 класс, гл. 2, § 1516' },
{ idx: 12, type: 'long', topic: 'functions', subtopic: 'fn-properties', diff: 2,
text: R`Для начала каждого из предложений А–В подберите его окончание 1–6 так, чтобы получилось верное утверждение.<br><b>Начало:</b><br>А) Если функция $y=f(x)$ является чётной и $f(6)=-5$, то $f(-6)$ равно …<br>Б) Если функция $y=g(x)$ является нечётной и $g(-3)=2$, то $g(3)$ равно …<br>В) Если функция $y=h(x)$ является чётной и $h(1)=2$, а функция $y=p(x)$ является нечётной и $p(1)=15$, то значение выражения $h(-1)\cdot p(-1)$ равно …<br><b>Окончание:</b><br>1) $30$;&emsp;2) $5$;&emsp;3) $-2$;&emsp;4) $2$;&emsp;5) $-30$;&emsp;6) $-5$.<br><i>Ответ запишите сочетанием букв и цифр, например: А1Б1В4.</i>`,
answer: 'А6Б3В5', ansShow: 'А6Б3В5',
sol: R`А) Для чётной функции $f(-x)=f(x)$, поэтому $f(-6)=f(6)=-5$ — окончание 6. Б) Для нечётной функции $g(-x)=-g(x)$, поэтому $g(3)=-g(-3)=-2$ — окончание 3. В) $h(-1)=h(1)=2$, $p(-1)=-p(1)=-15$, тогда $h(-1)\cdot p(-1)=2\cdot(-15)=-30$ — окончание 5.`,
ref: 'Алгебра, 9 класс, гл. 2, § 8' },
{ idx: 13, type: 'open', topic: 'numbers', subtopic: 'num-divisibility', diff: 2,
text: R`Наибольшее натуральное число, которое при делении на $16$ с остатком даёт неполное частное, равное $6$, равно …`,
answer: '111',
sol: R`При делении с остатком на $16$ наибольший возможный остаток равен $15$. По формуле $a=q\cdot b+r$ получаем наибольшее число $16\cdot6+15=111$.`,
ref: 'Математика, 5 класс, ч. 1, гл. 1, § 11' },
{ idx: 14, type: 'open', topic: 'expressions', subtopic: 'expr-powers-roots', diff: 2,
text: R`Найдите значение выражения $5^{\,1+2\log_5 8}$.`,
answer: '320',
sol: R`$5^{\,1+2\log_5 8}=5\cdot\left(5^{\log_5 8}\right)^{2}=5\cdot8^{2}=5\cdot64=320.$`,
ref: 'Алгебра, 11 класс, гл. 1, § 3; гл. 3, § 7' },
{ idx: 15, type: 'open', topic: 'stereometry', subtopic: 'ster-polyhedra', diff: 3,
text: R`Длина ребра основания правильной треугольной призмы $ABCA_1B_1C_1$ относится к длине бокового ребра как $12:5$. Найдите длину $l$ замкнутой ломаной $BCA_1AB$, если длина бокового ребра равна $5\sqrt6$. В ответ запишите значение выражения $l\cdot\sqrt6$.`,
answer: '252',
sol: R`Боковое ребро $A_1A=5\sqrt6$, тогда из отношения $\dfrac{AB}{5\sqrt6}=\dfrac{12}{5}$ находим ребро основания $AB=BC=AC=12\sqrt6$. Диагональ боковой грани $CA_1=\sqrt{AC^{2}+A_1A^{2}}=\sqrt{(12\sqrt6)^{2}+(5\sqrt6)^{2}}=\sqrt{864+150}=\sqrt{1014}=13\sqrt6$. Замкнутая ломаная $BCA_1AB$ равна $BC+CA_1+A_1A+AB=12\sqrt6+13\sqrt6+5\sqrt6+12\sqrt6=42\sqrt6$, то есть $l=42\sqrt6$. Тогда $l\cdot\sqrt6=42\cdot6=252$.`,
ref: 'Геометрия, 10 класс, разд. 1, § 1–2' },
{ idx: 16, type: 'open', topic: 'word-sequences', subtopic: 'word-problems', diff: 2,
text: R`Проездной билет на месяц стоит $42$ рубля, а стоимость билета на одну поездку составляет $2\%$ от стоимости проездного билета на месяц. Какую сумму (в рублях) сэкономил Витя, если он купил проездной билет на месяц и сделал по нему за месяц $75$ поездок?`,
answer: '21',
sol: R`Стоимость билета на одну поездку равна $42\cdot0{,}02=0{,}84$ рубля. За $75$ поездок без проездного Витя заплатил бы $75\cdot0{,}84=63$ рубля. Таким образом, он сэкономил $63-42=21$ рубль.`,
ref: 'Математика, 6 класс, гл. 2, § 12' },
{ idx: 17, type: 'open', topic: 'word-sequences', subtopic: 'seq-progressions', diff: 2,
text: R`Найдите сумму бесконечно убывающей геометрической прогрессии, у которой второй член равен $14$, а знаменатель равен $\dfrac23$.`,
answer: '63',
sol: R`Первый член $b_1=\dfrac{b_2}{q}=\dfrac{14}{2/3}=21$. По формуле суммы бесконечно убывающей прогрессии $S=\dfrac{b_1}{1-q}=\dfrac{21}{1-\frac23}=\dfrac{21}{1/3}=63.$`,
ref: 'Алгебра, 9 класс, гл. 4, § 19' },
{ idx: 18, type: 'open', topic: 'expressions', subtopic: 'expr-polynomials', diff: 2,
text: R`Найдите значение выражения $\left(0{,}6\sqrt{x}+\sqrt[4]{y}\right)^{2}-\left(0{,}6\sqrt{x}-\sqrt[4]{y}\right)^{2}$ при $x=300$, $y=9$.`,
answer: '72',
sol: R`По формуле разности квадратов выражение равно $\left(0{,}6\sqrt{x}+\sqrt[4]{y}+0{,}6\sqrt{x}-\sqrt[4]{y}\right)\left(0{,}6\sqrt{x}+\sqrt[4]{y}-0{,}6\sqrt{x}+\sqrt[4]{y}\right)=1{,}2\sqrt{x}\cdot2\sqrt[4]{y}=2{,}4\sqrt{x}\,\sqrt[4]{y}$. При $x=300$, $y=9$: $2{,}4\sqrt{300}\,\sqrt[4]{9}=2{,}4\cdot10\sqrt3\cdot\sqrt3=2{,}4\cdot10\cdot3=72.$`,
ref: 'Алгебра, 7 класс, гл. 2, § 1213' },
{ idx: 19, type: 'open', topic: 'equations', subtopic: 'eq-linear', diff: 2,
text: R`Найдите наибольшее целое решение совокупности неравенств $\left[\begin{array}{l}3x+10<0,\\[2pt]-\dfrac12\,x-3>0.\end{array}\right.$`,
answer: '-4',
sol: R`$3x+10<0\Rightarrow x<-\dfrac{10}{3}=-3\dfrac13$; $\ -\dfrac12x-3>0\Rightarrow x<-6$. Объединение открытых лучей есть множество $x\in\left(-\infty;-3\dfrac13\right)$. Наибольшее целое решение равно $-4$.`,
ref: 'Алгебра, 8 класс, гл. 1, § 6' },
{ idx: 20, type: 'open', topic: 'planimetry', subtopic: 'plan-quadrilaterals', diff: 3,
text: R`В трапеции $ABCD$ основания $BC$ и $AD$ равны $16$ и $18$ соответственно. Диагонали трапеции пересекаются в точке $O$, причём $OA=9$. Найдите длину диагонали $AC$.`,
answer: '17',
sol: R`Треугольники $AOD$ и $COB$ подобны по двум углам ($\angle AOD=\angle COB$ как вертикальные, $\angle OAD=\angle OCB$ как накрест лежащие при $BC\parallel AD$ и секущей $AC$). Из подобия $\dfrac{BC}{AD}=\dfrac{CO}{AO}$, то есть $\dfrac{16}{18}=\dfrac{CO}{9}$, откуда $CO=8$. Тогда $AC=AO+CO=9+8=17.$`,
ref: 'Геометрия, 8 класс, гл. 1, § 1011; гл. 3, § 21' },
{ idx: 21, type: 'open', topic: 'expressions', subtopic: 'expr-powers-roots', diff: 3,
text: R`Найдите сумму всех целых значений переменной $x$, при которых имеет смысл выражение $\sqrt{12x-x^{2}}+\dfrac{x}{\sqrt{(x+2)(9-x)}}$.`,
answer: '36',
sol: R`Выражение имеет смысл при $\begin{cases}12x-x^{2}\ge0,\\(x+2)(9-x)>0.\end{cases}$ Первое неравенство даёт $x\in[0;12]$, второе — $x\in(-2;9)$. Пересечение — полуинтервал $[0;9)$. Сумма всех целых из него: $0+1+2+\ldots+8=36.$`,
ref: 'Алгебра, 8 класс, гл. 3, § 16' },
{ idx: 22, type: 'open', topic: 'equations', subtopic: 'eq-linear', diff: 3,
text: R`Катер прошёл $21$ км по течению реки за $1$ ч $30$ мин, а против течения реки за такое же время — только $18$ км. Найдите (в км/ч) собственную скорость катера, если она и скорость течения реки были постоянными.`,
answer: '13',
sol: R`Пусть собственная скорость катера $x$ км/ч, скорость течения $y$ км/ч. За $1{,}5$ ч: $(x+y)\cdot1{,}5=21$ и $(x-y)\cdot1{,}5=18$, то есть $\begin{cases}x+y=14,\\x-y=12.\end{cases}$ Сложив уравнения, получаем $2x=26$, $x=13.$`,
ref: 'Алгебра, 7 класс, гл. 4, § 25' },
{ idx: 23, type: 'open', topic: 'stereometry', subtopic: 'ster-polyhedra', diff: 3,
text: R`Длина ребра куба $ABCDA_1B_1C_1D_1$ равна $7\sqrt2$. Найдите значение выражения $\sqrt3\cdot S$, где $S$ — площадь сечения этого куба плоскостью, проходящей через точки $A_1$, $B$, $D$.`,
answer: '147',
sol: R`Сечение — треугольник $A_1BD$, стороны которого являются диагоналями граней куба: $A_1B=A_1D=BD=7\sqrt2\cdot\sqrt2=14$. Это равносторонний треугольник со стороной $14$, его площадь $S=\dfrac{14^{2}\sqrt3}{4}=49\sqrt3$. Тогда $\sqrt3\cdot S=\sqrt3\cdot49\sqrt3=147.$`,
ref: 'Геометрия, 10 класс, разд. 1, § 3' },
{ idx: 24, type: 'open', topic: 'equations', subtopic: 'eq-exponential', diff: 3,
text: R`Найдите сумму всех целых решений неравенства $3^{\,2x+18}-10\cdot3^{\,x+9}+9\le0$.`,
answer: '-24',
sol: R`Пусть $t=3^{\,x+9}$, тогда неравенство примет вид $t^{2}-10t+9\le0$, откуда $1\le t\le9$. Значит, $3^{0}\le3^{\,x+9}\le3^{2}$, то есть $0\le x+9\le2$ и $-9\le x\le-7$. Целые решения $-9,\,-8,\,-7$; их сумма равна $-24.$`,
ref: 'Алгебра, 11 класс, гл. 2, § 6' },
{ idx: 25, type: 'open', topic: 'trigonometry', subtopic: 'trig-equations', diff: 3,
text: R`Найдите (в градусах) сумму различных корней уравнения $\cos5x\cos2x+\sin5x\sin2x=0$ на промежутке $(0^\circ;135^\circ)$.`,
answer: '120',
sol: R`По формуле косинуса разности левая часть равна $\cos(5x-2x)=\cos3x$. Уравнение $\cos3x=0$ даёт $3x=90^\circ+180^\circ n$, $x=30^\circ+60^\circ n$. Промежутку $(0^\circ;135^\circ)$ принадлежат корни $30^\circ$ (при $n=0$) и $90^\circ$ (при $n=1$). Их сумма равна $120^\circ.$`,
ref: 'Алгебра, 10 класс, гл. 1, § 8; § 10' },
{ idx: 26, type: 'open', topic: 'stereometry', subtopic: 'ster-angles-distances', diff: 4,
text: R`Основание $AC$ равнобедренного треугольника $ABC$, у которого $\angle ABC=120^\circ$, лежит в плоскости $\alpha$, образующей с плоскостью треугольника угол $30^\circ$. Найдите квадрат расстояния от вершины $B$ треугольника $ABC$ до плоскости $\alpha$, если площадь треугольника $ABC$ равна $160\sqrt3$.`,
answer: '40',
sol: R`Площадь $S=\dfrac12\cdot AB\cdot BC\cdot\sin120^\circ$, где $AB=BC$. Тогда $160\sqrt3=\dfrac12 AB^{2}\cdot\dfrac{\sqrt3}{2}$, откуда $AB^{2}=640$, $AB=8\sqrt{10}$. Пусть $BK$ — высота треугольника к основанию $AC$; угол $BAK=30^\circ$, поэтому $BK=AB\sin30^\circ=4\sqrt{10}$. Пусть $BM$ — перпендикуляр к плоскости $\alpha$; по теореме о трёх перпендикулярах $\angle BKM=30^\circ$ — линейный угол двугранного. Тогда $BM=BK\sin30^\circ=2\sqrt{10}$ и $BM^{2}=40.$`,
ref: 'Геометрия, 10 класс, разд. 3, § 10' },
{ idx: 27, type: 'open', topic: 'equations', subtopic: 'eq-logarithmic', diff: 4,
text: R`Найдите сумму всех целых решений неравенства $\log_{\frac16}\dfrac{x-7}{x-11}\ge0$ на промежутке $(-11;12)$.`,
answer: '-34',
sol: R`Так как $0=\log_{\frac16}1$, а основание $\dfrac16<1$ (функция убывает), неравенство равносильно системе $\begin{cases}\dfrac{x-7}{x-11}\le1,\\[4pt]\dfrac{x-7}{x-11}>0.\end{cases}$ Первое неравенство сводится к $\dfrac{4}{x-11}\le0$, то есть $x<11$; второе даёт $x<7$ или $x>11$. Решение системы — луч $(-\infty;7)$. Пересечение с $(-11;12)$ — интервал $(-11;7)$; сумма целых чисел из него ($-10,\ldots,6$) равна $-34.$`,
ref: 'Алгебра, 11 класс, гл. 3, § 10' },
{ idx: 28, type: 'open', topic: 'equations', subtopic: 'eq-irrational', diff: 3,
text: R`Найдите сумму квадратов корней уравнения $x^{2}+3x-\sqrt{x^{2}+3x+9}=3$.`,
answer: '23',
sol: R`Преобразуем к виду $x^{2}+3x+9-\sqrt{x^{2}+3x+9}-12=0$. Пусть $t=\sqrt{x^{2}+3x+9}\ge0$, тогда $t^{2}-t-12=0$, $t=4$ (корень $t=-3$ отброшен). Значит, $x^{2}+3x+9=16$, $x^{2}+3x-7=0$. По теореме Виета $x_1+x_2=-3$, $x_1x_2=-7$, поэтому $x_1^{2}+x_2^{2}=(x_1+x_2)^{2}-2x_1x_2=9+14=23.$`,
ref: 'Алгебра, 10 класс, гл. 2, § 17' },
{ idx: 29, type: 'open', topic: 'functions', subtopic: 'fn-derivative', diff: 4,
text: R`Найдите сумму всех целых чисел из промежутков возрастания функции $f(x)=\dfrac{33+2x^{2}}{2-x}$.`,
answer: '16',
sol: R`$D(f)=(-\infty;2)\cup(2;+\infty)$. Производная $f'(x)=\dfrac{-2x^{2}+8x+33}{(2-x)^{2}}$. Решая $f'(x)>0$, то есть $-2x^{2}+8x+33>0$, получаем $x\in\left(\dfrac{4-\sqrt{82}}{2};\dfrac{4+\sqrt{82}}{2}\right)$. С учётом $x\ne2$ функция возрастает на $\left[\dfrac{4-\sqrt{82}}{2};2\right)$ и $\left(2;\dfrac{4+\sqrt{82}}{2}\right]$. Целые из этих промежутков: $-2,\,-1,\,0,\,1,\,3,\,4,\,5,\,6$; их сумма равна $16.$`,
ref: 'Алгебра, 10 класс, гл. 3, § 20' },
{ idx: 30, type: 'open', topic: 'stereometry', subtopic: 'ster-rotation', diff: 5,
text: R`Дана правильная шестиугольная пирамида $SABCDEF$, у которой угол между боковым ребром и плоскостью основания равен $\arccos\dfrac49$. Объём пирамиды $SABCDEF$ равен $18\sqrt{65}$. Найдите значение выражения $\dfrac{V}{\sqrt3\cdot\pi}$, где $V$ — объём шара, радиус которого равен длине бокового ребра пирамиды $SABCDEF$.`,
answer: '729',
sol: R`Пусть $O$ — центр основания, $SA=R$ — боковое ребро. Из прямоугольного треугольника $SOA$: $\cos\angle SAO=\dfrac{OA}{SA}=\dfrac49$, поэтому $SA=\dfrac94 OA$. Высота пирамиды $SO=\sqrt{SA^{2}-OA^{2}}=\dfrac{OA\sqrt{65}}{4}$. Для правильного шестиугольника $OA=AB$, а площадь основания $S_0=\dfrac{3\sqrt3}{2}AB^{2}$. Из формулы объёма $18\sqrt{65}=\dfrac13\cdot\dfrac{3\sqrt3}{2}AB^{2}\cdot\dfrac{AB\sqrt{65}}{4}$ получаем $AB^{3}=48\sqrt3$. Радиус шара $R=SA=\dfrac94\sqrt[3]{48\sqrt3}$, его объём $V=\dfrac43\pi R^{3}=\dfrac43\pi\cdot\dfrac{9^{3}}{4^{3}}\cdot48\sqrt3=729\sqrt3\,\pi$. Тогда $\dfrac{V}{\sqrt3\cdot\pi}=729.$`,
ref: 'Геометрия, 11 класс, разд. 2, § 3; разд. 3, § 6' },
];
/* ── Сборка 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_e2v1 (${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_rt2324_e2v1.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 · этап II».\n`);
} catch (e) {
db.exec('ROLLBACK');
console.error('\n✗ Ошибка записи, откат транзакции:', e.message);
process.exitCode = 1;
}
db.close();