'use strict'; /* ─────────────────────────────────────────────────────────────────────────── seed_ctmath_rt2223_e3v1.js Чистый вариант-пробник для трека exam-prep `ctmath`. Источник: РТ–2022/2023, Этап III, Вариант 1 (РИКЗ, «Тематическое консультирование по математике»). 30 заданий: А1–А10 + В1–В20. Перенабрано вручную в KaTeX по PDF (визуальное чтение, НЕ OCR): F:\!Рабочие\ЦТ\Математика\Математика\РТ\2022-2023\МАТ РТ-3 22_23 В1.pdf variant=109 — РТ-2022/23 Этап III (этап I — 107, этап II — 108). Геометрия закодирована текстом. Единственное задание с обязательным чертежом — А6 (чтение графика): кусочно-линейная функция на [-5;6] воспроизведена inline-SVG в figure_html (как у math9 и варианта 106); все 5 утверждений и ответ (134) согласованы с реконструкцией. Идемпотентность: upsert по UNIQUE(exam_key, variant, task_idx). Запуск: node backend/scripts/seed_ctmath_rt2223_e3v1.js # DRY-RUN (по умолчанию) node backend/scripts/seed_ctmath_rt2223_e3v1.js --apply # запись в БД ⚠️ Массовую запись в БД запускает ПОЛЬЗОВАТЕЛЬ вручную (авто-режим Claude Code блокирует продакшн-записи). Без --apply ничего не пишется. ─────────────────────────────────────────────────────────────────────────── */ const { DatabaseSync } = require('node:sqlite'); const path = require('path'); const APPLY = process.argv.includes('--apply'); const EXAM = 'ctmath'; const VARIANT = 109; const PROV = 'РТ–2022/2023, Этап III, Вариант 1'; const R = String.raw; const L = ['а', 'б', 'в', 'г', 'д']; const mc = (...html) => html.map((h, i) => [L[i], h]); /* ── SVG-график для А6: кусочно-линейная функция на [-5;6] через точки (-5,3),(-2,-5),(4,5),(6,-1). Три нуля; min=-5 (x=-2), max=5 (x=4); возрастает на (-2;4) → целые с f'>0: -1,0,1,2,3 (сумма 5); f'(-4)<0. Цвета — только в SVG-стоки. */ const FIG_A6 = ` x y O 1 1 y=f(x) `; /* ── 30 заданий ─────────────────────────────────────────────────────────── */ const TASKS = [ // ── Часть A: А1–А10 ────────────────────────────────────────────────────── { idx: 1, type: 'mc', topic: 'expressions', subtopic: 'expr-polynomials', diff: 1, text: R`Укажите номер выражения, являющегося разностью квадратов выражений $m$ и $7n$.`, opts: mc('$(m-7n)^{2}$', '$\left(\dfrac{m}{7n}\right)^{2}$', '$m^{2}-(7n)^{2}$', '$m-(7n)^{2}$', '$m^{2}-7n^{2}$'), answer: 'в', sol: R`Разность квадратов выражений $m$ и $7n$ — это $m^{2}-(7n)^{2}$.`, ref: 'Алгебра, 7 класс, гл. 2, § 12–13' }, { idx: 2, type: 'mc', topic: 'trigonometry', subtopic: 'trig-identities', diff: 2, text: R`Из углов $180^\circ$, $240^\circ$, $225^\circ$, $210^\circ$, $270^\circ$ выберите тот, тангенс которого равен $\sqrt3$.`, opts: mc('$180^\circ$', '$240^\circ$', '$225^\circ$', '$210^\circ$', '$270^\circ$'), answer: 'б', sol: R`$\operatorname{tg}240^\circ=\operatorname{tg}(180^\circ+60^\circ)=\operatorname{tg}60^\circ=\sqrt3$. У остальных данных углов тангенс не равен $\sqrt3$.`, ref: 'Алгебра, 10 класс, гл. 1, § 3' }, { idx: 3, type: 'mc', topic: 'planimetry', subtopic: 'plan-circle', diff: 2, text: R`Вписанный угол $MKN$ опирается на дугу $MN$, градусная мера которой (заключённой внутри этого угла) равна $88^\circ$. Найдите градусную меру угла $MKN$.`, opts: mc('$44^\circ$', '$24^\circ$', '$46^\circ$', '$88^\circ$', '$22^\circ$'), answer: 'а', sol: R`Вписанный угол равен половине дуги, на которую он опирается: $\angle MKN=\dfrac12\cdot88^\circ=44^\circ$.`, ref: 'Геометрия, 8 класс, гл. 4, § 27' }, { idx: 4, type: 'mc', topic: 'equations', subtopic: 'eq-rational', diff: 2, text: R`Укажите номер уравнения, корнем которого является число $-1$.`, opts: mc('$\dfrac{5}{x+1}=0$', '$x^{2}+1=0$', '$3^{\,x-1}=1$', '$\log_7(x+2)=0$', '$\sqrt{x-1}=0$'), answer: 'г', sol: R`Подставим $x=-1$: $\dfrac{5}{0}$ не имеет смысла; $\ (-1)^{2}+1=2\ne0$; $\ 3^{-2}\ne1$; $\ \log_7(-1+2)=\log_7 1=0$ — верно; $\ \sqrt{-2}$ не имеет смысла. Корень $-1$ имеет только уравнение под номером 4.`, ref: 'Алгебра, 7 класс, гл. 3, § 15' }, { idx: 5, type: 'mc', topic: 'functions', subtopic: 'fn-properties', diff: 2, text: R`Среди значений аргумента $x$, равных $1{,}5$; $0{,}4$; $1{,}2$; $0{,}6$; $2{,}5$, укажите то, при котором значение функции $f(x)=\dfrac2x$ меньше $1$.`, opts: mc('$1{,}5$', '$0{,}4$', '$1{,}2$', '$0{,}6$', '$2{,}5$'), answer: 'д', sol: R`$f(x)=\dfrac2x<1$ при $x>2$ (для положительных $x$). Из данных чисел этому условию удовлетворяет только $2{,}5$: $\dfrac{2}{2{,}5}=0{,}8<1$.`, ref: 'Алгебра, 8 класс, гл. 3, § 13' }, { idx: 6, type: 'open', topic: 'functions', subtopic: 'fn-properties', diff: 3, fig: FIG_A6, text: R`На рисунке изображён график функции $y=f(x)$, определённой на промежутке $[-5;6]$. Укажите номера верных утверждений.
1) функция имеет три нуля;
2) $f'(-4)=0$;
3) максимум функции равен $5$;
4) сумма целых значений аргумента, при которых $f'(x)>0$, равна $5$;
5) наименьшее значение функции на промежутке $[-5;6]$ равно $-2$.
Ответ запишите цифрами в порядке возрастания, без пробелов.`, answer: '134', ansShow: '1, 3, 4', sol: R`$1)$ верно: график пересекает ось абсцисс в трёх точках. $\ 2)$ неверно: при $x=-4$ функция убывает, $f'(-4)<0$. $\ 3)$ верно: наибольшее (максимум) значение функции равно $5$. $\ 4)$ верно: функция возрастает на $(-2;4)$, целые значения с $f'(x)>0$ — это $-1,0,1,2,3$, их сумма $5$. $\ 5)$ неверно: наименьшее значение функции равно $-5$.`, ref: 'Алгебра, 9 класс, гл. 2, § 7; «Алгебра, 10 кл.», гл. 3, § 20' }, { idx: 7, type: 'mc', topic: 'word-sequences', subtopic: 'word-problems', diff: 2, text: R`Пять рабочих могут выполнить работу за $14$ дней. За сколько дней могут выполнить эту же работу $7$ рабочих?`, opts: mc('$20$', '$16$', '$12$', '$10$', '$9$'), answer: 'г', sol: R`Зависимость между числом рабочих и числом дней обратно пропорциональная: $\dfrac{5}{7}=\dfrac{x}{14}$, откуда $x=\dfrac{5\cdot14}{7}=10$ (дней).`, ref: 'Математика, 6 класс, гл. 2, § 4–5' }, { idx: 8, type: 'mc', topic: 'trigonometry', subtopic: 'trig-identities', diff: 2, text: R`Найдите значение выражения $6\cos\alpha$, если $\sin\alpha=\dfrac{\sqrt2}{3}$ и $\dfrac{\pi}{2}<\alpha<\pi$.`, opts: mc('$2\sqrt7$', '$-2\sqrt{11}$', '$-2\sqrt7$', '$2\sqrt{11}$', '$-2\sqrt2$'), answer: 'в', sol: R`Из $\sin^{2}\alpha+\cos^{2}\alpha=1$: $\cos^{2}\alpha=1-\dfrac29=\dfrac79$. Во второй четверти $\cos\alpha<0$, поэтому $\cos\alpha=-\dfrac{\sqrt7}{3}$. Тогда $6\cos\alpha=-2\sqrt7$.`, ref: 'Алгебра, 10 класс, гл. 1, § 4' }, { idx: 9, type: 'mc', topic: 'stereometry', subtopic: 'ster-rotation', diff: 2, text: R`Прямоугольник, у которого длины сторон равны $3$ и $6$, вращается вокруг большей стороны. Найдите площадь боковой поверхности цилиндра, полученного в результате вращения.`, opts: mc('$54\pi$', '$18\pi$', '$108\pi$', '$45\pi$', '$36\pi$'), answer: 'д', sol: R`При вращении вокруг большей стороны ($6$) она становится высотой цилиндра, а меньшая ($3$) — радиусом основания. Площадь боковой поверхности $S=2\pi rh=2\pi\cdot3\cdot6=36\pi$.`, ref: 'Геометрия, 11 класс, разд. 1, § 2' }, { idx: 10, type: 'open', topic: 'trigonometry', subtopic: 'trig-circle', diff: 2, text: R`Среди данных утверждений укажите номера верных.
1) $\operatorname{arctg}(-1)=\dfrac{3\pi}{4}$;
2) $\sin\dfrac{\pi}{4}>\sin\dfrac{\pi}{6}$;
3) $\cos\dfrac{\pi}{3}>\cos\dfrac{\pi}{6}$;
4) $\operatorname{ctg}\dfrac{17\pi}{12}<0$;
5) $\arccos\left(-\dfrac12\right)=\dfrac{2\pi}{3}$.
Ответ запишите цифрами в порядке возрастания, без пробелов.`, answer: '25', ansShow: '2, 5', sol: R`$1)$ неверно: $\operatorname{arctg}(-1)=-\dfrac{\pi}{4}$. $\ 2)$ верно: $\dfrac{\sqrt2}{2}>\dfrac12$. $\ 3)$ неверно: $\dfrac12<\dfrac{\sqrt3}{2}$. $\ 4)$ неверно: $\operatorname{ctg}\dfrac{17\pi}{12}=\operatorname{ctg}\dfrac{5\pi}{12}>0$. $\ 5)$ верно: $\arccos\left(-\dfrac12\right)=\dfrac{2\pi}{3}$. Подходят 2 и 5.`, ref: 'Алгебра, 10 класс, гл. 1, § 7; § 9' }, // ── Часть B: В1–В20 ────────────────────────────────────────────────────── { idx: 11, type: 'long', topic: 'word-sequences', subtopic: 'seq-progressions', diff: 3, text: R`Для начала каждого из предложений А–В подберите его окончание 1–6 так, чтобы получилось верное утверждение.
Начало:
А) Сумма шестнадцати первых членов арифметической прогрессии $(a_n)$, у которой $a_1=-2$, $a_{16}=43$, равна …
Б) Сумма пяти первых членов геометрической прогрессии $(b_n)$, у которой $b_1=-4$, $q=2$, равна …
В) Сумма бесконечно убывающей геометрической прогрессии, у которой $b_1=-208$, $q=\dfrac15$, равна …
Окончание:
1) $-260$; 2) $-110$; 3) $328$; 4) $-832$; 5) $-124$; 6) $252$.
Ответ запишите сочетанием букв и цифр, например: А1Б1В4.`, answer: 'А3Б5В1', ansShow: 'А3Б5В1', sol: R`А) $S_{16}=\dfrac{a_1+a_{16}}{2}\cdot16=\dfrac{-2+43}{2}\cdot16=41\cdot8=328$ — окончание 3. Б) $S_5=\dfrac{b_1(q^{5}-1)}{q-1}=\dfrac{-4(32-1)}{1}=-124$ — окончание 5. В) $S=\dfrac{b_1}{1-q}=\dfrac{-208}{1-\frac15}=-208\cdot\dfrac54=-260$ — окончание 1.`, ref: 'Алгебра, 9 класс, гл. 4, § 16; § 18–19' }, { idx: 12, type: 'open', topic: 'stereometry', subtopic: 'ster-angles-distances', diff: 3, text: R`$ABCDA_1B_1C_1D_1$ — прямоугольный параллелепипед. Выберите верные утверждения.
1) расстояние от точки $B$ до плоскости грани $A_1D_1C_1B_1$ равно длине отрезка $BB_1$;
2) расстояние между плоскостями граней $AA_1D_1D$ и $BB_1C_1C$ равно длине отрезка $AB$;
3) расстояние между прямой $D_1C_1$ и плоскостью грани $ABCD$ равно длине отрезка $DC_1$;
4) расстояние от точки $C$ до плоскости грани $AA_1D_1D$ равно длине отрезка $CC_1$;
5) расстояние между плоскостями граней $AA_1B_1B$ и $DD_1C_1C$ равно длине отрезка $B_1D$;
6) расстояние между прямой $DC_1$ и плоскостью грани $AA_1B_1B$ равно длине отрезка $B_1C_1$.
Ответ запишите цифрами в порядке возрастания, без пробелов.`, answer: '126', ansShow: '1, 2, 6', sol: R`Расстояние от точки (прямой) до плоскости — длина перпендикуляра. $\ 1)$ верно: $BB_1\perp$ верхней грани. $\ 2)$ верно: $AB$ — общий перпендикуляр параллельных граней. $\ 3)$ неверно: расстояние равно длине бокового ребра, а не диагонали $DC_1$. $\ 4)$ неверно: расстояние равно $CD$, а не $CC_1$. $\ 5)$ неверно: расстояние равно $AD$, а не диагонали $B_1D$. $\ 6)$ верно: $B_1C_1$ — перпендикуляр между $DC_1$ и гранью $AA_1B_1B$. Подходят 1, 2, 6.`, ref: 'Геометрия, 10 класс, разд. 3, § 8' }, { idx: 13, type: 'long', topic: 'functions', subtopic: 'fn-graphs', diff: 2, text: R`На рисунке изображён график функции $f(x)=|x|$ и отмечена точка $A(-2;2)$, принадлежащая этому графику. Для начала каждого из предложений А–В подберите его окончание 1–6 так, чтобы получилось верное утверждение.
Начало:
А) Если график функции $f(x)=|x|$ сдвинуть на $6$ единиц вправо вдоль оси абсцисс, то точка $A$ будет иметь координаты …
Б) Если график функции $f(x)=|x|$ сдвинуть на $8$ единиц вниз вдоль оси ординат, то точка $A$ будет иметь координаты …
В) Если график функции $f(x)=|x|$ сдвинуть на $2$ единицы влево вдоль оси абсцисс и на $3$ единицы вверх вдоль оси ординат, то точка $A$ будет иметь координаты …
Окончание:
1) $(-8;2)$; 2) $(0;-1)$; 3) $(-2;-6)$; 4) $(-2;10)$; 5) $(4;2)$; 6) $(-4;5)$.
Ответ запишите сочетанием букв и цифр, например: А1Б1В4.`, answer: 'А5Б3В6', ansShow: 'А5Б3В6', sol: R`А) сдвиг на $6$ вправо: $(-2+6;2)=(4;2)$ — окончание 5. Б) сдвиг на $8$ вниз: $(-2;2-8)=(-2;-6)$ — окончание 3. В) сдвиг на $2$ влево и $3$ вверх: $(-2-2;2+3)=(-4;5)$ — окончание 6.`, ref: 'Алгебра, 9 класс, гл. 2, § 9' }, { idx: 14, type: 'long', topic: 'numbers', subtopic: 'num-divisibility', diff: 2, text: R`Для начала каждого из предложений А–В подберите его окончание 1–6 так, чтобы получилось верное утверждение, если известно, что $2023=7\cdot17\cdot17$.
Начало:
А) Наибольший простой делитель числа $2023$ равен …
Б) Количество различных натуральных делителей числа $2023$ равно …
В) Наибольший общий делитель чисел $117$ и $2023$ равен …
Окончание:
1) $5$; 2) $17$; 3) $7$; 4) $51$; 5) $1$; 6) $6$.
Ответ запишите сочетанием букв и цифр, например: А1Б1В4.`, answer: 'А2Б6В5', ansShow: 'А2Б6В5', sol: R`А) простые делители числа $2023$ — это $7$ и $17$, наибольший $17$ — окончание 2. Б) делители $2023$: $1,7,17,119,289,2023$ — всего $6$ — окончание 6. В) $117=3^{2}\cdot13$, у чисел $117$ и $2023$ общих простых делителей нет, поэтому их наибольший общий делитель равен $1$ — окончание 5.`, ref: 'Математика, 5 класс, ч. 1, гл. 1, § 12; § 14' }, { idx: 15, type: 'open', topic: 'planimetry', subtopic: 'plan-triangles', diff: 2, text: R`В треугольнике $ABC$ точка $M$ лежит на стороне $AC$, точка $N$ — на стороне $BC$, причём $MN\parallel AB$, $CM=24$, $CN=12$, $NB=3$. Найдите длину стороны $AC$.`, answer: '30', sol: R`Так как $MN\parallel AB$, треугольник $MNC$ подобен треугольнику $ABC$. Тогда $\dfrac{CM}{CA}=\dfrac{CN}{CB}$, где $CB=CN+NB=15$. Получаем $\dfrac{24}{CA}=\dfrac{12}{15}$, откуда $CA=\dfrac{24\cdot15}{12}=30$.`, ref: 'Геометрия, 8 класс, гл. 3, § 20' }, { idx: 16, type: 'open', topic: 'expressions', subtopic: 'expr-powers-roots', diff: 3, text: R`Найдите значение выражения $\left(3b^{0{,}25}\right)^{2}+3b^{0{,}5}$ при $b=\log_{\sqrt2}256$.`, answer: '48', sol: R`Упростим: $\left(3b^{0{,}25}\right)^{2}+3b^{0{,}5}=9b^{0{,}5}+3b^{0{,}5}=12b^{0{,}5}$. Значение $b=\log_{\sqrt2}256=\log_{2^{1/2}}2^{8}=\dfrac{8}{1/2}=16$. Тогда $12\cdot16^{0{,}5}=12\cdot4=48$.`, ref: 'Алгебра, 11 класс, гл. 1, § 1' }, { idx: 17, type: 'open', topic: 'equations', subtopic: 'eq-logarithmic', diff: 3, text: R`Найдите произведение корней уравнения $\log_{\sqrt5}\left(x-3\sqrt7\right)+\log_{\sqrt5}\left(x+3\sqrt7\right)=0$ (корень, если он единственный).`, answer: '8', sol: R`По свойству логарифмов $\log_{\sqrt5}\left((x-3\sqrt7)(x+3\sqrt7)\right)=0$, то есть $x^{2}-63=1$, $x^{2}=64$, $x=\pm8$. Условию $x-3\sqrt7>0$ ($3\sqrt7\approx7{,}9$) удовлетворяет только $x=8$.`, ref: 'Алгебра, 11 класс, гл. 3, § 9' }, { idx: 18, type: 'open', topic: 'word-sequences', subtopic: 'word-problems', diff: 2, text: R`Через электронный сервис Петя купил билет на спортивное мероприятие и заплатил $46$ рублей $25$ копеек. В эту сумму входит стоимость билета и сервисный сбор $2$ рубля $50$ копеек. За два дня до мероприятия Петя решил вернуть билет. По правилам организатора ему вернут $80\%$ стоимости билета. Какую сумму (в рублях) получит Петя, вернув билет?`, answer: '35', sol: R`Стоимость билета без сервисного сбора: $46{,}25-2{,}50=43{,}75$ рубля. Вернут $80\%$ от неё: $43{,}75\cdot0{,}8=35$ (рублей).`, ref: 'Математика, 6 класс, гл. 2, § 1–2' }, { idx: 19, type: 'open', topic: 'equations', subtopic: 'eq-exponential', diff: 3, text: R`Найдите сумму всех целых решений неравенства $\left(\dfrac37\right)^{\frac{x+18}{(x-2)^{2}}}\le\dfrac37$.`, answer: '23', sol: R`Так как $0<\dfrac37<1$, функция убывает, поэтому неравенство равносильно $\dfrac{x+18}{(x-2)^{2}}\ge1$, то есть $\dfrac{(x+2)(x-7)}{(x-2)^{2}}\le0$. Методом интервалов (нули $-2$ и $7$, $x\ne2$) решение — $[-2;2)\cup(2;7]$. Целые: $-2,-1,0,1,3,4,5,6,7$; их сумма равна $23$.`, ref: 'Алгебра, 11 класс, гл. 2, § 6' }, { idx: 20, type: 'open', topic: 'planimetry', subtopic: 'plan-quadrilaterals', diff: 4, text: R`В трапеции $ABCD$ ($BC\parallel AD$) известно, что $\angle A=90^\circ$, $\angle C=120^\circ$, $AD=8\sqrt2$. Найдите значение выражения $\sqrt3\cdot S$, где $S$ — площадь трапеции $ABCD$, если высота трапеции равна $3\sqrt6$.`, answer: '117', sol: R`Пусть $CK$ — высота ($CK=3\sqrt6$). В прямоугольном треугольнике $CKD$ угол при $D$ равен $60^\circ$, поэтому $KD=\dfrac{CK}{\sqrt3}=3\sqrt2$. Тогда $AK=AD-KD=8\sqrt2-3\sqrt2=5\sqrt2$, а так как $ABCK$ — прямоугольник, $BC=AK=5\sqrt2$. Площадь $S=\dfrac{AD+BC}{2}\cdot CK=\dfrac{8\sqrt2+5\sqrt2}{2}\cdot3\sqrt6=39\sqrt3$. Тогда $\sqrt3\cdot S=\sqrt3\cdot39\sqrt3=117$.`, ref: 'Геометрия, 8 класс, гл. 2, § 17' }, { idx: 21, type: 'open', topic: 'functions', subtopic: 'fn-derivative', diff: 3, text: R`Найдите наименьшее значение функции $f(x)=\dfrac{x^{2}}{x-4}$ на отрезке $[6;10]$.`, answer: '16', sol: R`$f'(x)=\dfrac{2x(x-4)-x^{2}}{(x-4)^{2}}=\dfrac{x^{2}-8x}{(x-4)^{2}}$. Нули $x=0$ и $x=8$; на $[6;10]$ лежит $x=8$. Сравним $f(6)=\dfrac{36}{2}=18$, $f(8)=\dfrac{64}{4}=16$, $f(10)=\dfrac{100}{6}=16\dfrac23$. Наименьшее значение $16$ (при $x=8$).`, ref: 'Алгебра, 10 класс, гл. 3, § 22' }, { idx: 22, type: 'open', topic: 'expressions', subtopic: 'expr-powers-roots', diff: 3, text: R`Найдите значение выражения $\log_3\left(\dfrac{a}{9}\right)-\log_3\left(\dfrac{81}{b}\right)$, если $\log_3(ab)=17$.`, answer: '11', sol: R`$\log_3\dfrac{a}{9}-\log_3\dfrac{81}{b}=\log_3 a-\log_3 9-\log_3 81+\log_3 b=\log_3(ab)-2-4=\log_3(ab)-6$. Подставив $\log_3(ab)=17$, получим $17-6=11$.`, ref: 'Алгебра, 11 класс, гл. 3, § 7' }, { idx: 23, type: 'open', topic: 'stereometry', subtopic: 'ster-polyhedra', diff: 4, text: R`$ABCA_1B_1C_1$ — правильная треугольная призма, длина стороны основания которой равна $7$, а бокового ребра — $\sqrt{29}$. Найдите периметр сечения призмы плоскостью, проходящей через прямую $A_1C_1$ и середину ребра $BB_1$.`, answer: '22', sol: R`Пусть $K$ — середина ребра $BB_1$. Сечение — равнобедренный треугольник $A_1KC_1$ с $A_1C_1=7$ и $KA_1=KC_1$. Из прямоугольного треугольника $KB_1A_1$: $KB_1=\dfrac{\sqrt{29}}{2}$, $A_1B_1=7$, поэтому $KA_1=\sqrt{49+\dfrac{29}{4}}=\sqrt{\dfrac{225}{4}}=\dfrac{15}{2}$. Периметр $P=A_1C_1+KA_1+KC_1=7+2\cdot\dfrac{15}{2}=22$.`, ref: 'Геометрия, 10 класс, разд. 1, § 3' }, { idx: 24, type: 'open', topic: 'equations', subtopic: 'eq-rational', diff: 3, text: R`Найдите сумму всех целых решений системы неравенств $\begin{cases}x^{2}+8x+7\ge0,\\(x+9)(4-x)>0.\end{cases}$`, answer: '-10', sol: R`$x^{2}+8x+7\ge0\Rightarrow(x+7)(x+1)\ge0$, решение $(-\infty;-7]\cup[-1;+\infty)$. $\ (x+9)(4-x)>0\Rightarrow x\in(-9;4)$. Пересечение — $(-9;-7]\cup[-1;4)$. Целые: $-8,-7,-1,0,1,2,3$; их сумма равна $-10$.`, ref: 'Алгебра, 8 класс, гл. 3, § 16' }, { idx: 25, type: 'open', topic: 'equations', subtopic: 'eq-irrational', diff: 3, text: R`Найдите сумму квадратов корней уравнения $\sqrt{2x+6}-\sqrt{x+1}=2$.`, answer: '226', sol: R`Перепишем: $\sqrt{2x+6}=2+\sqrt{x+1}$. Возведя в квадрат: $2x+6=4+4\sqrt{x+1}+x+1$, $x+1=4\sqrt{x+1}$. Ещё раз в квадрат: $x^{2}-14x-15=0$, корни $-1$ и $15$ (оба проходят проверку). Сумма квадратов $(-1)^{2}+15^{2}=1+225=226$.`, ref: 'Алгебра, 10 класс, гл. 2, § 17' }, { idx: 26, type: 'open', topic: 'stereometry', subtopic: 'ster-angles-distances', diff: 4, text: R`В прямоугольном треугольнике $KMN$ угол $M$ равен $90^\circ$, а $KN=6\sqrt2$. Точка $A$, не лежащая в плоскости треугольника $KMN$, удалена на расстояние $7$ от каждой вершины треугольника. Найдите значение выражения $21\sqrt2\cdot\cos\alpha$, где $\alpha$ — угол между прямой $AM$ и плоскостью $KMN$.`, answer: '18', sol: R`Так как точка $A$ равноудалена от вершин, основание $O$ перпендикуляра $AO$ — центр описанной около прямоугольного треугольника окружности, то есть середина гипотенузы $KN$, причём $MO=\dfrac{KN}{2}=3\sqrt2$. Угол между $AM$ и плоскостью — это $\angle AMO=\alpha$. В прямоугольном треугольнике $AOM$: $\cos\alpha=\dfrac{MO}{AM}=\dfrac{3\sqrt2}{7}$. Тогда $21\sqrt2\cdot\dfrac{3\sqrt2}{7}=\dfrac{21\cdot3\cdot2}{7}=18$.`, ref: 'Геометрия, 10 класс, разд. 3, § 9' }, { idx: 27, type: 'open', topic: 'trigonometry', subtopic: 'trig-equations', diff: 4, text: R`Найдите (в градусах) сумму различных корней уравнения $\sqrt3\sin5x+\cos5x=0$ на промежутке $(-45^\circ;0^\circ)$.`, answer: '-48', sol: R`Разделив на $\cos5x$: $\sqrt3\operatorname{tg}5x+1=0$, $\operatorname{tg}5x=-\dfrac{\sqrt3}{3}$, откуда $5x=-30^\circ+180^\circ n$, $x=-6^\circ+36^\circ n$. Промежутку $(-45^\circ;0^\circ)$ принадлежат $-6^\circ$ и $-42^\circ$; их сумма равна $-48^\circ$.`, ref: 'Алгебра, 10 класс, гл. 1, § 8' }, { idx: 28, type: 'open', topic: 'equations', subtopic: 'eq-logarithmic', diff: 4, text: R`Найдите сумму всех целых решений неравенства $\dfrac{8}{1+\log_3 x}>-1+\log_3 x$.`, answer: '351', sol: R`Пусть $t=\log_3 x$, тогда $\dfrac{8}{1+t}>t-1$, что приводит к $\dfrac{(t-3)(t+3)}{t+1}<0$, решение $t<-3$ или $-1Ответ: ${ans}`; if (t.ref) html += `
Учебник: ${t.ref}
`; 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_e3v1 (${PROV}) variant=${VARIANT} ===`); console.log(`Режим: ${APPLY ? 'APPLY (запись)' : 'DRY-RUN (только проверка)'}\n`); const byType = TASKS.reduce((a, t) => (a[t.type] = (a[t.type] || 0) + 1, a), {}); console.log('Типы:', JSON.stringify(byType), ' | с фигурой:', TASKS.filter(t => t.fig).length, '\n'); console.log('idx | type | subtopic | d | answer'); console.log('----+------+-----------------------+---+----------'); for (const t of TASKS) { console.log(`${String(t.idx).padStart(3)} | ${t.type.padEnd(4)} | ${String(t.subtopic).padEnd(21)} | ${t.diff} | ${String(t.answer)}`); } if (problems.length) { console.error(`\n✗ ПРОБЛЕМЫ (${problems.length}):`); problems.forEach(p => console.error(' - ' + p)); console.error('\nЗапись отменена из-за ошибок валидации.'); db.close(); process.exit(1); } console.log('\n✓ Валидация и self-check ответов пройдены (30/30).'); /* ── APPLY: upsert ─────────────────────────────────────────────────────────── */ if (!APPLY) { console.log('\nDRY-RUN: ничего не записано. Для записи: node backend/scripts/seed_ctmath_rt2223_e3v1.js --apply\n'); db.close(); process.exit(0); } const upsert = db.prepare(` INSERT INTO exam_tasks (exam_key, variant, task_idx, task_type, text_html, figure_html, opts_json, answer, solution_html, topic, subtopic, difficulty) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(exam_key, variant, task_idx) DO UPDATE SET task_type = excluded.task_type, text_html = excluded.text_html, figure_html = excluded.figure_html, opts_json = excluded.opts_json, answer = excluded.answer, solution_html = excluded.solution_html, topic = excluded.topic, subtopic = excluded.subtopic, difficulty = excluded.difficulty `); let n = 0; db.exec('BEGIN'); try { for (const t of TASKS) { upsert.run( EXAM, VARIANT, t.idx, t.type, t.text, t.fig || null, t.type === 'mc' ? JSON.stringify(t.opts) : null, t.answer, buildSolution(t), t.topic, t.subtopic, t.diff ); n++; } const distinct = db.prepare(`SELECT COUNT(DISTINCT variant) c FROM exam_tasks WHERE exam_key=? AND variant BETWEEN 101 AND 1999`).get(EXAM).c; db.prepare(`UPDATE exam_tracks SET variants_count=? WHERE exam_key=?`).run(distinct, EXAM); db.exec('COMMIT'); console.log(`\n✓ Записано/обновлено ${n} заданий (variant=${VARIANT}).`); console.log(`✓ exam_tracks.variants_count = ${distinct} (различных вариантов).`); console.log(`\nПробник доступен: /exam-prep/ctmath → «Варианты» → «РТ-2022/23 · этап III».\n`); } catch (e) { db.exec('ROLLBACK'); console.error('\n✗ Ошибка записи, откат транзакции:', e.message); process.exitCode = 1; } db.close();