feat(ctmath): пробник РТ-2022/23 этап II (вариант 108)
30 заданий А1–А10 + В1–В20, перенабор по PDF РИКЗ. 8 mc + 20 open + 2 long. Геометрия — текстом. Адаптации заданий с картинкой: А1 (термометр) → показание числом; А3 (выбор прямоугольника) → MC о соотношении сторон; А6 (графики) → список функций (ответ 145); В1 (диаграмма) → данные таблицей в figure_html (ответ А6Б4В3). Метка 108 уже в VARIANT_LABEL. Идемпотентный seed, --apply — пользователь. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,390 @@
|
||||
'use strict';
|
||||
/* ───────────────────────────────────────────────────────────────────────────
|
||||
seed_ctmath_rt2223_e2v1.js
|
||||
Чистый вариант-пробник для трека exam-prep `ctmath`.
|
||||
|
||||
Источник: РТ–2022/2023, Этап II, Вариант 1 (РИКЗ, «Тематическое
|
||||
консультирование по математике»). 30 заданий: А1–А10 + В1–В20.
|
||||
Перенабрано вручную в KaTeX по PDF (визуальное чтение, НЕ OCR):
|
||||
F:\!Рабочие\ЦТ\Математика\Математика\РТ\2022-2023\МАТ РТ-2 22_23 В1.pdf
|
||||
|
||||
variant=108 — РТ-2022/23 Этап II (этап I — 107, этап III — 109).
|
||||
Адаптации заданий-«с-картинкой» (та же проверяемая идея, авто-проверка):
|
||||
• А1 (термометр) → показание дано числом;
|
||||
• А3 (выбор прямоугольника) → MC о соотношении сторон для квадратного
|
||||
осевого сечения цилиндра;
|
||||
• А6 (графики, возрастающие на [-3;3]) → список функций (ответ 145);
|
||||
• В1 (столбчатая диаграмма) → те же данные в таблице (figure_html),
|
||||
сопоставление вопрос↔день (ответ А6Б4В3).
|
||||
|
||||
Идемпотентность: upsert по UNIQUE(exam_key, variant, task_idx).
|
||||
Запуск:
|
||||
node backend/scripts/seed_ctmath_rt2223_e2v1.js # DRY-RUN (по умолчанию)
|
||||
node backend/scripts/seed_ctmath_rt2223_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 = 108;
|
||||
const PROV = 'РТ–2022/2023, Этап II, Вариант 1';
|
||||
const R = String.raw;
|
||||
|
||||
const L = ['а', 'б', 'в', 'г', 'д'];
|
||||
const mc = (...html) => html.map((h, i) => [L[i], h]);
|
||||
|
||||
/* ── figure_html для В1: данные диаграммы (количество заказов по дням). */
|
||||
const FIG_B1 = `<table class="task-fig" style="border-collapse:collapse;margin:10px auto;font-size:14px;text-align:center">
|
||||
<tr>
|
||||
<th style="border:1px solid #cbd5e1;padding:5px 9px">День недели</th>
|
||||
<th style="border:1px solid #cbd5e1;padding:5px 9px">Пн</th>
|
||||
<th style="border:1px solid #cbd5e1;padding:5px 9px">Вт</th>
|
||||
<th style="border:1px solid #cbd5e1;padding:5px 9px">Ср</th>
|
||||
<th style="border:1px solid #cbd5e1;padding:5px 9px">Чт</th>
|
||||
<th style="border:1px solid #cbd5e1;padding:5px 9px">Пт</th>
|
||||
<th style="border:1px solid #cbd5e1;padding:5px 9px">Сб</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="border:1px solid #cbd5e1;padding:5px 9px">Количество заказов</td>
|
||||
<td style="border:1px solid #cbd5e1;padding:5px 9px">38</td>
|
||||
<td style="border:1px solid #cbd5e1;padding:5px 9px">48</td>
|
||||
<td style="border:1px solid #cbd5e1;padding:5px 9px">42</td>
|
||||
<td style="border:1px solid #cbd5e1;padding:5px 9px">52</td>
|
||||
<td style="border:1px solid #cbd5e1;padding:5px 9px">60</td>
|
||||
<td style="border:1px solid #cbd5e1;padding:5px 9px">66</td>
|
||||
</tr>
|
||||
</table>`;
|
||||
|
||||
/* ── 30 заданий ─────────────────────────────────────────────────────────── */
|
||||
const TASKS = [
|
||||
// ── Часть A: А1–А10 ──────────────────────────────────────────────────────
|
||||
{ idx: 1, type: 'mc', topic: 'numbers', subtopic: 'num-real', diff: 1,
|
||||
text: R`Термометр со шкалой от $-50\,$ до $50\,^\circ$C показывает температуру $-15\,^\circ$C. Какую температуру (в $^\circ$C) будет показывать термометр, если она увеличится на $20\,^\circ$C?`,
|
||||
opts: mc('$5^\circ$C', '$15^\circ$C', '$20^\circ$C', '$10^\circ$C', '$0^\circ$C'),
|
||||
answer: 'а',
|
||||
sol: R`Повышение температуры на $20\,^\circ$C означает прибавление: $-15+20=5\,(^\circ$C$)$.`,
|
||||
ref: 'Герасимов «Математика, 6 кл.», гл. 4, § 1' },
|
||||
|
||||
{ idx: 2, type: 'mc', topic: 'numbers', subtopic: 'num-real', diff: 1,
|
||||
text: R`Среди чисел $62\cdot10^{-5}$, $\ 0{,}62\cdot10^{-4}$, $\ 6{,}2\cdot10^{-4}$, $\ 6{,}2\cdot10^{-5}$, $\ 0{,}62\cdot10^{-3}$ укажите то, которое является стандартным видом числа $0{,}00062$.`,
|
||||
opts: mc('$62\cdot10^{-5}$', '$0{,}62\cdot10^{-4}$', '$6{,}2\cdot10^{-4}$', '$6{,}2\cdot10^{-5}$', '$0{,}62\cdot10^{-3}$'),
|
||||
answer: 'в',
|
||||
sol: R`Стандартный вид числа — это $a\cdot10^{n}$, где $1\le a<10$. Число $0{,}00062=6{,}2\cdot10^{-4}$.`,
|
||||
ref: 'Арефьева «Алгебра, 7 кл.», гл. 1, § 3' },
|
||||
|
||||
{ idx: 3, type: 'mc', topic: 'stereometry', subtopic: 'ster-rotation', diff: 2,
|
||||
text: R`Прямоугольник $ABCD$ вращается вокруг стороны $BC$. При этом получается цилиндр, осевым сечением которого является квадрат. Укажите верное соотношение между сторонами прямоугольника.`,
|
||||
opts: mc('$BC=2AB$', '$BC=AB$', '$AB=2BC$', '$BC=4AB$', '$AB=4BC$'),
|
||||
answer: 'а',
|
||||
sol: R`При вращении вокруг $BC$ сторона $BC$ становится высотой цилиндра, а $AB$ — радиусом основания. Осевое сечение — прямоугольник со сторонами $2AB$ (диаметр) и $BC$ (высота). Это квадрат, когда $BC=2AB$.`,
|
||||
ref: 'Латотин «Геометрия, 11 кл.», разд. 1, § 2' },
|
||||
|
||||
{ idx: 4, type: 'mc', topic: 'equations', subtopic: 'eq-exponential', diff: 2,
|
||||
text: R`Среди чисел $0$, $1$, $2$, $3$, $4$ укажите то, которое не является решением неравенства $2^{x}<16$.`,
|
||||
opts: mc('$0$', '$1$', '$2$', '$3$', '$4$'),
|
||||
answer: 'д',
|
||||
sol: R`$2^{x}<16=2^{4}$. Так как $2>1$, функция $y=2^{x}$ возрастает, поэтому $x<4$. Из данных чисел этому промежутку не принадлежит только $4$.`,
|
||||
ref: 'Арефьева «Алгебра, 11 кл.», гл. 2, § 6' },
|
||||
|
||||
{ idx: 5, type: 'mc', topic: 'functions', subtopic: 'fn-properties', diff: 1,
|
||||
text: R`Найдите значение аргумента, при котором значение функции $f(x)=3-5x$ равно $2$.`,
|
||||
opts: mc('$0$', '$1$', '$0{,}1$', '$0{,}2$', '$5$'),
|
||||
answer: 'г',
|
||||
sol: R`Подставим значение функции: $2=3-5x$, откуда $5x=1$, $x=0{,}2$.`,
|
||||
ref: 'Арефьева «Алгебра, 7 кл.», гл. 3, § 20' },
|
||||
|
||||
{ idx: 6, type: 'open', topic: 'functions', subtopic: 'fn-properties', diff: 2,
|
||||
text: R`Укажите номера функций, которые возрастают на промежутке $[-3;3]$.<br>1) $f(x)=2x-1$;<br>2) $f(x)=x^{2}$;<br>3) $f(x)=-x+4$;<br>4) $f(x)=x^{3}$;<br>5) $f(x)=2^{x}$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
|
||||
answer: '145', ansShow: '1, 4, 5',
|
||||
sol: R`$1)$ $2x-1$ — линейная с положительным угловым коэффициентом, возрастает. $\ 2)$ $x^{2}$ на $[-3;3]$ сначала убывает, потом возрастает — нет. $\ 3)$ $-x+4$ убывает. $\ 4)$ $x^{3}$ возрастает на всей оси. $\ 5)$ $2^{x}$ — показательная с основанием $>1$, возрастает. Подходят 1, 4, 5.`,
|
||||
ref: 'Арефьева «Алгебра, 9 кл.», гл. 2, § 6–7' },
|
||||
|
||||
{ idx: 7, type: 'mc', topic: 'word-sequences', subtopic: 'word-problems', diff: 2,
|
||||
text: R`От верёвки длиной $3$ м $15$ см отрезали часть так, что отношение оставшейся части к отрезанной равно $4:5$. Найдите (в сантиметрах) длину оставшейся части.`,
|
||||
opts: mc('$175$', '$140$', '$252$', '$63$', '$132$'),
|
||||
answer: 'б',
|
||||
sol: R`Длина верёвки $3$ м $15$ см $=315$ см. Пусть на одну часть приходится $k$ см, тогда $4k+5k=315$, $9k=315$, $k=35$. Оставшаяся часть равна $4k=4\cdot35=140$ (см).`,
|
||||
ref: 'Герасимов «Математика, 6 кл.», гл. 2, § 5' },
|
||||
|
||||
{ idx: 8, type: 'mc', topic: 'expressions', subtopic: 'expr-fractions', diff: 2,
|
||||
text: R`Укажите номер выражения, которое показывает, за сколько часов был полностью наполнен бассейн, если за $a$ ч было заполнено $96\%$ объёма бассейна.`,
|
||||
opts: mc('$\dfrac{a}{96}$', '$\dfrac{26a}{25}$', '$\dfrac{a}{24}$', '$\dfrac{25a}{24}$', '$\dfrac{a}{25}$'),
|
||||
answer: 'г',
|
||||
sol: R`Чтобы найти всё число по его проценту, нужно данное число разделить на число процентов и умножить на $100$: $\dfrac{a}{96}\cdot100=\dfrac{100a}{96}=\dfrac{25a}{24}$ (ч).`,
|
||||
ref: 'Герасимов «Математика, 6 кл.», гл. 2, § 2' },
|
||||
|
||||
{ idx: 9, type: 'mc', topic: 'stereometry', subtopic: 'ster-rotation', diff: 2,
|
||||
text: R`Площадь сечения шара плоскостью, проходящей через его центр, равна $81\pi$. Найдите объём шара.`,
|
||||
opts: mc('$364\pi$', '$108\pi$', '$972\pi$', '$243\pi$', '$729\pi$'),
|
||||
answer: 'в',
|
||||
sol: R`Сечение через центр — большой круг радиуса $R$: $\pi R^{2}=81\pi$, откуда $R=9$. Объём $V=\dfrac43\pi R^{3}=\dfrac43\pi\cdot729=972\pi$.`,
|
||||
ref: 'Латотин «Геометрия, 11 кл.», разд. 3, § 6' },
|
||||
|
||||
{ idx: 10, type: 'open', topic: 'trigonometry', subtopic: 'trig-circle', diff: 2,
|
||||
text: R`Среди чисел $\dfrac{\pi}{6}$, $\ \dfrac{\pi}{12}$, $\ \dfrac{\pi}{2}$, $\ \dfrac{7\pi}{9}$, $\ \dfrac{5\pi}{6}$ выберите номера тех, которые принадлежат области определения выражения $\operatorname{tg}3x$.<br>1) $\dfrac{\pi}{6}$; 2) $\dfrac{\pi}{12}$; 3) $\dfrac{\pi}{2}$; 4) $\dfrac{7\pi}{9}$; 5) $\dfrac{5\pi}{6}$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
|
||||
answer: '24', ansShow: '2, 4',
|
||||
sol: R`$\operatorname{tg}3x$ определён при $3x\ne\dfrac{\pi}{2}+\pi n$, то есть $x\ne\dfrac{\pi}{6}+\dfrac{\pi n}{3}$. Проверим: $\dfrac{\pi}{6}$ — исключено; $\dfrac{\pi}{12}$ ($3x=\dfrac{\pi}{4}$) — годится; $\dfrac{\pi}{2}$ ($3x=\dfrac{3\pi}{2}$) — исключено; $\dfrac{7\pi}{9}$ ($3x=\dfrac{7\pi}{3}$) — годится; $\dfrac{5\pi}{6}$ ($3x=\dfrac{5\pi}{2}$) — исключено. Подходят 2 и 4.`,
|
||||
ref: 'Арефьева «Алгебра, 10 кл.», гл. 1, § 3' },
|
||||
|
||||
// ── Часть B: В1–В20 ──────────────────────────────────────────────────────
|
||||
{ idx: 11, type: 'long', topic: 'functions', subtopic: 'fn-graphs', diff: 2,
|
||||
fig: FIG_B1,
|
||||
text: R`В таблице приведено количество заказов в интернет-магазине на протяжении недели (с понедельника по субботу). Установите соответствие между вопросами А–В и ответами 1–6.<br><b>Вопрос:</b><br>А) В какой день недели было сделано больше всего заказов?<br>Б) В какой день недели было сделано на $14$ заказов меньше, чем в субботу?<br>В) В какой день недели было сделано на $30\%$ меньше заказов, чем в пятницу?<br><b>Ответ:</b><br>1) Понедельник; 2) Вторник; 3) Среда; 4) Четверг; 5) Пятница; 6) Суббота.<br><i>Ответ запишите сочетанием букв и цифр, например: А1Б1В4.</i>`,
|
||||
answer: 'А6Б4В3', ansShow: 'А6Б4В3',
|
||||
sol: R`А) Больше всего заказов в субботу ($66$) — ответ 6. Б) $66-14=52$ — это четверг — ответ 4. В) $30\%$ меньше, чем в пятницу: $60\cdot0{,}7=42$ — это среда — ответ 3.`,
|
||||
ref: 'Герасимов «Математика, 5 кл.», ч. 2, гл. 3, § 16' },
|
||||
|
||||
{ idx: 12, type: 'long', topic: 'numbers', subtopic: 'num-divisibility', diff: 2,
|
||||
text: R`Для начала каждого из предложений А–В подберите его окончание 1–6 так, чтобы получилось верное утверждение.<br><b>Начало:</b><br>А) Остаток при делении числа $8756$ на $9$ равен …<br>Б) Наибольший остаток, который может получиться при делении натурального числа на $7$, равен …<br>В) Цифра, которую нужно подставить вместо звёздочки, чтобы трёхзначное натуральное число $\overline{37*}$ было кратно $3$, а при делении на $5$ давало в остатке $3$, равна …<br><b>Окончание:</b><br>1) $5$; 2) $7$; 3) $6$; 4) $2$; 5) $8$; 6) $9$.<br><i>Ответ запишите сочетанием букв и цифр, например: А1Б1В4.</i>`,
|
||||
answer: 'А5Б3В5', ansShow: 'А5Б3В5',
|
||||
sol: R`А) $8756=972\cdot9+8$, остаток $8$ — окончание 5. Б) при делении на $7$ наибольший остаток равен $6$ — окончание 3. В) кратность $3$ даёт $3+7+*$ кратно $3$, то есть $*\in\{2;5;8\}$; остаток $3$ при делении на $5$ даёт последнюю цифру $3$ или $8$. Общая цифра — $8$ — окончание 5.`,
|
||||
ref: 'Герасимов «Математика, 5 кл.», ч. 1, гл. 1, § 11; § 13' },
|
||||
|
||||
{ idx: 13, type: 'open', topic: 'expressions', subtopic: 'expr-powers-roots', diff: 3,
|
||||
text: R`Выберите верные утверждения.<br>1) значение выражения $\left(-\sqrt[4]{1{,}6}\right)^{4}$ равно $1{,}6$;<br>2) значение выражения $5-|-2{,}3|$ равно $7{,}3$;<br>3) значение выражения $\left(\dfrac12\right)^{\log_{0{,}5}3}$ равно $-3$;<br>4) значение выражения $\log_3\sqrt[4]{9}$ равно $2$;<br>5) значение выражения $\sqrt{32\sin\dfrac{\pi}{6}}$ равно $4$;<br>6) значение выражения $\sqrt{160^{2}-96^{2}}$ равно $128$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
|
||||
answer: '156', ansShow: '1, 5, 6',
|
||||
sol: R`$1)$ $\left(-\sqrt[4]{1{,}6}\right)^{4}=1{,}6$ — верно. $\ 2)$ $5-2{,}3=2{,}7$, не $7{,}3$ — неверно. $\ 3)$ $\left(\dfrac12\right)^{\log_{0{,}5}3}=3$ — неверно. $\ 4)$ $\log_3 3^{1/2}=0{,}5$ — неверно. $\ 5)$ $\sqrt{32\cdot0{,}5}=\sqrt{16}=4$ — верно. $\ 6)$ $\sqrt{(160-96)(160+96)}=\sqrt{64\cdot256}=8\cdot16=128$ — верно. Подходят 1, 5, 6.`,
|
||||
ref: 'Арефьева «Алгебра, 10 кл.», гл. 2, § 14' },
|
||||
|
||||
{ idx: 14, type: 'open', topic: 'stereometry', subtopic: 'ster-basics', diff: 3,
|
||||
text: R`Выберите верные утверждения, если известно, что прямая $a$ и плоскость $\alpha$ параллельны.<br>1) любая прямая, перпендикулярная прямой $a$, перпендикулярна плоскости $\alpha$;<br>2) любая прямая, перпендикулярная плоскости $\alpha$, перпендикулярна прямой $a$;<br>3) прямая $a$ не имеет общих точек ни с одной прямой, лежащей в плоскости $\alpha$;<br>4) прямая $a$ имеет общую точку с плоскостью $\alpha$;<br>5) через любую точку пространства можно провести прямую, параллельную прямой $a$;<br>6) любая прямая, параллельная плоскости $\alpha$, параллельна прямой $a$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
|
||||
answer: '235', ansShow: '2, 3, 5',
|
||||
sol: R`$1)$ неверно. $\ 2)$ верно: прямая, перпендикулярная $\alpha$, перпендикулярна каждой прямой этой плоскости, а значит и параллельной ей прямой $a$. $\ 3)$ верно: $a\parallel\alpha$ означает, что $a$ не имеет общих точек с $\alpha$, поэтому и ни с одной прямой в $\alpha$. $\ 4)$ неверно. $\ 5)$ верно: через любую точку можно провести прямую, параллельную данной. $\ 6)$ неверно. Подходят 2, 3, 5.`,
|
||||
ref: 'Латотин «Геометрия, 10 кл.», разд. 2, § 5' },
|
||||
|
||||
{ idx: 15, type: 'open', topic: 'planimetry', subtopic: 'plan-triangles', diff: 2,
|
||||
text: R`В прямоугольном треугольнике $ACB$ угол $C$ равен $90^\circ$, а $CM$ — медиана, проведённая к гипотенузе, причём $CM=2\sqrt2$. Найдите квадрат длины гипотенузы.`,
|
||||
answer: '32',
|
||||
sol: R`Медиана прямоугольного треугольника, проведённая к гипотенузе, равна её половине, поэтому $AB=2\,CM=4\sqrt2$. Тогда $AB^{2}=\left(4\sqrt2\right)^{2}=32$.`,
|
||||
ref: 'Казаков «Геометрия, 8 кл.», гл. 2, § 15' },
|
||||
|
||||
{ idx: 16, type: 'open', topic: 'expressions', subtopic: 'expr-fractions', diff: 3,
|
||||
text: R`Найдите значение выражения $\dfrac{(x-3)^{2}-4}{x^{2}-4x-5}$ при $x=-1\dfrac15$.`,
|
||||
answer: '11',
|
||||
sol: R`Числитель $(x-3)^{2}-4=(x-3-2)(x-3+2)=(x-5)(x-1)$; знаменатель $x^{2}-4x-5=(x-5)(x+1)$. Тогда дробь равна $\dfrac{x-1}{x+1}$. При $x=-\dfrac65$: $\dfrac{-\frac65-1}{-\frac65+1}=\dfrac{-\frac{11}{5}}{-\frac15}=11$.`,
|
||||
ref: 'Арефьева «Алгебра, 9 кл.», гл. 1, § 1–2' },
|
||||
|
||||
{ idx: 17, type: 'open', topic: 'word-sequences', subtopic: 'seq-progressions', diff: 2,
|
||||
text: R`Найдите сумму бесконечно убывающей геометрической прогрессии, у которой первый член равен $-56$, а второй член равен $-12\dfrac49$.`,
|
||||
answer: '-72',
|
||||
sol: R`Знаменатель $q=\dfrac{b_2}{b_1}=\dfrac{-\frac{112}{9}}{-56}=\dfrac29$. Сумма $S=\dfrac{b_1}{1-q}=\dfrac{-56}{1-\frac29}=\dfrac{-56}{\frac79}=-56\cdot\dfrac97=-72$.`,
|
||||
ref: 'Арефьева «Алгебра, 9 кл.», гл. 4, § 19' },
|
||||
|
||||
{ idx: 18, type: 'open', topic: 'word-sequences', subtopic: 'word-problems', diff: 3,
|
||||
text: R`На покупку $39$ л краски для покраски стен выделено $390$ рублей. Краска продаётся в банках объёмом $3$ л (стоимость одной банки $31{,}50$ руб.) и $10$ л (стоимость одной банки $97{,}85$ руб.); расход краски во всех банках одинаков. Какая сумма (в копейках) останется после покупки $39$ л краски, если стоимость покупки не должна превышать выделенной суммы?`,
|
||||
answer: '195',
|
||||
sol: R`Выгодно купить $3$ банки по $10$ л и $3$ банки по $3$ л (ровно $39$ л). Стоимость в копейках: $3\cdot9785+3\cdot3150=29355+9450=38805$. Выделено $390$ руб $=39000$ коп. Останется $39000-38805=195$ (коп.).`,
|
||||
ref: 'Герасимов «Математика, 5 кл.», ч. 1, гл. 2, § 7' },
|
||||
|
||||
{ idx: 19, type: 'open', topic: 'equations', subtopic: 'eq-exponential', diff: 3,
|
||||
text: R`Найдите значение выражения $36^{\,x_0}$, где $x_0$ — наибольший корень уравнения $36^{x}-10\cdot6^{x}+9=0$.`,
|
||||
answer: '81',
|
||||
sol: R`Пусть $t=6^{x}$, тогда $t^{2}-10t+9=0$, $t=1$ или $t=9$. Из $6^{x}=1$: $x=0$; из $6^{x}=9$: $x=\log_6 9$. Наибольший корень $x_0=\log_6 9$, поэтому $36^{x_0}=6^{2\log_6 9}=9^{2}=81$.`,
|
||||
ref: 'Арефьева «Алгебра, 11 кл.», гл. 2, § 5' },
|
||||
|
||||
{ idx: 20, type: 'open', topic: 'planimetry', subtopic: 'plan-quadrilaterals', diff: 4,
|
||||
text: R`В равнобедренную трапецию вписана окружность, диаметр которой равен $3{,}5$. Острый угол трапеции равен $30^\circ$. Найдите значение выражения $4\cdot S$, где $S$ — площадь трапеции.`,
|
||||
answer: '98',
|
||||
sol: R`Высота трапеции равна диаметру вписанной окружности: $h=3{,}5$. Боковая сторона $=\dfrac{h}{\sin30^\circ}=7$. По свойству описанного четырёхугольника сумма оснований равна сумме боковых сторон: $BC+AD=AB+CD=14$. Площадь $S=\dfrac{BC+AD}{2}\cdot h=\dfrac{14}{2}\cdot3{,}5=24{,}5$. Тогда $4S=98$.`,
|
||||
ref: 'Казаков «Геометрия, 8 кл.», гл. 2, § 17' },
|
||||
|
||||
{ idx: 21, type: 'open', topic: 'functions', subtopic: 'fn-derivative', diff: 3,
|
||||
text: R`Найдите минимум функции $f(x)=2+3x-x^{2}-\dfrac{x^{3}}{3}$.`,
|
||||
answer: '-7',
|
||||
sol: R`$f'(x)=3-2x-x^{2}=-(x+3)(x-1)$. Нули $x=-3$ и $x=1$; смена знака $f'$ с минуса на плюс в точке $x=-3$ — это точка минимума. $f(-3)=2-9-9-\dfrac{-27}{3}=2-9-9+9=-7$.`,
|
||||
ref: 'Арефьева «Алгебра, 10 кл.», гл. 3, § 20' },
|
||||
|
||||
{ idx: 22, type: 'open', topic: 'equations', subtopic: 'eq-linear', diff: 2,
|
||||
text: R`Найдите сумму всех натуральных решений совокупности неравенств $\left[\begin{array}{l}0{,}4x-2\le0,\\2-x>0.\end{array}\right.$`,
|
||||
answer: '15',
|
||||
sol: R`$0{,}4x-2\le0\Rightarrow x\le5$; $\ 2-x>0\Rightarrow x<2$. Объединение лучей — множество $(-\infty;5]$. Натуральные решения $1,2,3,4,5$; их сумма равна $15$.`,
|
||||
ref: 'Арефьева «Алгебра, 8 кл.», гл. 1, § 6' },
|
||||
|
||||
{ idx: 23, type: 'open', topic: 'stereometry', subtopic: 'ster-rotation', diff: 3,
|
||||
text: R`Объём цилиндра равен $28\pi$. Найдите площадь полной поверхности цилиндра $S$, если радиус его основания равен $2$. В ответ запишите значение выражения $\dfrac{S}{\pi}$.`,
|
||||
answer: '36',
|
||||
sol: R`Из $V=\pi r^{2}h$: $28\pi=\pi\cdot4\cdot h$, откуда $h=7$. Площадь полной поверхности $S=2\pi rh+2\pi r^{2}=2\pi\cdot2\cdot7+2\pi\cdot4=28\pi+8\pi=36\pi$. Тогда $\dfrac{S}{\pi}=36$.`,
|
||||
ref: 'Латотин «Геометрия, 11 кл.», разд. 1, § 2' },
|
||||
|
||||
{ idx: 24, type: 'open', topic: 'equations', subtopic: 'eq-rational', diff: 3,
|
||||
text: R`Найдите произведение наименьшего целого положительного и наименьшего целого отрицательного решений неравенства $\dfrac{7}{x+6}>\dfrac{1}{x-1}$.`,
|
||||
answer: '-15',
|
||||
sol: R`Приведём к виду $\dfrac{6x-13}{(x+6)(x-1)}>0$. Нуль числителя $x=\dfrac{13}{6}$; при $x=-6$ и $x=1$ значения не существуют. Методом интервалов решение — $(-6;1)\cup\left(\dfrac{13}{6};+\infty\right)$. Наименьшее целое положительное решение $3$, наименьшее целое отрицательное $-5$; их произведение $-15$.`,
|
||||
ref: 'Арефьева «Алгебра, 9 кл.», гл. 3, § 13' },
|
||||
|
||||
{ idx: 25, type: 'open', topic: 'equations', subtopic: 'eq-irrational', diff: 3,
|
||||
text: R`Найдите увеличенное в $3$ раза произведение наибольшего корня на количество всех корней уравнения $\sqrt[4]{4x^{4}-14x^{2}+8}=x$.`,
|
||||
answer: '12',
|
||||
sol: R`Уравнение равносильно системе $4x^{4}-14x^{2}+8=x^{4}$ при $x\ge0$, то есть $3x^{4}-14x^{2}+8=0$, $x\ge0$. Пусть $t=x^{2}$: $3t^{2}-14t+8=0$, $t=4$ или $t=\dfrac23$. Тогда $x=2$ или $x=\sqrt{\dfrac23}$ (неотрицательные). Корней $2$, наибольший корень $2$. Произведение $2\cdot2=4$; увеличенное в $3$ раза — $12$.`,
|
||||
ref: 'Арефьева «Алгебра, 10 кл.», гл. 2, § 17' },
|
||||
|
||||
{ idx: 26, type: 'open', topic: 'stereometry', subtopic: 'ster-angles-distances', diff: 4,
|
||||
text: R`Апофема правильной четырёхугольной пирамиды равна $15$, а двугранный угол при ребре основания равен $\arccos\dfrac35$. Найдите объём пирамиды.`,
|
||||
answer: '1296',
|
||||
sol: R`Пусть $O$ — центр основания, $K$ — середина ребра основания, $SK=15$ — апофема, $\angle SKO=\arccos\dfrac35$. Тогда $OK=SK\cos\angle SKO=15\cdot\dfrac35=9$, поэтому сторона основания $AD=2\,OK=18$. Высота $SO=\sqrt{SK^{2}-OK^{2}}=\sqrt{225-81}=12$. Объём $V=\dfrac13\cdot AD^{2}\cdot SO=\dfrac13\cdot324\cdot12=1296$.`,
|
||||
ref: 'Латотин «Геометрия, 11 кл.», разд. 2, § 3' },
|
||||
|
||||
{ idx: 27, type: 'open', topic: 'trigonometry', subtopic: 'trig-equations', diff: 3,
|
||||
text: R`Найдите (в градусах) сумму различных корней уравнения $\cos^{2}\dfrac{15x}{4}-\sin^{2}\dfrac{15x}{4}=0$ на промежутке $(0^\circ;45^\circ)$.`,
|
||||
answer: '48',
|
||||
sol: R`По формуле косинуса двойного аргумента левая часть равна $\cos\dfrac{15x}{2}$. Уравнение $\cos\dfrac{15x}{2}=0$ даёт $\dfrac{15x}{2}=90^\circ+180^\circ n$, $x=12^\circ+24^\circ n$. Промежутку $(0^\circ;45^\circ)$ принадлежат $12^\circ$ и $36^\circ$; их сумма равна $48^\circ$.`,
|
||||
ref: 'Арефьева «Алгебра, 10 кл.», гл. 1, § 8' },
|
||||
|
||||
{ idx: 28, type: 'open', topic: 'equations', subtopic: 'eq-logarithmic', diff: 4,
|
||||
text: R`Найдите произведение наименьшего целого решения на количество всех натуральных решений неравенства $\log_5^{2}(x^{2}-3)-3\log_5(x^{2}-3)\le0$.`,
|
||||
answer: '-110',
|
||||
sol: R`Пусть $t=\log_5(x^{2}-3)$, тогда $t^{2}-3t\le0$, откуда $0\le t\le3$. Значит, $1\le x^{2}-3\le125$, то есть $4\le x^{2}\le128$ и $x\in\left[-8\sqrt2;-2\right]\cup\left[2;8\sqrt2\right]$. Наименьшее целое решение $-11$ (так как $8\sqrt2\approx11{,}3$). Натуральных решений $2,3,\ldots,11$ — всего $10$. Произведение $-11\cdot10=-110$.`,
|
||||
ref: 'Арефьева «Алгебра, 11 кл.», гл. 3, § 10' },
|
||||
|
||||
{ idx: 29, type: 'open', topic: 'equations', subtopic: 'eq-rational', diff: 3,
|
||||
text: R`Удвоенное произведение двух последовательных нечётных натуральных чисел на $262$ больше их суммы. Найдите эти числа. В ответ запишите сумму квадратов этих чисел.`,
|
||||
answer: '290',
|
||||
sol: R`Пусть числа $x$ и $x+2$. По условию $2x(x+2)=262+x+(x+2)$, $2x^{2}+4x=264+2x$, $x^{2}+x-132=0$, $x=11$ (корень $-12$ не подходит). Числа $11$ и $13$, сумма квадратов $121+169=290$.`,
|
||||
ref: 'Арефьева «Алгебра, 8 кл.», гл. 2, § 11' },
|
||||
|
||||
{ idx: 30, type: 'open', topic: 'stereometry', subtopic: 'ster-polyhedra', diff: 5,
|
||||
text: R`Объём правильной четырёхугольной призмы $ABCDA_1B_1C_1D_1$ равен $540$, а её высота равна $15$. Точка $P$ лежит на диагонали $BD$ так, что $BP:PD=1:2$. Через точки $P$ и $D_1$ параллельно диагонали $AC$ основания $ABCD$ проведена секущая плоскость. Найдите значение выражения $16na$, где $n$ — количество вершин многоугольника, полученного в сечении, $a$ — длина наименьшей стороны этого многоугольника.`,
|
||||
answer: '340',
|
||||
sol: R`Сторона основания $s$: из $V=s^{2}\cdot15=540$ получаем $s=6$. Через $P$ проводим прямую, параллельную $AC$; она пересекает $AB$ и $BC$, отсекая $BN=BK=4$. Сечение — пятиугольник $D_1MKNL$, значит $n=5$. Его наименьшие стороны $MK=LN$: из подобия находим $MA=LC=\dfrac{15}{4}$, $KA=NC=2$, тогда $MK=\sqrt{KA^{2}+MA^{2}}=\sqrt{4+\dfrac{225}{16}}=\dfrac{17}{4}$. Значит, $a=\dfrac{17}{4}$ и $16na=16\cdot5\cdot\dfrac{17}{4}=340$.`,
|
||||
ref: 'Латотин «Геометрия, 10 кл.», разд. 1, § 3' },
|
||||
];
|
||||
|
||||
/* ── Сборка solution_html ────────────────────────────────────────────────── */
|
||||
function ansShowOf(t) {
|
||||
if (t.ansShow != null) return t.ansShow;
|
||||
if (t.type === 'mc') return `${t.answer})`;
|
||||
return `$${t.answer}$`;
|
||||
}
|
||||
function buildSolution(t) {
|
||||
const ans = ansShowOf(t);
|
||||
let html = `${t.sol}<div class="sol-ans">Ответ: ${ans}</div>`;
|
||||
if (t.ref) html += `<div class="sol-ref" style="margin-top:6px;font-size:.85em;opacity:.7">Учебник: ${t.ref}</div>`;
|
||||
return html;
|
||||
}
|
||||
|
||||
/* ── Самопроверка (повтор логики checkAnswerServer из exam-prep.js) ────────── */
|
||||
const EPS = 1e-6;
|
||||
function srvToNumber(s) {
|
||||
if (s == null) return NaN;
|
||||
let t = String(s).trim().replace(/\$/g, '').replace(/\s+/g, '').replace(',', '.');
|
||||
const f = t.match(/^(-?\d+(?:\.\d+)?)\s*\/\s*(-?\d+(?:\.\d+)?)$/);
|
||||
if (f) { const n = Number(f[1]), d = Number(f[2]); return d === 0 ? NaN : n / d; }
|
||||
const n = Number(t); return Number.isFinite(n) ? n : NaN;
|
||||
}
|
||||
function checkAnswerServer(userInput, canonical) {
|
||||
if (userInput == null || canonical == null) return false;
|
||||
const c = String(canonical).trim();
|
||||
if (/^[а-д]$/.test(c)) return String(userInput).trim().toLowerCase() === c.toLowerCase();
|
||||
if (/^[^;]+;[^;]+$/.test(c)) return false;
|
||||
const cn = srvToNumber(c), un = srvToNumber(userInput);
|
||||
if (Number.isNaN(cn) || Number.isNaN(un)) return false;
|
||||
return Math.abs(cn - un) < EPS;
|
||||
}
|
||||
|
||||
/* ── Валидация набора ──────────────────────────────────────────────────────── */
|
||||
const problems = [];
|
||||
if (TASKS.length !== 30) problems.push(`Ожидалось 30 заданий, получено ${TASKS.length}`);
|
||||
const seen = new Set();
|
||||
for (const t of TASKS) {
|
||||
if (seen.has(t.idx)) problems.push(`Дубль task_idx=${t.idx}`); seen.add(t.idx);
|
||||
if (t.idx < 1 || t.idx > 30) problems.push(`task_idx вне 1..30: ${t.idx}`);
|
||||
if (!['mc', 'open', 'long'].includes(t.type)) problems.push(`#${t.idx}: тип ${t.type}`);
|
||||
if (t.type === 'mc') {
|
||||
if (!Array.isArray(t.opts) || t.opts.length !== 5) problems.push(`#${t.idx}: mc должен иметь 5 вариантов`);
|
||||
if (!t.opts.some(o => o[0] === t.answer)) problems.push(`#${t.idx}: answer "${t.answer}" не среди меток`);
|
||||
}
|
||||
if (!t.text || !t.sol) problems.push(`#${t.idx}: пустой text/sol`);
|
||||
if (t.type !== 'long' && !checkAnswerServer(t.answer, t.answer))
|
||||
problems.push(`#${t.idx}: answer "${t.answer}" не проходит self-check (Unicode-минус? пробел?)`);
|
||||
if (/−/.test(String(t.answer))) problems.push(`#${t.idx}: Unicode-минус в answer`);
|
||||
}
|
||||
|
||||
/* ── Экспорт для тестов/тиража (без запуска main при require) ──────────────── */
|
||||
module.exports = { TASKS, buildSolution, ansShowOf, checkAnswerServer, EXAM, VARIANT, PROV };
|
||||
if (require.main !== module) return;
|
||||
|
||||
/* ── Открытие БД ───────────────────────────────────────────────────────────── */
|
||||
const DB = path.join(__dirname, '..', 'data', 'learnspace.db');
|
||||
const db = new DatabaseSync(DB);
|
||||
|
||||
const track = db.prepare(`SELECT exam_key, variants_count FROM exam_tracks WHERE exam_key=?`).get(EXAM);
|
||||
if (!track) { console.error(`✗ Трек '${EXAM}' не найден в exam_tracks. Прерывание.`); process.exit(1); }
|
||||
|
||||
/* ── DRY-RUN сводка ────────────────────────────────────────────────────────── */
|
||||
console.log(`\n=== seed_ctmath_rt2223_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), ' | с фигурой:', 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_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 → «Варианты» → «РТ-2022/23 · этап II».\n`);
|
||||
} catch (e) {
|
||||
db.exec('ROLLBACK');
|
||||
console.error('\n✗ Ошибка записи, откат транзакции:', e.message);
|
||||
process.exitCode = 1;
|
||||
}
|
||||
db.close();
|
||||
Reference in New Issue
Block a user