fec638135f
Поле 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>
389 lines
38 KiB
JavaScript
389 lines
38 KiB
JavaScript
'use strict';
|
||
/* ───────────────────────────────────────────────────────────────────────────
|
||
seed_ctmath_rt2324_e3v1.js
|
||
Чистый вариант-пробник для трека exam-prep `ctmath`.
|
||
|
||
Источник: РТ–2023/2024, Этап III, Вариант 1 (РИКЗ, «Тематическое
|
||
консультирование по математике»). 30 заданий: А1–А10 + В1–В20.
|
||
Перенабрано вручную в KaTeX по PDF (визуальное чтение, НЕ OCR):
|
||
F:\!Рабочие\ЦТ\Математика\Математика\РТ\2023-2024\МАТ РТ-3 23_24 В1.pdf
|
||
|
||
variant=106 — Этап III РТ-2023/24 (этап I — 104, этап II — 105).
|
||
Геометрия закодирована текстом (стандартная разметка фигур / углы словами).
|
||
Исключение — В1 (чтение графика): кусочно-линейная нечётная функция
|
||
воспроизведена inline-SVG в figure_html (как у math9-заданий); все 6
|
||
утверждений и ответ (145) согласованы с реконструкцией.
|
||
|
||
Идемпотентность: upsert по UNIQUE(exam_key, variant, task_idx).
|
||
Запуск:
|
||
node backend/scripts/seed_ctmath_rt2324_e3v1.js # DRY-RUN (по умолчанию)
|
||
node backend/scripts/seed_ctmath_rt2324_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 = 106;
|
||
const PROV = 'РТ–2023/2024, Этап III, Вариант 1';
|
||
const R = String.raw;
|
||
|
||
/* opts: метки кириллица а–д (как в существующих строках ctmath; checkAnswerServer
|
||
имеет ветку /^[а-д]$/). РТ-варианты 1..5 → а..д. */
|
||
const L = ['а', 'б', 'в', 'г', 'д'];
|
||
const mc = (...html) => html.map((h, i) => [L[i], h]);
|
||
|
||
/* ── SVG-график для В1: нечётная кусочно-линейная функция на [-6;6] через
|
||
точки (-6,-3),(-4,1),(4,-1),(6,3). f(0)=0; возрастает на [-6;-4] и [4;6],
|
||
убывает на [-4;4]. Цвета — только в SVG-стоки (как у math9-фигур). */
|
||
const FIG_B1 = `<svg class="task-fig" viewBox="0 0 360 230" width="360" height="230" xmlns="http://www.w3.org/2000/svg" style="max-width:360px;width:100%;height:auto;display:block;margin:10px auto">
|
||
<g stroke="#e2e8f0" stroke-width="1">
|
||
<line x1="24" y1="31" x2="24" y2="199"/><line x1="50" y1="31" x2="50" y2="199"/><line x1="76" y1="31" x2="76" y2="199"/><line x1="102" y1="31" x2="102" y2="199"/><line x1="128" y1="31" x2="128" y2="199"/><line x1="154" y1="31" x2="154" y2="199"/><line x1="180" y1="31" x2="180" y2="199"/><line x1="206" y1="31" x2="206" y2="199"/><line x1="232" y1="31" x2="232" y2="199"/><line x1="258" y1="31" x2="258" y2="199"/><line x1="284" y1="31" x2="284" y2="199"/><line x1="310" y1="31" x2="310" y2="199"/><line x1="336" y1="31" x2="336" y2="199"/>
|
||
<line x1="24" y1="31" x2="336" y2="31"/><line x1="24" y1="59" x2="336" y2="59"/><line x1="24" y1="87" x2="336" y2="87"/><line x1="24" y1="115" x2="336" y2="115"/><line x1="24" y1="143" x2="336" y2="143"/><line x1="24" y1="171" x2="336" y2="171"/><line x1="24" y1="199" x2="336" y2="199"/>
|
||
</g>
|
||
<line x1="16" y1="115" x2="346" y2="115" stroke="#334155" stroke-width="1.5"/>
|
||
<line x1="180" y1="214" x2="180" y2="14" stroke="#334155" stroke-width="1.5"/>
|
||
<polygon points="346,115 338,111 338,119" fill="#334155"/>
|
||
<polygon points="180,14 176,22 184,22" fill="#334155"/>
|
||
<polyline points="24,199 76,87 284,143 336,31" fill="none" stroke="#2563eb" stroke-width="2.5" stroke-linejoin="round" stroke-linecap="round"/>
|
||
<text x="348" y="111" font-size="13" font-style="italic" fill="#334155">x</text>
|
||
<text x="186" y="24" font-size="13" font-style="italic" fill="#334155">y</text>
|
||
<text x="167" y="131" font-size="12" fill="#334155">O</text>
|
||
<text x="203" y="131" font-size="12" fill="#334155">1</text>
|
||
<text x="162" y="91" font-size="12" fill="#334155">1</text>
|
||
<text x="290" y="28" font-size="13" font-style="italic" fill="#2563eb">y=f(x)</text>
|
||
</svg>`;
|
||
|
||
/* ── 30 заданий ─────────────────────────────────────────────────────────── */
|
||
const TASKS = [
|
||
// ── Часть A: А1–А10 ──────────────────────────────────────────────────────
|
||
{ idx: 1, type: 'mc', topic: 'functions', subtopic: 'fn-graphs', diff: 1,
|
||
text: R`На координатной плоскости отмечены точки $A(2;-1)$, $B(1;2)$, $C(-2;-2)$, $D(-1;1)$, $E(0;-2)$. Выберите ту из них, сумма координат которой равна $-4$.`,
|
||
opts: mc('$A$', '$B$', '$C$', '$D$', '$E$'),
|
||
answer: 'в',
|
||
sol: R`Сумма координат: для $A$ это $2+(-1)=1$, для $B$ это $1+2=3$, для $C$ это $-2+(-2)=-4$, для $D$ это $-1+1=0$, для $E$ это $0+(-2)=-2$. Сумме $-4$ соответствует точка $C$.`,
|
||
ref: 'Математика, 6 класс, гл. 5, § 1' },
|
||
|
||
{ idx: 2, type: 'mc', topic: 'stereometry', subtopic: 'ster-basics', diff: 3,
|
||
text: R`Дан куб $ABCDA_1B_1C_1D_1$. Точка $K$ — середина диагонали $A_1D$. Среди отрезков $A_1B_1$, $B_1D_1$, $C_1K$, $BB_1$, $A_1C_1$ укажите отрезок, по которому плоскость, заданная прямой $DC_1$ и точкой $K$, пересекает плоскость грани $A_1B_1C_1D_1$.`,
|
||
opts: mc('$A_1B_1$', '$B_1D_1$', '$C_1K$', '$BB_1$', '$A_1C_1$'),
|
||
answer: 'д',
|
||
sol: R`Секущая плоскость, заданная прямой $DC_1$ и точкой $K$, содержит точку $C_1$ (она на $DC_1$) и точку $A_1$ (так как $K$ — середина $A_1D$, прямая $DC_1$ и точка $K$ задают плоскость диагонального сечения, проходящую через $A_1$). Точки $A_1$ и $C_1$ принадлежат и грани $A_1B_1C_1D_1$, поэтому пересечение плоскостей — отрезок $A_1C_1$.`,
|
||
ref: 'Геометрия, 10 класс, разд. 1, § 2–3' },
|
||
|
||
{ idx: 3, type: 'mc', topic: 'numbers', subtopic: 'num-real', diff: 2,
|
||
text: R`Расположите числа $\log_3 27$, $\ 3^{-1}$, $\ \sqrt{64}$ в порядке возрастания.`,
|
||
opts: mc('$\sqrt{64};\ \log_3 27;\ 3^{-1}$', '$3^{-1};\ \sqrt{64};\ \log_3 27$', '$\sqrt{64};\ 3^{-1};\ \log_3 27$', '$3^{-1};\ \log_3 27;\ \sqrt{64}$', '$\log_3 27;\ \sqrt{64};\ 3^{-1}$'),
|
||
answer: 'г',
|
||
sol: R`$\log_3 27=\log_3 3^{3}=3$; $\ 3^{-1}=\dfrac13$; $\ \sqrt{64}=8$. Так как $\dfrac13<3<8$, числа в порядке возрастания: $3^{-1};\ \log_3 27;\ \sqrt{64}$.`,
|
||
ref: 'Алгебра, 8 класс, гл. 1, § 1–4; гл. 11 кл., § 3' },
|
||
|
||
{ idx: 4, type: 'mc', topic: 'expressions', subtopic: 'expr-polynomials', diff: 1,
|
||
text: R`Укажите номер выражения, тождественно равного выражению $a^{3}$.`,
|
||
opts: mc('$a:a^{3}$', '$a\cdot a^{2}$', '$\left(a^{2}\right)^{2}$', '$3a$', '$a^{-3}$'),
|
||
answer: 'б',
|
||
sol: R`По свойству степеней $a\cdot a^{2}=a^{1+2}=a^{3}$. (Остальные: $a:a^{3}=a^{-2}$; $\left(a^{2}\right)^{2}=a^{4}$; $3a$ и $a^{-3}$ не равны $a^{3}$.)`,
|
||
ref: 'Алгебра, 7 класс, гл. 2, § 5' },
|
||
|
||
{ idx: 5, type: 'mc', topic: 'expressions', subtopic: 'expr-polynomials', diff: 1,
|
||
text: R`Результат разложения многочлена $4b^{2}+4bc-4b$ на множители имеет вид:`,
|
||
opts: mc('$4b(b+c)$', '$4b(bc-1)$', '$4b(1+c)$', '$(4b-1)(b+c)$', '$4b(b+c-1)$'),
|
||
answer: 'д',
|
||
sol: R`Общий множитель членов многочлена $4b^{2}+4bc-4b$ — одночлен $4b$. Тогда $4b^{2}+4bc-4b=4b(b+c-1)$.`,
|
||
ref: 'Алгебра, 7 класс, гл. 2, § 14' },
|
||
|
||
{ idx: 6, type: 'open', topic: 'expressions', subtopic: 'expr-powers-roots', diff: 2,
|
||
text: R`Среди чисел $10$, $99$, $0$, $-10$, $100$ укажите номера тех, которые не входят в область определения выражения $\dfrac{1}{10-\sqrt{x}}$.<br>1) $10$; 2) $99$; 3) $0$; 4) $-10$; 5) $100$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
|
||
answer: '45', ansShow: '4, 5',
|
||
sol: R`Выражение $\dfrac{1}{10-\sqrt{x}}$ имеет смысл при $x\ge0$ и $10-\sqrt{x}\ne0$, то есть $x\ge0$, $x\ne100$. Область определения $[0;100)\cup(100;+\infty)$. Из данных чисел ей не принадлежат $-10$ (так как $-10<0$) и $100$ (исключено). Это числа под номерами 4 и 5.`,
|
||
ref: 'Алгебра, 8 класс, гл. 1, § 1' },
|
||
|
||
{ idx: 7, type: 'mc', topic: 'word-sequences', subtopic: 'word-problems', diff: 2,
|
||
text: R`За три четверти учебного года Петя использовал $\dfrac25$ купленных в начале учебного года тетрадей, после чего у него осталось $48$ тетрадей. Сколько тетрадей купил Петя в начале учебного года?`,
|
||
opts: mc('$80$', '$96$', '$120$', '$74$', '$116$'),
|
||
answer: 'а',
|
||
sol: R`Числу $48$ соответствует дробь $1-\dfrac25=\dfrac35$ всех тетрадей. Тогда куплено $48:\dfrac35=\dfrac{48\cdot5}{3}=80$ тетрадей.`,
|
||
ref: 'Математика, 5 класс, ч. 2, гл. 3, § 10' },
|
||
|
||
{ idx: 8, type: 'mc', topic: 'trigonometry', subtopic: 'trig-identities', diff: 2,
|
||
text: R`Найдите значение выражения $\operatorname{tg}(-120^\circ)+\left|-\sqrt3\right|$.`,
|
||
opts: mc('$0$', '$\dfrac{4\sqrt3}{3}$', '$1-\sqrt3$', '$2\sqrt3$', '$-\dfrac{2\sqrt3}{3}$'),
|
||
answer: 'г',
|
||
sol: R`$\operatorname{tg}(-120^\circ)=-\operatorname{tg}120^\circ=-\operatorname{tg}(180^\circ-60^\circ)=\operatorname{tg}60^\circ=\sqrt3$. Тогда $\operatorname{tg}(-120^\circ)+\left|-\sqrt3\right|=\sqrt3+\sqrt3=2\sqrt3.$`,
|
||
ref: 'Алгебра, 10 класс, гл. 1, § 3; § 9' },
|
||
|
||
{ idx: 9, type: 'mc', topic: 'stereometry', subtopic: 'ster-rotation', diff: 2,
|
||
text: R`Сечение сферы плоскостью, отстоящей от её центра на расстоянии $3$, имеет радиус $3\sqrt2$. Найдите радиус сферы.`,
|
||
opts: mc('$9\sqrt2$', '$3\sqrt3$', '$6$', '$12$', '$4\sqrt3$'),
|
||
answer: 'б',
|
||
sol: R`Радиус сферы $R$ — гипотенуза прямоугольного треугольника с катетами $3$ (расстояние до плоскости) и $3\sqrt2$ (радиус сечения). По теореме Пифагора $R^{2}=3^{2}+\left(3\sqrt2\right)^{2}=9+18=27$, поэтому $R=3\sqrt3$.`,
|
||
ref: 'Геометрия, 11 класс, разд. 3, § 5' },
|
||
|
||
{ idx: 10, type: 'open', topic: 'functions', subtopic: 'fn-properties', diff: 2,
|
||
text: R`Укажите номера функций, которые принимают только положительные значения на промежутке $(4;+\infty)$.<br>1) $f(x)=-4x$;<br>2) $f(x)=\sqrt{x-4}$;<br>3) $f(x)=x^{3}-4$;<br>4) $f(x)=\log_{\frac14}x$;<br>5) $f(x)=-x^{2}-4$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
|
||
answer: '23', ansShow: '2, 3',
|
||
sol: R`$1)$ $-4x$ при $x>4$ отрицательна. $\ 2)$ $\sqrt{x-4}$ при $x>4$ положительна. $\ 3)$ $x^{3}-4$ положительна при $x>\sqrt[3]{4}$, а $(4;+\infty)\subset(\sqrt[3]{4};+\infty)$ — положительна. $\ 4)$ $\log_{\frac14}x$ положительна только на $(0;1)$. $\ 5)$ $-x^{2}-4$ отрицательна при всех $x$. Подходят функции 2 и 3.`,
|
||
ref: 'Алгебра, 8 класс, гл. 3, § 13–14' },
|
||
|
||
// ── Часть B: В1–В20 ──────────────────────────────────────────────────────
|
||
{ idx: 11, type: 'open', topic: 'functions', subtopic: 'fn-properties', diff: 3,
|
||
fig: FIG_B1,
|
||
text: R`На рисунке изображён график функции $y=f(x)$, определённой на промежутке $[-6;6]$. Выберите верные утверждения.<br>1) функция является нечётной;<br>2) $f(3)>0$;<br>3) график функции симметричен относительно оси ординат;<br>4) $f(-5)>f(-6)$;<br>5) функция убывает на промежутке $[-4;4]$;<br>6) график функции $y=f(x)+3$ проходит через точку $(0;2)$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
|
||
answer: '145', ansShow: '1, 4, 5',
|
||
sol: R`$1)$ верно: график симметричен относительно начала координат, поэтому функция нечётная. $\ 2)$ неверно: по графику $f(3)<0$. $\ 3)$ неверно: график нечётной функции симметричен относительно начала координат, а не оси ординат. $\ 4)$ верно: на промежутке $[-6;-4]$ функция возрастает, поэтому $f(-5)>f(-6)$. $\ 5)$ верно: на отрезке $[-4;4]$ при увеличении $x$ значения функции уменьшаются. $\ 6)$ неверно: $f(0)=0$, поэтому график $y=f(x)+3$ проходит через точку $(0;3)$, а не $(0;2)$.`,
|
||
ref: 'Алгебра, 9 класс, гл. 2, § 6–9' },
|
||
|
||
{ idx: 12, type: 'long', topic: 'stereometry', subtopic: 'ster-angles-distances', diff: 3,
|
||
text: R`$ABCDA_1B_1C_1D_1$ — куб. Точки $M$ и $K$ — середины рёбер $A_1D_1$ и $AA_1$ соответственно. Для начала каждого из предложений А–В подберите его окончание 1–6 так, чтобы получилось верное утверждение.<br><b>Начало:</b><br>А) Величина угла между прямыми $A_1B_1$ и $KM$ равна …<br>Б) Величина угла между прямыми $B_1C_1$ и $KM$ равна …<br>В) Величина угла между прямыми $BD$ и $KM$ равна …<br><b>Окончание:</b><br>1) $30^\circ$; 2) $0^\circ$; 3) $60^\circ$; 4) $90^\circ$; 5) $120^\circ$; 6) $45^\circ$.<br><i>Ответ запишите сочетанием букв и цифр, например: А1Б1В4.</i>`,
|
||
answer: 'А4Б6В3', ansShow: 'А4Б6В3',
|
||
sol: R`А) Прямая $A_1B_1$ перпендикулярна плоскости грани $AA_1D_1D$, а $KM$ лежит в этой плоскости, поэтому $A_1B_1\perp KM$ — угол $90^\circ$ (окончание 4). Б) $B_1C_1\parallel A_1D_1$, поэтому угол между $B_1C_1$ и $KM$ равен углу $A_1MK$; в равнобедренном прямоугольном треугольнике $KA_1M$ ($A_1K=A_1M$) он равен $45^\circ$ (окончание 6). В) Через середину $P$ ребра проведём $MP\parallel B_1D_1$; треугольник $PMK$ равносторонний, поэтому угол между $BD$ и $KM$ равен $60^\circ$ (окончание 3).`,
|
||
ref: 'Геометрия, 10 класс, разд. 2, § 4' },
|
||
|
||
{ idx: 13, type: 'open', topic: 'numbers', subtopic: 'num-divisibility', diff: 2,
|
||
text: R`Найдите сумму всех натуральных делителей числа $95$.`,
|
||
answer: '120',
|
||
sol: R`Число $95=5\cdot19$ имеет четыре натуральных делителя: $1$, $5$, $19$ и $95$. Их сумма равна $1+5+19+95=120$.`,
|
||
ref: 'Математика, 5 класс, ч. 1, гл. 1, § 12' },
|
||
|
||
{ idx: 14, type: 'open', topic: 'equations', subtopic: 'eq-linear', diff: 2,
|
||
text: R`Найдите произведение наименьшего и наибольшего целых решений двойного неравенства $-51\dfrac13<-3x<4\sqrt2$.`,
|
||
answer: '-17',
|
||
sol: R`Разделим все части на $-3$ (знаки неравенства меняются на противоположные): $-\dfrac{4\sqrt2}{3}<x<17\dfrac19$. Так как $-\dfrac{4\sqrt2}{3}\approx-1{,}9$, наименьшее целое решение равно $-1$, наибольшее — $17$. Их произведение $-1\cdot17=-17$.`,
|
||
ref: 'Алгебра, 8 класс, гл. 1, § 6' },
|
||
|
||
{ idx: 15, type: 'open', topic: 'planimetry', subtopic: 'plan-triangles', diff: 2,
|
||
text: R`На отрезке $AB$, равном $13$ см $5$ мм, взята точка $C$ так, что $AC:AB=7:15$. Найдите (в миллиметрах) длину отрезка $CB$.`,
|
||
answer: '72',
|
||
sol: R`$AB=13$ см $5$ мм $=135$ мм. Так как отрезок $AB$ разделён точкой $C$ в отношении $AC:AB=7:15$, то $CB$ составляет $\dfrac{15-7}{15}=\dfrac{8}{15}$ длины $AB$. Тогда $CB=\dfrac{8}{15}\cdot135=72$ (мм).`,
|
||
ref: 'Геометрия, 7 класс, гл. 1, § 3' },
|
||
|
||
{ idx: 16, type: 'open', topic: 'equations', subtopic: 'eq-linear', diff: 2,
|
||
text: R`Туристическая фирма организовала отдых на туристической базе для $4350$ взрослых и детей. Сколько детей отдыхало на туристической базе, если количество детей составило $16\%$ от количества взрослых?`,
|
||
answer: '600',
|
||
sol: R`Пусть число взрослых равно $x$, тогда детей $0{,}16x$. Составим уравнение $x+0{,}16x=4350$, $1{,}16x=4350$, $x=3750$. Значит, детей $4350-3750=600$.`,
|
||
ref: 'Алгебра, 7 класс, гл. 3, § 16' },
|
||
|
||
{ idx: 17, type: 'open', topic: 'word-sequences', subtopic: 'seq-progressions', diff: 2,
|
||
text: R`Геометрическая прогрессия $(b_n)$ задана формулой $n$-го члена $b_n=2\cdot3^{\,n+1}$. Найдите сумму пяти первых членов этой прогрессии.`,
|
||
answer: '2178',
|
||
sol: R`Первый член $b_1=2\cdot3^{2}=18$, второй $b_2=2\cdot3^{3}=54$, знаменатель $q=\dfrac{b_2}{b_1}=3$. По формуле суммы $S_5=\dfrac{b_1\left(q^{5}-1\right)}{q-1}=\dfrac{18\left(3^{5}-1\right)}{3-1}=\dfrac{18\cdot242}{2}=9\cdot242=2178$.`,
|
||
ref: 'Алгебра, 9 класс, гл. 4, § 18' },
|
||
|
||
{ idx: 18, type: 'open', topic: 'equations', subtopic: 'eq-rational', diff: 3,
|
||
text: R`Пусть $(x_1;y_1)$ и $(x_2;y_2)$ — решения системы уравнений $\begin{cases}x^{2}-y=7,\\y-x=5.\end{cases}$ Найдите значение выражения $x_1\cdot y_2+x_2\cdot y_1$.`,
|
||
answer: '-19',
|
||
sol: R`Из второго уравнения $y=5+x$. Подставив в первое: $x^{2}-(5+x)=7$, $x^{2}-x-12=0$, $x=-3$ или $x=4$. Решения системы: $(-3;2)$ и $(4;9)$. Тогда $x_1\cdot y_2+x_2\cdot y_1=(-3)\cdot9+4\cdot2=-27+8=-19$. (Ответ не зависит от порядка решений.)`,
|
||
ref: 'Алгебра, 9 класс, гл. 3, § 11' },
|
||
|
||
{ idx: 19, type: 'open', topic: 'equations', subtopic: 'eq-logarithmic', diff: 3,
|
||
text: R`Решите уравнение $\log_4\dfrac{x^{2}+3x-40}{x-5}=1$. В ответ запишите сумму его корней (корень, если он единственный).`,
|
||
answer: '-4',
|
||
sol: R`Уравнение равносильно $\dfrac{x^{2}+3x-40}{x-5}=4$ при $x\ne5$. Отсюда $x^{2}+3x-40=4(x-5)$, $x^{2}-x-20=0$, $x=-4$ или $x=5$. Корень $x=5$ не входит в область определения, поэтому единственный корень $x=-4$.`,
|
||
ref: 'Алгебра, 11 класс, гл. 3, § 9' },
|
||
|
||
{ idx: 20, type: 'open', topic: 'planimetry', subtopic: 'plan-quadrilaterals', diff: 2,
|
||
text: R`Найдите площадь ромба (в квадратных сантиметрах), если его периметр равен $4$ дм, а одна из диагоналей равна $12$ см.`,
|
||
answer: '96',
|
||
sol: R`Периметр $4$ дм $=40$ см, поэтому сторона ромба равна $10$ см. Половина данной диагонали $6$ см; по теореме Пифагора половина второй диагонали $\sqrt{10^{2}-6^{2}}=8$ см, вся вторая диагональ $16$ см. Площадь $S=\dfrac{d_1 d_2}{2}=\dfrac{12\cdot16}{2}=96$ (см$^2$).`,
|
||
ref: 'Геометрия, 8 класс, гл. 1, § 5; гл. 2, § 15' },
|
||
|
||
{ idx: 21, type: 'open', topic: 'trigonometry', subtopic: 'trig-identities', diff: 3,
|
||
text: R`Найдите значение выражения $75\cos\alpha$, если $\operatorname{ctg}\alpha=\dfrac{\sqrt6}{12}$ и $\pi<\alpha<\dfrac{3\pi}{2}$.`,
|
||
answer: '-15',
|
||
sol: R`$\operatorname{tg}\alpha=\dfrac{1}{\operatorname{ctg}\alpha}=\dfrac{12}{\sqrt6}=2\sqrt6$. Из тождества $1+\operatorname{tg}^{2}\alpha=\dfrac{1}{\cos^{2}\alpha}$ получаем $1+24=\dfrac{1}{\cos^{2}\alpha}$, $\cos^{2}\alpha=\dfrac{1}{25}$. В третьей четверти $\cos\alpha<0$, поэтому $\cos\alpha=-\dfrac15$ и $75\cos\alpha=-15$.`,
|
||
ref: 'Алгебра, 10 класс, гл. 1, § 4' },
|
||
|
||
{ idx: 22, type: 'open', topic: 'equations', subtopic: 'eq-exponential', diff: 3,
|
||
text: R`Найдите сумму всех целых решений неравенства $5^{\,x+1}+(0{,}2)^{-x}<750$ на промежутке $(-7;7)$.`,
|
||
answer: '-18',
|
||
sol: R`Так как $(0{,}2)^{-x}=5^{x}$, неравенство примет вид $5\cdot5^{x}+5^{x}<750$, $6\cdot5^{x}<750$, $5^{x}<125=5^{3}$, откуда $x<3$. Пересечение $(-\infty;3)$ с $(-7;7)$ — интервал $(-7;3)$. Целые решения $-6,\ldots,2$; их сумма равна $-18$.`,
|
||
ref: 'Алгебра, 11 класс, гл. 2, § 6' },
|
||
|
||
{ idx: 23, type: 'open', topic: 'stereometry', subtopic: 'ster-polyhedra', diff: 3,
|
||
text: R`В правильной шестиугольной пирамиде высота равна $2\sqrt3$, а радиус окружности, описанной около основания, равен $2\sqrt5$. Найдите объём пирамиды.`,
|
||
answer: '60',
|
||
sol: R`Для правильного шестиугольника сторона равна радиусу описанной окружности: $AB=2\sqrt5$. Площадь основания $S_0=\dfrac{3\sqrt3}{2}AB^{2}=\dfrac{3\sqrt3}{2}\cdot20=30\sqrt3$. Объём $V=\dfrac13 S_0 H=\dfrac13\cdot30\sqrt3\cdot2\sqrt3=\dfrac13\cdot30\cdot2\cdot3=60$.`,
|
||
ref: 'Геометрия, 11 класс, разд. 2, § 3' },
|
||
|
||
{ idx: 24, type: 'open', topic: 'functions', subtopic: 'fn-derivative', diff: 4,
|
||
text: R`Найдите увеличенное в пять раз произведение точек экстремума функции $f(x)=x^{3}(x-7)^{2}$.`,
|
||
answer: '147',
|
||
sol: R`Производная $f'(x)=3x^{2}(x-7)^{2}+x^{3}\cdot2(x-7)=x^{2}(x-7)(5x-21)$. Нули: $x=0$, $x=7$, $x=4{,}2$. Знаки $f'$ показывают, что $x=4{,}2$ — точка максимума, $x=7$ — точка минимума ($x=0$ экстремумом не является). Произведение точек экстремума $4{,}2\cdot7=29{,}4$, увеличенное в пять раз: $5\cdot29{,}4=147$.`,
|
||
ref: 'Алгебра, 10 класс, гл. 3, § 20' },
|
||
|
||
{ idx: 25, type: 'open', topic: 'equations', subtopic: 'eq-rational', diff: 3,
|
||
text: R`Даны два натуральных числа, одно из которых на $4$ больше другого. Произведение этих двух чисел больше их суммы на $139$. Найдите наименьшее общее кратное этих чисел.`,
|
||
answer: '165',
|
||
sol: R`Пусть меньшее число $x$, тогда большее $x+4$. По условию $x(x+4)=x+(x+4)+139$, $x^{2}+2x-143=0$, $x=11$ (корень $x=-13$ не подходит). Числа $11$ и $15$; так как они взаимно простые, их наименьшее общее кратное равно $11\cdot15=165$.`,
|
||
ref: 'Алгебра, 8 класс, гл. 2, § 11' },
|
||
|
||
{ idx: 26, type: 'open', topic: 'equations', subtopic: 'eq-irrational', diff: 3,
|
||
text: R`Найдите произведение корней уравнения $\sqrt{x-16}-\sqrt{(x-16)(3x+8)}=0$ (корень, если он единственный). В ответ запишите полученный результат, увеличенный в $3$ раза.`,
|
||
answer: '48',
|
||
sol: R`Уравнение равносильно $\sqrt{x-16}=\sqrt{(x-16)(3x+8)}$. Возведя в квадрат: $x-16=(x-16)(3x+8)$, $(x-16)(3x+7)=0$, откуда $x=16$ или $x=-\dfrac73$. Проверка: при $x=-\dfrac73$ выражение $\sqrt{x-16}$ не имеет смысла, поэтому единственный корень $x=16$. Увеличенное в $3$ раза: $3\cdot16=48$.`,
|
||
ref: 'Алгебра, 10 класс, гл. 2, § 17' },
|
||
|
||
{ idx: 27, type: 'open', topic: 'stereometry', subtopic: 'ster-rotation', diff: 4,
|
||
text: R`Через вершину конуса и хорду основания, стягивающую дугу в $120^\circ$, проведено сечение. Найдите значение выражения $S^{2}$, где $S$ — площадь этого сечения, если осевым сечением конуса является равносторонний треугольник, площадь которого равна $20\sqrt3$.`,
|
||
answer: '975',
|
||
sol: R`Площадь равностороннего осевого сечения $\dfrac{a^{2}\sqrt3}{4}=20\sqrt3$, откуда $a^{2}=80$, $a=4\sqrt5$ — образующая конуса; радиус основания $2\sqrt5$. Хорда $AB$ стягивает дугу $120^\circ$: по теореме косинусов $AB^{2}=\left(2\sqrt5\right)^{2}+\left(2\sqrt5\right)^{2}-2\cdot2\sqrt5\cdot2\sqrt5\cos120^\circ=60$, $AB=2\sqrt{15}$. Сечение — равнобедренный треугольник с боковыми сторонами $4\sqrt5$ и основанием $2\sqrt{15}$; высота к основанию $CK=\sqrt{\left(4\sqrt5\right)^{2}-\left(\sqrt{15}\right)^{2}}=\sqrt{65}$. Площадь $S=\dfrac12\cdot2\sqrt{15}\cdot\sqrt{65}=5\sqrt{39}$, поэтому $S^{2}=25\cdot39=975$.`,
|
||
ref: 'Геометрия, 11 класс, разд. 2, § 4' },
|
||
|
||
{ idx: 28, type: 'open', topic: 'trigonometry', subtopic: 'trig-equations', diff: 4,
|
||
text: R`Найдите (в градусах) сумму различных корней уравнения $\cos x-\sqrt5\sin3x=\cos5x$ на промежутке $[-270^\circ;-135^\circ]$.`,
|
||
answer: '-420',
|
||
sol: R`Перенесём: $\cos x-\cos5x-\sqrt5\sin3x=0$. По формуле разности косинусов $\cos x-\cos5x=2\sin3x\sin2x$, поэтому $\sin3x(2\sin2x-\sqrt5)=0$. Уравнение $\sin2x=\dfrac{\sqrt5}{2}>1$ решений не имеет. Из $\sin3x=0$: $3x=180^\circ n$, $x=60^\circ n$. Промежутку $[-270^\circ;-135^\circ]$ принадлежат $-180^\circ$ ($n=-3$) и $-240^\circ$ ($n=-4$); их сумма равна $-420^\circ$.`,
|
||
ref: 'Алгебра, 10 класс, гл. 1, § 8; § 12' },
|
||
|
||
{ idx: 29, type: 'open', topic: 'equations', subtopic: 'eq-logarithmic', diff: 4,
|
||
text: R`Найдите сумму всех целых решений неравенства $\log_{0{,}7}\left(x^{2}-7x+18\right)-\log_{0{,}7}(x-1)<\log_{0{,}7}2$ на промежутке $(-10;10)$.`,
|
||
answer: '35',
|
||
sol: R`Неравенство приводится к виду $\log_{0{,}7}\left(x^{2}-7x+18\right)<\log_{0{,}7}\bigl(2(x-1)\bigr)$. Основание $0{,}7<1$ (функция убывает), поэтому равносильна система $\begin{cases}x^{2}-7x+18>2x-2,\\2x-2>0.\end{cases}$ Первое: $x^{2}-9x+20>0\Rightarrow x<4$ или $x>5$; второе: $x>1$. Решение $(1;4)\cup(5;+\infty)$. Пересечение с $(-10;10)$: $(1;4)\cup(5;10)$; целые $2,3,6,7,8,9$, их сумма $35$.`,
|
||
ref: 'Алгебра, 11 класс, гл. 3, § 10' },
|
||
|
||
{ idx: 30, type: 'open', topic: 'stereometry', subtopic: 'ster-angles-distances', diff: 5,
|
||
text: R`Сторона $AB$ треугольника $ABC$, у которого $AB=BC=12$, $AC=8$, лежит в плоскости $\alpha$, а длины проекций двух других сторон треугольника $ABC$ на эту плоскость относятся как $1:3$. Найдите значение выражения $\dfrac{13}{\cos^{2}\beta}$, где $\beta$ — угол между плоскостью треугольника $ABC$ и плоскостью $\alpha$.`,
|
||
answer: '256',
|
||
sol: R`Пусть $CO$ — перпендикуляр к $\alpha$, $AO:BO=1:3$, $AO=x$, $BO=3x$. Из $CO^{2}=BC^{2}-BO^{2}=AC^{2}-AO^{2}$: $144-9x^{2}=64-x^{2}$, $8x^{2}=80$, $x=\sqrt{10}$, $CO=3\sqrt6$. Высота $CK$ треугольника $ABC$ к $AB$: по формуле Герона $S=32\sqrt2$, откуда $CK=\dfrac{2S}{AB}=\dfrac{64\sqrt2}{12}=\dfrac{16\sqrt2}{3}$. Тогда $OK=\sqrt{CK^{2}-CO^{2}}=\sqrt{\dfrac{512}{9}-54}=\dfrac{\sqrt{26}}{3}$, а $\cos\beta=\dfrac{OK}{CK}=\dfrac{\sqrt{13}}{16}$. Значит, $\dfrac{13}{\cos^{2}\beta}=\dfrac{13\cdot256}{13}=256$.`,
|
||
ref: 'Геометрия, 10 класс, разд. 3, § 10' },
|
||
];
|
||
|
||
/* ── Сборка 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_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_rt2324_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 → «Варианты» → «РТ-2023/24 · этап III».\n`);
|
||
} catch (e) {
|
||
db.exec('ROLLBACK');
|
||
console.error('\n✗ Ошибка записи, откат транзакции:', e.message);
|
||
process.exitCode = 1;
|
||
}
|
||
db.close();
|