be4d43105e
Node.js/Express backend + vanilla JS frontend. Features: real-time collaborative whiteboard (SSE), multi-page support, LaTeX formulas, shapes/connectors, coordinate systems, number lines, compass, zoom/pan, Catmull-Rom pencil smoothing, ruler/protractor with rotation & resize controls, minimap navigation overlay, auto-measurements, multi-page thumbnails sidebar, PNG export, page templates. Student/teacher workflows: classes, assignments, library, dashboard. Mobile responsive. SQLite (better-sqlite3). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1176 lines
67 KiB
JavaScript
1176 lines
67 KiB
JavaScript
/**
|
||
* Seed: Физика — базовый уровень (~97 вопросов)
|
||
* Темы: кинематика, динамика, законы сохранения, МФТ, термодинамика,
|
||
* электростатика, постоянный ток, магнетизм, ЭМИ, оптика, квантовая физика
|
||
* Run: node src/db/seed-phys.js (из папки backend)
|
||
*/
|
||
'use strict';
|
||
const db = require('./db');
|
||
|
||
function getOrCreateTopic(subjectId, name) {
|
||
const existing = db.prepare(
|
||
'SELECT id FROM topics WHERE subject_id = ? AND LOWER(name) = LOWER(?)'
|
||
).get(subjectId, name);
|
||
if (existing) return existing.id;
|
||
return db.prepare('INSERT INTO topics (subject_id, name) VALUES (?, ?)')
|
||
.run(subjectId, name).lastInsertRowid;
|
||
}
|
||
|
||
const phys = db.prepare("SELECT id FROM subjects WHERE slug = 'phys'").get();
|
||
if (!phys) { console.error('Subject "phys" not found. Run migrate first.'); process.exit(1); }
|
||
const SID = phys.id;
|
||
|
||
/* ═════════════════════════════════════════════════════════════════════════
|
||
Формат вопроса:
|
||
{ topic, difficulty (1–3), type, text, options: [{text, correct}], explanation }
|
||
source_type = 'базовый' (добавляется автоматически)
|
||
═════════════════════════════════════════════════════════════════════════ */
|
||
const questions = [
|
||
|
||
/* ══════════════════════════════════════════════════════════════════════
|
||
КИНЕМАТИКА
|
||
══════════════════════════════════════════════════════════════════════ */
|
||
{
|
||
topic: 'Кинематика', difficulty: 1, type: 'single',
|
||
text: 'Тело движется равномерно со скоростью 72 км/ч. Какой путь пройдёт тело за 5 минут?',
|
||
options: [
|
||
{ text: '6000 м', correct: true },
|
||
{ text: '360 м', correct: false },
|
||
{ text: '600 м', correct: false },
|
||
{ text: '7200 м', correct: false },
|
||
],
|
||
explanation: '\\(v = 72\\,\\text{км/ч} = 20\\,\\text{м/с}\\); \\(t = 5\\cdot60 = 300\\,\\text{с}\\); \\(s = vt = 20\\cdot300 = 6000\\,\\text{м}\\).',
|
||
},
|
||
{
|
||
topic: 'Кинематика', difficulty: 1, type: 'single',
|
||
text: 'Автомобиль равноускоренно разгоняется от 0 до 30 м/с за 10 с. Чему равно ускорение автомобиля?',
|
||
options: [
|
||
{ text: '3 м/с²', correct: true },
|
||
{ text: '0,3 м/с²', correct: false },
|
||
{ text: '30 м/с²', correct: false },
|
||
{ text: '300 м/с²', correct: false },
|
||
],
|
||
explanation: '\\(a = \\dfrac{v - v_0}{t} = \\dfrac{30 - 0}{10} = 3\\,\\text{м/с}^2\\).',
|
||
},
|
||
{
|
||
topic: 'Кинематика', difficulty: 1, type: 'single',
|
||
text: 'Тело свободно падает с высоты 80 м (\\(g = 10\\) м/с²). С какой скоростью оно ударится о землю?',
|
||
options: [
|
||
{ text: '40 м/с', correct: true },
|
||
{ text: '20 м/с', correct: false },
|
||
{ text: '80 м/с', correct: false },
|
||
{ text: '4 м/с', correct: false },
|
||
],
|
||
explanation: '\\(v = \\sqrt{2gh} = \\sqrt{2\\cdot10\\cdot80} = \\sqrt{1600} = 40\\,\\text{м/с}\\).',
|
||
},
|
||
{
|
||
topic: 'Кинематика', difficulty: 1, type: 'single',
|
||
text: 'Тело брошено горизонтально со скоростью 10 м/с с высоты 45 м (\\(g = 10\\) м/с²). Время полёта равно:',
|
||
options: [
|
||
{ text: '3 с', correct: true },
|
||
{ text: '4,5 с', correct: false },
|
||
{ text: '9 с', correct: false },
|
||
{ text: '1,5 с', correct: false },
|
||
],
|
||
explanation: '\\(h = \\dfrac{gt^2}{2}\\) ⟹ \\(t = \\sqrt{\\dfrac{2h}{g}} = \\sqrt{\\dfrac{90}{10}} = 3\\,\\text{с}\\).',
|
||
},
|
||
{
|
||
topic: 'Кинематика', difficulty: 1, type: 'single',
|
||
text: 'Тело движется по окружности радиусом 5 м с угловой скоростью 4 рад/с. Линейная скорость тела равна:',
|
||
options: [
|
||
{ text: '20 м/с', correct: true },
|
||
{ text: '0,8 м/с', correct: false },
|
||
{ text: '1,25 м/с', correct: false },
|
||
{ text: '4 м/с', correct: false },
|
||
],
|
||
explanation: '\\(v = \\omega R = 4\\cdot5 = 20\\,\\text{м/с}\\).',
|
||
},
|
||
{
|
||
topic: 'Кинематика', difficulty: 2, type: 'single',
|
||
text: 'Тело начало движение из покоя с постоянным ускорением 2 м/с² и прошло путь 100 м. Скорость тела в конце пути:',
|
||
options: [
|
||
{ text: '20 м/с', correct: true },
|
||
{ text: '10 м/с', correct: false },
|
||
{ text: '\\(\\sqrt{200}\\) м/с', correct: false },
|
||
{ text: '400 м/с', correct: false },
|
||
],
|
||
explanation: '\\(v^2 = 2as = 2\\cdot2\\cdot100 = 400\\) ⟹ \\(v = 20\\,\\text{м/с}\\).',
|
||
},
|
||
{
|
||
topic: 'Кинематика', difficulty: 2, type: 'single',
|
||
text: 'Тело брошено вертикально вверх с начальной скоростью 30 м/с (\\(g = 10\\) м/с²). Максимальная высота подъёма:',
|
||
options: [
|
||
{ text: '45 м', correct: true },
|
||
{ text: '30 м', correct: false },
|
||
{ text: '90 м', correct: false },
|
||
{ text: '15 м', correct: false },
|
||
],
|
||
explanation: '\\(H = \\dfrac{v_0^2}{2g} = \\dfrac{900}{20} = 45\\,\\text{м}\\).',
|
||
},
|
||
{
|
||
topic: 'Кинематика', difficulty: 2, type: 'single',
|
||
text: 'Два поезда движутся навстречу: скорости 54 км/ч и 36 км/ч. Начальное расстояние 2700 м. Через сколько секунд они встретятся?',
|
||
options: [
|
||
{ text: '108 с', correct: true },
|
||
{ text: '50 с', correct: false },
|
||
{ text: '75 с', correct: false },
|
||
{ text: '30 с', correct: false },
|
||
],
|
||
explanation: '\\(v_\\text{сближ} = 54+36 = 90\\,\\text{км/ч} = 25\\,\\text{м/с}\\); \\(t = \\dfrac{2700}{25} = 108\\,\\text{с}\\).',
|
||
},
|
||
{
|
||
topic: 'Кинематика', difficulty: 2, type: 'single',
|
||
text: 'Тело движется по окружности радиусом 0,5 м со скоростью 3 м/с. Центростремительное ускорение:',
|
||
options: [
|
||
{ text: '18 м/с²', correct: true },
|
||
{ text: '6 м/с²', correct: false },
|
||
{ text: '9 м/с²', correct: false },
|
||
{ text: '1,5 м/с²', correct: false },
|
||
],
|
||
explanation: '\\(a_\\text{цс} = \\dfrac{v^2}{R} = \\dfrac{9}{0{,}5} = 18\\,\\text{м/с}^2\\).',
|
||
},
|
||
{
|
||
topic: 'Кинематика', difficulty: 3, type: 'single',
|
||
text: 'Тело движется из покоя с ускорением 4 м/с². Путь, пройденный за 4-ю секунду:',
|
||
options: [
|
||
{ text: '14 м', correct: true },
|
||
{ text: '32 м', correct: false },
|
||
{ text: '28 м', correct: false },
|
||
{ text: '16 м', correct: false },
|
||
],
|
||
explanation: 'Путь за \\(n\\)-ю секунду: \\(s_n = \\dfrac{a(2n-1)}{2} = \\dfrac{4\\cdot7}{2} = 14\\,\\text{м}\\).',
|
||
},
|
||
|
||
/* ══════════════════════════════════════════════════════════════════════
|
||
ДИНАМИКА
|
||
══════════════════════════════════════════════════════════════════════ */
|
||
{
|
||
topic: 'Динамика', difficulty: 1, type: 'single',
|
||
text: 'На тело массой 5 кг действует сила 20 Н. Ускорение тела равно:',
|
||
options: [
|
||
{ text: '4 м/с²', correct: true },
|
||
{ text: '100 м/с²', correct: false },
|
||
{ text: '0,25 м/с²', correct: false },
|
||
{ text: '25 м/с²', correct: false },
|
||
],
|
||
explanation: '\\(a = \\dfrac{F}{m} = \\dfrac{20}{5} = 4\\,\\text{м/с}^2\\).',
|
||
},
|
||
{
|
||
topic: 'Динамика', difficulty: 1, type: 'single',
|
||
text: 'Тело массой 200 г движется с ускорением 5 м/с². Результирующая сила:',
|
||
options: [
|
||
{ text: '1 Н', correct: true },
|
||
{ text: '0,04 Н', correct: false },
|
||
{ text: '25 Н', correct: false },
|
||
{ text: '40 Н', correct: false },
|
||
],
|
||
explanation: '\\(F = ma = 0{,}2\\cdot5 = 1\\,\\text{Н}\\).',
|
||
},
|
||
{
|
||
topic: 'Динамика', difficulty: 1, type: 'single',
|
||
text: 'При увеличении расстояния между двумя телами в 3 раза сила взаимного тяготения:',
|
||
options: [
|
||
{ text: 'уменьшится в 9 раз', correct: true },
|
||
{ text: 'уменьшится в 3 раза', correct: false },
|
||
{ text: 'увеличится в 3 раза', correct: false },
|
||
{ text: 'не изменится', correct: false },
|
||
],
|
||
explanation: 'По закону тяготения \\(F \\propto 1/r^2\\). При \\(r \\to 3r\\): \\(F \\to F/9\\).',
|
||
},
|
||
{
|
||
topic: 'Динамика', difficulty: 2, type: 'single',
|
||
text: 'Тело массой 3 кг на горизонтальной поверхности тянут горизонтальной силой 15 Н. Коэффициент трения \\(\\mu = 0{,}2\\), \\(g = 10\\) м/с². Ускорение тела:',
|
||
options: [
|
||
{ text: '3 м/с²', correct: true },
|
||
{ text: '5 м/с²', correct: false },
|
||
{ text: '2 м/с²', correct: false },
|
||
{ text: '1 м/с²', correct: false },
|
||
],
|
||
explanation: '\\(F_\\text{тр} = \\mu mg = 0{,}2\\cdot3\\cdot10 = 6\\,\\text{Н}\\); \\(F_\\text{рез} = 15-6 = 9\\,\\text{Н}\\); \\(a = 9/3 = 3\\,\\text{м/с}^2\\).',
|
||
},
|
||
{
|
||
topic: 'Динамика', difficulty: 2, type: 'single',
|
||
text: 'Тело движется по наклонной плоскости под углом \\(\\alpha = 30°\\) без трения (\\(g = 10\\) м/с²). Ускорение вдоль наклонной плоскости:',
|
||
options: [
|
||
{ text: '5 м/с²', correct: true },
|
||
{ text: '10 м/с²', correct: false },
|
||
{ text: '8,66 м/с²', correct: false },
|
||
{ text: '2,5 м/с²', correct: false },
|
||
],
|
||
explanation: '\\(a = g\\sin\\alpha = 10\\cdot\\sin30° = 10\\cdot0{,}5 = 5\\,\\text{м/с}^2\\).',
|
||
},
|
||
{
|
||
topic: 'Динамика', difficulty: 2, type: 'single',
|
||
text: 'Тело массой 0,5 кг движется по окружности радиусом 2 м со скоростью 4 м/с. Центростремительная сила:',
|
||
options: [
|
||
{ text: '4 Н', correct: true },
|
||
{ text: '1 Н', correct: false },
|
||
{ text: '8 Н', correct: false },
|
||
{ text: '2 Н', correct: false },
|
||
],
|
||
explanation: '\\(F = \\dfrac{mv^2}{R} = \\dfrac{0{,}5\\cdot16}{2} = 4\\,\\text{Н}\\).',
|
||
},
|
||
{
|
||
topic: 'Динамика', difficulty: 2, type: 'single',
|
||
text: 'Автомобиль массой 1000 кг проезжает поворот радиусом 20 м. Максимальная скорость без бокового скольжения (\\(\\mu = 0{,}5\\), \\(g = 10\\) м/с²):',
|
||
options: [
|
||
{ text: '10 м/с', correct: true },
|
||
{ text: '5 м/с', correct: false },
|
||
{ text: '20 м/с', correct: false },
|
||
{ text: '14 м/с', correct: false },
|
||
],
|
||
explanation: '\\(\\dfrac{mv^2}{R} = \\mu mg\\) ⟹ \\(v = \\sqrt{\\mu gR} = \\sqrt{0{,}5\\cdot10\\cdot20} = \\sqrt{100} = 10\\,\\text{м/с}\\).',
|
||
},
|
||
{
|
||
topic: 'Динамика', difficulty: 3, type: 'single',
|
||
text: 'Тело массой 4 кг лежит на горизонтальной поверхности (\\(\\mu = 0{,}3\\), \\(g = 10\\) м/с²). Приложена горизонтальная сила \\(F = 24\\) Н. Путь за первые 3 с (начиная из покоя):',
|
||
options: [
|
||
{ text: '13,5 м', correct: true },
|
||
{ text: '18 м', correct: false },
|
||
{ text: '9 м', correct: false },
|
||
{ text: '27 м', correct: false },
|
||
],
|
||
explanation: '\\(F_\\text{тр} = 0{,}3\\cdot4\\cdot10 = 12\\,\\text{Н}\\); \\(a = (24-12)/4 = 3\\,\\text{м/с}^2\\); \\(s = \\frac12 at^2 = \\frac12\\cdot3\\cdot9 = 13{,}5\\,\\text{м}\\).',
|
||
},
|
||
{
|
||
topic: 'Динамика', difficulty: 3, type: 'single',
|
||
text: 'Тело на наклонной плоскости с углом \\(\\alpha = 45°\\). При каком коэффициенте трения тело будет оставаться неподвижным?',
|
||
options: [
|
||
{ text: '\\(\\mu \\geq \\tan 45° = 1\\)', correct: true },
|
||
{ text: '\\(\\mu \\geq 0{,}5\\)', correct: false },
|
||
{ text: '\\(\\mu \\geq \\cos 45°\\)', correct: false },
|
||
{ text: 'при любом \\(\\mu > 0\\)', correct: false },
|
||
],
|
||
explanation: 'Тело удерживается, если \\(F_\\text{тр} \\geq mg\\sin\\alpha\\), т.е. \\(\\mu mg\\cos\\alpha \\geq mg\\sin\\alpha\\) ⟹ \\(\\mu \\geq \\tan\\alpha = \\tan45° = 1\\).',
|
||
},
|
||
{
|
||
topic: 'Динамика', difficulty: 2, type: 'single',
|
||
text: 'Ракета выбросила газы за 1 с общей массой 20 кг со скоростью 500 м/с. Тяга двигателя (реактивная сила):',
|
||
options: [
|
||
{ text: '10 000 Н', correct: true },
|
||
{ text: '500 Н', correct: false },
|
||
{ text: '25 Н', correct: false },
|
||
{ text: '20 Н', correct: false },
|
||
],
|
||
explanation: 'По третьему закону Ньютона: \\(F = \\dfrac{\\Delta m}{\\Delta t}\\cdot v = 20\\cdot500 = 10\\,000\\,\\text{Н}\\).',
|
||
},
|
||
|
||
/* ══════════════════════════════════════════════════════════════════════
|
||
ЗАКОНЫ СОХРАНЕНИЯ
|
||
══════════════════════════════════════════════════════════════════════ */
|
||
{
|
||
topic: 'Законы сохранения', difficulty: 1, type: 'single',
|
||
text: 'Тело массой 4 кг движется со скоростью 5 м/с. Импульс тела:',
|
||
options: [
|
||
{ text: '20 кг·м/с', correct: true },
|
||
{ text: '0,8 кг·м/с', correct: false },
|
||
{ text: '80 кг·м/с', correct: false },
|
||
{ text: '1,25 кг·м/с', correct: false },
|
||
],
|
||
explanation: '\\(p = mv = 4\\cdot5 = 20\\,\\text{кг}\\cdot\\text{м/с}\\).',
|
||
},
|
||
{
|
||
topic: 'Законы сохранения', difficulty: 1, type: 'single',
|
||
text: 'Тело массой 2 кг поднято на высоту 10 м (\\(g = 10\\) м/с²). Потенциальная энергия тела:',
|
||
options: [
|
||
{ text: '200 Дж', correct: true },
|
||
{ text: '20 Дж', correct: false },
|
||
{ text: '2000 Дж', correct: false },
|
||
{ text: '100 Дж', correct: false },
|
||
],
|
||
explanation: '\\(E_\\text{п} = mgh = 2\\cdot10\\cdot10 = 200\\,\\text{Дж}\\).',
|
||
},
|
||
{
|
||
topic: 'Законы сохранения', difficulty: 1, type: 'single',
|
||
text: 'Тело массой 2 кг движется со скоростью 10 м/с. Кинетическая энергия тела:',
|
||
options: [
|
||
{ text: '100 Дж', correct: true },
|
||
{ text: '20 Дж', correct: false },
|
||
{ text: '200 Дж', correct: false },
|
||
{ text: '10 Дж', correct: false },
|
||
],
|
||
explanation: '\\(E_\\text{к} = \\dfrac{mv^2}{2} = \\dfrac{2\\cdot100}{2} = 100\\,\\text{Дж}\\).',
|
||
},
|
||
{
|
||
topic: 'Законы сохранения', difficulty: 1, type: 'single',
|
||
text: 'Сила 40 Н перемещает тело на 5 м вдоль линии действия силы. Совершённая работа:',
|
||
options: [
|
||
{ text: '200 Дж', correct: true },
|
||
{ text: '8 Дж', correct: false },
|
||
{ text: '45 Дж', correct: false },
|
||
{ text: '20 Дж', correct: false },
|
||
],
|
||
explanation: '\\(A = Fs = 40\\cdot5 = 200\\,\\text{Дж}\\).',
|
||
},
|
||
{
|
||
topic: 'Законы сохранения', difficulty: 2, type: 'single',
|
||
text: 'Тело скользит с горки высотой 5 м без трения (\\(g = 10\\) м/с²). Скорость у основания:',
|
||
options: [
|
||
{ text: '10 м/с', correct: true },
|
||
{ text: '5 м/с', correct: false },
|
||
{ text: '50 м/с', correct: false },
|
||
{ text: '1 м/с', correct: false },
|
||
],
|
||
explanation: '\\(mgh = \\dfrac{mv^2}{2}\\) ⟹ \\(v = \\sqrt{2gh} = \\sqrt{100} = 10\\,\\text{м/с}\\).',
|
||
},
|
||
{
|
||
topic: 'Законы сохранения', difficulty: 2, type: 'single',
|
||
text: 'Машина совершила работу 600 Дж за 1 мин. Мощность машины:',
|
||
options: [
|
||
{ text: '10 Вт', correct: true },
|
||
{ text: '36 кВт', correct: false },
|
||
{ text: '0,167 Вт', correct: false },
|
||
{ text: '100 Вт', correct: false },
|
||
],
|
||
explanation: '\\(P = \\dfrac{A}{t} = \\dfrac{600}{60} = 10\\,\\text{Вт}\\).',
|
||
},
|
||
{
|
||
topic: 'Законы сохранения', difficulty: 2, type: 'single',
|
||
text: 'Пуля массой 10 г летит со скоростью 500 м/с и застревает в неподвижном блоке массой 990 г. Скорость системы после удара:',
|
||
options: [
|
||
{ text: '5 м/с', correct: true },
|
||
{ text: '0,5 м/с', correct: false },
|
||
{ text: '50 м/с', correct: false },
|
||
{ text: '50 км/ч', correct: false },
|
||
],
|
||
explanation: '\\(p = 0{,}010\\cdot500 = 5\\,\\text{кг}\\cdot\\text{м/с}\\); \\(M = 0{,}010+0{,}990 = 1\\,\\text{кг}\\); \\(v_2 = p/M = 5\\,\\text{м/с}\\).',
|
||
},
|
||
{
|
||
topic: 'Законы сохранения', difficulty: 3, type: 'single',
|
||
text: 'Снаряд массой 6 кг, летевший горизонтально со скоростью 200 м/с, разрывается на два осколка. Первый осколок (2 кг) полетел со скоростью 100 м/с в том же направлении. Скорость второго осколка (4 кг):',
|
||
options: [
|
||
{ text: '250 м/с', correct: true },
|
||
{ text: '350 м/с', correct: false },
|
||
{ text: '300 м/с', correct: false },
|
||
{ text: '200 м/с', correct: false },
|
||
],
|
||
explanation: '\\(p = 6\\cdot200 = 1200\\,\\text{кг}\\cdot\\text{м/с}\\); \\(p_1 = 2\\cdot100 = 200\\); \\(p_2 = 1000\\); \\(v_2 = 1000/4 = 250\\,\\text{м/с}\\).',
|
||
},
|
||
|
||
/* ══════════════════════════════════════════════════════════════════════
|
||
МОЛЕКУЛЯРНАЯ ФИЗИКА
|
||
══════════════════════════════════════════════════════════════════════ */
|
||
{
|
||
topic: 'Молекулярная физика', difficulty: 1, type: 'single',
|
||
text: 'Абсолютная температура соответствует \\(t = 27°C\\):',
|
||
options: [
|
||
{ text: '300 К', correct: true },
|
||
{ text: '246 К', correct: false },
|
||
{ text: '27 К', correct: false },
|
||
{ text: '373 К', correct: false },
|
||
],
|
||
explanation: '\\(T = t + 273 = 27 + 273 = 300\\,\\text{К}\\).',
|
||
},
|
||
{
|
||
topic: 'Молекулярная физика', difficulty: 1, type: 'single',
|
||
text: 'При изотермическом сжатии идеального газа объём уменьшился в 2 раза. Давление газа:',
|
||
options: [
|
||
{ text: 'увеличилось в 2 раза', correct: true },
|
||
{ text: 'уменьшилось в 2 раза', correct: false },
|
||
{ text: 'не изменилось', correct: false },
|
||
{ text: 'увеличилось в 4 раза', correct: false },
|
||
],
|
||
explanation: '\\(pV = \\text{const}\\) при изотермическом процессе. Объём вдвое меньше ⟹ давление вдвое больше.',
|
||
},
|
||
{
|
||
topic: 'Молекулярная физика', difficulty: 1, type: 'single',
|
||
text: 'Молярная масса молекулярного кислорода \\(O_2\\):',
|
||
options: [
|
||
{ text: '32 г/моль', correct: true },
|
||
{ text: '16 г/моль', correct: false },
|
||
{ text: '8 г/моль', correct: false },
|
||
{ text: '64 г/моль', correct: false },
|
||
],
|
||
explanation: 'Атомная масса кислорода \\(A_r(O) = 16\\). Молекула двухатомная: \\(M = 2\\cdot16 = 32\\,\\text{г/моль}\\).',
|
||
},
|
||
{
|
||
topic: 'Молекулярная физика', difficulty: 2, type: 'single',
|
||
text: 'Идеальный газ нагревают при постоянном давлении с \\(T_1 = 200\\) К до \\(T_2 = 600\\) К. Объём изменится:',
|
||
options: [
|
||
{ text: 'увеличится в 3 раза', correct: true },
|
||
{ text: 'уменьшится в 3 раза', correct: false },
|
||
{ text: 'увеличится в 9 раз', correct: false },
|
||
{ text: 'не изменится', correct: false },
|
||
],
|
||
explanation: 'Закон Гей-Люссака: \\(V \\propto T\\) при \\(p = \\text{const}\\). \\(\\dfrac{V_2}{V_1} = \\dfrac{T_2}{T_1} = \\dfrac{600}{200} = 3\\).',
|
||
},
|
||
{
|
||
topic: 'Молекулярная физика', difficulty: 2, type: 'single',
|
||
text: 'Газ при 27°C имеет объём 4 л. При нагреве до 57°C при постоянном давлении объём стал:',
|
||
options: [
|
||
{ text: '4,4 л', correct: true },
|
||
{ text: '8 л', correct: false },
|
||
{ text: '3,6 л', correct: false },
|
||
{ text: '4 л', correct: false },
|
||
],
|
||
explanation: '\\(T_1 = 300\\,\\text{К},\\; T_2 = 330\\,\\text{К}\\). \\(V_2 = V_1\\cdot\\dfrac{T_2}{T_1} = 4\\cdot\\dfrac{330}{300} = 4{,}4\\,\\text{л}\\).',
|
||
},
|
||
{
|
||
topic: 'Молекулярная физика', difficulty: 2, type: 'single',
|
||
text: 'Масса одной молекулы воды \\(H_2O\\) (\\(M = 18\\) г/моль, \\(N_A = 6{,}02\\cdot10^{23}\\)):',
|
||
options: [
|
||
{ text: '\\(3\\cdot10^{-26}\\) кг', correct: true },
|
||
{ text: '\\(18\\cdot10^{-23}\\) кг', correct: false },
|
||
{ text: '\\(3\\cdot10^{-23}\\) кг', correct: false },
|
||
{ text: '\\(6\\cdot10^{-26}\\) кг', correct: false },
|
||
],
|
||
explanation: '\\(m = \\dfrac{M}{N_A} = \\dfrac{18\\cdot10^{-3}}{6{,}02\\cdot10^{23}} \\approx 3\\cdot10^{-26}\\,\\text{кг}\\).',
|
||
},
|
||
{
|
||
topic: 'Молекулярная физика', difficulty: 3, type: 'single',
|
||
text: 'Давление газа в цилиндре \\(1{,}5\\cdot10^5\\) Па, объём 3 л. После изотермического сжатия до 2 л давление стало:',
|
||
options: [
|
||
{ text: '\\(2{,}25\\cdot10^5\\) Па', correct: true },
|
||
{ text: '\\(10^5\\) Па', correct: false },
|
||
{ text: '\\(3\\cdot10^5\\) Па', correct: false },
|
||
{ text: '\\(2\\cdot10^5\\) Па', correct: false },
|
||
],
|
||
explanation: '\\(p_1 V_1 = p_2 V_2\\) ⟹ \\(p_2 = \\dfrac{p_1 V_1}{V_2} = \\dfrac{1{,}5\\cdot10^5\\cdot3}{2} = 2{,}25\\cdot10^5\\,\\text{Па}\\).',
|
||
},
|
||
{
|
||
topic: 'Молекулярная физика', difficulty: 2, type: 'single',
|
||
text: 'Газ нагревают при постоянном объёме с 27°C до 127°C. Давление изменится:',
|
||
options: [
|
||
{ text: 'увеличится в \\(\\tfrac43\\) раза', correct: true },
|
||
{ text: 'увеличится вдвое', correct: false },
|
||
{ text: 'уменьшится', correct: false },
|
||
{ text: 'не изменится', correct: false },
|
||
],
|
||
explanation: 'Закон Шарля: \\(p \\propto T\\) при \\(V = \\text{const}\\). \\(T_1=300\\,\\text{К},\\; T_2=400\\,\\text{К}\\); \\(\\dfrac{p_2}{p_1}=\\dfrac{400}{300}=\\dfrac{4}{3}\\).',
|
||
},
|
||
|
||
/* ══════════════════════════════════════════════════════════════════════
|
||
ТЕРМОДИНАМИКА
|
||
══════════════════════════════════════════════════════════════════════ */
|
||
{
|
||
topic: 'Термодинамика', difficulty: 1, type: 'single',
|
||
text: 'Тепловая машина получила от нагревателя 5000 Дж и совершила работу 1500 Дж. КПД машины:',
|
||
options: [
|
||
{ text: '30%', correct: true },
|
||
{ text: '70%', correct: false },
|
||
{ text: '15%', correct: false },
|
||
{ text: '3%', correct: false },
|
||
],
|
||
explanation: '\\(\\eta = \\dfrac{A}{Q_1} = \\dfrac{1500}{5000} = 0{,}30 = 30\\%\\).',
|
||
},
|
||
{
|
||
topic: 'Термодинамика', difficulty: 1, type: 'single',
|
||
text: 'Теплота при нагреве воды массой 500 г на 20°C (\\(c = 4200\\) Дж/(кг·К)):',
|
||
options: [
|
||
{ text: '42 кДж', correct: true },
|
||
{ text: '4200 Дж', correct: false },
|
||
{ text: '840 Дж', correct: false },
|
||
{ text: '420 кДж', correct: false },
|
||
],
|
||
explanation: '\\(Q = mc\\Delta T = 0{,}5\\cdot4200\\cdot20 = 42\\,000\\,\\text{Дж} = 42\\,\\text{кДж}\\).',
|
||
},
|
||
{
|
||
topic: 'Термодинамика', difficulty: 2, type: 'single',
|
||
text: 'Газу сообщено 800 Дж теплоты, он совершил работу 500 Дж. Изменение внутренней энергии:',
|
||
options: [
|
||
{ text: '300 Дж', correct: true },
|
||
{ text: '1300 Дж', correct: false },
|
||
{ text: '−300 Дж', correct: false },
|
||
{ text: '800 Дж', correct: false },
|
||
],
|
||
explanation: 'Первое начало термодинамики: \\(\\Delta U = Q - A = 800 - 500 = 300\\,\\text{Дж}\\).',
|
||
},
|
||
{
|
||
topic: 'Термодинамика', difficulty: 2, type: 'single',
|
||
text: 'КПД идеальной тепловой машины при \\(T_1 = 800\\) К и \\(T_2 = 200\\) К:',
|
||
options: [
|
||
{ text: '75%', correct: true },
|
||
{ text: '25%', correct: false },
|
||
{ text: '50%', correct: false },
|
||
{ text: '80%', correct: false },
|
||
],
|
||
explanation: '\\(\\eta_\\text{Карно} = 1 - \\dfrac{T_2}{T_1} = 1 - \\dfrac{200}{800} = 0{,}75 = 75\\%\\).',
|
||
},
|
||
{
|
||
topic: 'Термодинамика', difficulty: 2, type: 'single',
|
||
text: 'При изобарном нагреве газа температура выросла с 300 К до 400 К, объём был 6 л. Новый объём:',
|
||
options: [
|
||
{ text: '8 л', correct: true },
|
||
{ text: '4,5 л', correct: false },
|
||
{ text: '4 л', correct: false },
|
||
{ text: '6 л', correct: false },
|
||
],
|
||
explanation: '\\(V_2 = V_1\\cdot\\dfrac{T_2}{T_1} = 6\\cdot\\dfrac{400}{300} = 8\\,\\text{л}\\).',
|
||
},
|
||
{
|
||
topic: 'Термодинамика', difficulty: 3, type: 'single',
|
||
text: 'Двигатель внутреннего сгорания сжигает 5 кг бензина (теплота сгорания \\(q = 46\\) МДж/кг) и совершает полезную работу 46 МДж. КПД двигателя:',
|
||
options: [
|
||
{ text: '20%', correct: true },
|
||
{ text: '10%', correct: false },
|
||
{ text: '46%', correct: false },
|
||
{ text: '50%', correct: false },
|
||
],
|
||
explanation: '\\(Q = mq = 5\\cdot46 = 230\\,\\text{МДж}\\); \\(\\eta = \\dfrac{A}{Q} = \\dfrac{46}{230} = 0{,}2 = 20\\%\\).',
|
||
},
|
||
|
||
/* ══════════════════════════════════════════════════════════════════════
|
||
ЭЛЕКТРОСТАТИКА
|
||
══════════════════════════════════════════════════════════════════════ */
|
||
{
|
||
topic: 'Электростатика', difficulty: 1, type: 'single',
|
||
text: 'Два точечных заряда \\(q_1 = q_2 = 2\\) мкКл расположены на расстоянии 0,3 м друг от друга (\\(k = 9\\cdot10^9\\) Н·м²/Кл²). Сила их взаимодействия:',
|
||
options: [
|
||
{ text: '0,4 Н', correct: true },
|
||
{ text: '4 Н', correct: false },
|
||
{ text: '0,04 Н', correct: false },
|
||
{ text: '40 Н', correct: false },
|
||
],
|
||
explanation: '\\(F = k\\dfrac{q_1 q_2}{r^2} = 9\\cdot10^9\\cdot\\dfrac{4\\cdot10^{-12}}{0{,}09} = 0{,}4\\,\\text{Н}\\).',
|
||
},
|
||
{
|
||
topic: 'Электростатика', difficulty: 1, type: 'single',
|
||
text: 'Напряжённость поля точечного заряда \\(10\\) нКл на расстоянии 1 м (\\(k = 9\\cdot10^9\\)):',
|
||
options: [
|
||
{ text: '90 В/м', correct: true },
|
||
{ text: '9 В/м', correct: false },
|
||
{ text: '900 В/м', correct: false },
|
||
{ text: '9 кВ/м', correct: false },
|
||
],
|
||
explanation: '\\(E = k\\dfrac{q}{r^2} = 9\\cdot10^9\\cdot\\dfrac{10\\cdot10^{-9}}{1} = 90\\,\\text{В/м}\\).',
|
||
},
|
||
{
|
||
topic: 'Электростатика', difficulty: 1, type: 'single',
|
||
text: 'Расстояние между пластинами конденсатора 5 мм, напряжение 100 В. Напряжённость поля между пластинами:',
|
||
options: [
|
||
{ text: '20 кВ/м', correct: true },
|
||
{ text: '0,5 кВ/м', correct: false },
|
||
{ text: '2 кВ/м', correct: false },
|
||
{ text: '200 кВ/м', correct: false },
|
||
],
|
||
explanation: '\\(E = \\dfrac{U}{d} = \\dfrac{100}{5\\cdot10^{-3}} = 20\\,000\\,\\text{В/м} = 20\\,\\text{кВ/м}\\).',
|
||
},
|
||
{
|
||
topic: 'Электростатика', difficulty: 1, type: 'single',
|
||
text: 'Конденсатор ёмкостью 10 мкФ заряжен до 50 В. Заряд конденсатора:',
|
||
options: [
|
||
{ text: '\\(5\\cdot10^{-4}\\) Кл', correct: true },
|
||
{ text: '5 Кл', correct: false },
|
||
{ text: '\\(5\\cdot10^{-7}\\) Кл', correct: false },
|
||
{ text: '200 мКл', correct: false },
|
||
],
|
||
explanation: '\\(Q = CU = 10\\cdot10^{-6}\\cdot50 = 5\\cdot10^{-4}\\,\\text{Кл}\\).',
|
||
},
|
||
{
|
||
topic: 'Электростатика', difficulty: 2, type: 'single',
|
||
text: 'Работа по перемещению заряда \\(q = 3\\) Кл из точки с потенциалом 100 В в точку с потенциалом 40 В:',
|
||
options: [
|
||
{ text: '180 Дж', correct: true },
|
||
{ text: '60 Дж', correct: false },
|
||
{ text: '300 Дж', correct: false },
|
||
{ text: '420 Дж', correct: false },
|
||
],
|
||
explanation: '\\(A = q(\\varphi_1 - \\varphi_2) = 3\\cdot(100-40) = 180\\,\\text{Дж}\\).',
|
||
},
|
||
{
|
||
topic: 'Электростатика', difficulty: 2, type: 'single',
|
||
text: 'Два конденсатора \\(C_1 = 4\\) мкФ и \\(C_2 = 12\\) мкФ включены последовательно. Эквивалентная ёмкость:',
|
||
options: [
|
||
{ text: '3 мкФ', correct: true },
|
||
{ text: '16 мкФ', correct: false },
|
||
{ text: '48 мкФ', correct: false },
|
||
{ text: '8 мкФ', correct: false },
|
||
],
|
||
explanation: '\\(\\dfrac{1}{C} = \\dfrac{1}{4} + \\dfrac{1}{12} = \\dfrac{4}{12}\\) ⟹ \\(C = 3\\,\\text{мкФ}\\).',
|
||
},
|
||
{
|
||
topic: 'Электростатика', difficulty: 2, type: 'single',
|
||
text: 'Два конденсатора \\(C_1 = 4\\) мкФ и \\(C_2 = 6\\) мкФ включены параллельно. Эквивалентная ёмкость:',
|
||
options: [
|
||
{ text: '10 мкФ', correct: true },
|
||
{ text: '2,4 мкФ', correct: false },
|
||
{ text: '24 мкФ', correct: false },
|
||
{ text: '5 мкФ', correct: false },
|
||
],
|
||
explanation: '\\(C = C_1 + C_2 = 4 + 6 = 10\\,\\text{мкФ}\\).',
|
||
},
|
||
{
|
||
topic: 'Электростатика', difficulty: 2, type: 'single',
|
||
text: 'Энергия, запасённая в конденсаторе \\(C = 5\\) мкФ при напряжении \\(U = 200\\) В:',
|
||
options: [
|
||
{ text: '0,1 Дж', correct: true },
|
||
{ text: '0,05 Дж', correct: false },
|
||
{ text: '1 Дж', correct: false },
|
||
{ text: '0,2 Дж', correct: false },
|
||
],
|
||
explanation: '\\(W = \\dfrac{CU^2}{2} = \\dfrac{5\\cdot10^{-6}\\cdot40000}{2} = 0{,}1\\,\\text{Дж}\\).',
|
||
},
|
||
{
|
||
topic: 'Электростатика', difficulty: 3, type: 'single',
|
||
text: 'Заряженный конденсатор отключили от батареи, затем раздвинули пластины вдвое. Энергия конденсатора:',
|
||
options: [
|
||
{ text: 'увеличилась в 2 раза', correct: true },
|
||
{ text: 'уменьшилась в 2 раза', correct: false },
|
||
{ text: 'не изменилась', correct: false },
|
||
{ text: 'увеличилась в 4 раза', correct: false },
|
||
],
|
||
explanation: 'Заряд \\(Q = \\text{const}\\). При \\(d \\to 2d\\): \\(C \\to C/2\\). \\(W = Q^2/(2C)\\) ⟹ \\(W \\to 2W\\).',
|
||
},
|
||
{
|
||
topic: 'Электростатика', difficulty: 3, type: 'single',
|
||
text: 'При уменьшении расстояния между зарядами в 4 раза сила их взаимодействия:',
|
||
options: [
|
||
{ text: 'увеличится в 16 раз', correct: true },
|
||
{ text: 'увеличится в 4 раза', correct: false },
|
||
{ text: 'уменьшится в 4 раза', correct: false },
|
||
{ text: 'уменьшится в 16 раз', correct: false },
|
||
],
|
||
explanation: '\\(F \\propto 1/r^2\\). При \\(r \\to r/4\\): \\(F \\to 16F\\).',
|
||
},
|
||
|
||
/* ══════════════════════════════════════════════════════════════════════
|
||
ПОСТОЯННЫЙ ТОК
|
||
══════════════════════════════════════════════════════════════════════ */
|
||
{
|
||
topic: 'Постоянный ток', difficulty: 1, type: 'single',
|
||
text: 'Сопротивление резистора 8 Ом, напряжение на нём 24 В. Сила тока через резистор:',
|
||
options: [
|
||
{ text: '3 А', correct: true },
|
||
{ text: '192 А', correct: false },
|
||
{ text: '0,33 А', correct: false },
|
||
{ text: '8 А', correct: false },
|
||
],
|
||
explanation: '\\(I = \\dfrac{U}{R} = \\dfrac{24}{8} = 3\\,\\text{А}\\).',
|
||
},
|
||
{
|
||
topic: 'Постоянный ток', difficulty: 1, type: 'single',
|
||
text: 'Три одинаковых резистора по \\(R = 6\\) Ом включены последовательно. Общее сопротивление:',
|
||
options: [
|
||
{ text: '18 Ом', correct: true },
|
||
{ text: '2 Ом', correct: false },
|
||
{ text: '6 Ом', correct: false },
|
||
{ text: '9 Ом', correct: false },
|
||
],
|
||
explanation: '\\(R_\\Sigma = 3R = 3\\cdot6 = 18\\,\\text{Ом}\\).',
|
||
},
|
||
{
|
||
topic: 'Постоянный ток', difficulty: 1, type: 'single',
|
||
text: 'Три одинаковых резистора по \\(R = 9\\) Ом включены параллельно. Общее сопротивление:',
|
||
options: [
|
||
{ text: '3 Ом', correct: true },
|
||
{ text: '27 Ом', correct: false },
|
||
{ text: '9 Ом', correct: false },
|
||
{ text: '1 Ом', correct: false },
|
||
],
|
||
explanation: 'Для \\(n\\) одинаковых резисторов параллельно: \\(R_\\Sigma = R/n = 9/3 = 3\\,\\text{Ом}\\).',
|
||
},
|
||
{
|
||
topic: 'Постоянный ток', difficulty: 1, type: 'single',
|
||
text: 'Источник с ЭДС = 12 В, внутреннее сопротивление \\(r = 2\\) Ом, внешнее \\(R = 4\\) Ом. Ток в цепи:',
|
||
options: [
|
||
{ text: '2 А', correct: true },
|
||
{ text: '3 А', correct: false },
|
||
{ text: '6 А', correct: false },
|
||
{ text: '1 А', correct: false },
|
||
],
|
||
explanation: '\\(I = \\dfrac{\\varepsilon}{R+r} = \\dfrac{12}{4+2} = 2\\,\\text{А}\\).',
|
||
},
|
||
{
|
||
topic: 'Постоянный ток', difficulty: 2, type: 'single',
|
||
text: 'Электрическая плитка мощностью 2 кВт работала 30 мин. Потреблённая энергия:',
|
||
options: [
|
||
{ text: '1 кВт·ч', correct: true },
|
||
{ text: '60 кВт·ч', correct: false },
|
||
{ text: '0,5 кВт·ч', correct: false },
|
||
{ text: '3,6 кДж', correct: false },
|
||
],
|
||
explanation: '\\(W = Pt = 2\\,\\text{кВт}\\cdot0{,}5\\,\\text{ч} = 1\\,\\text{кВт·ч}\\).',
|
||
},
|
||
{
|
||
topic: 'Постоянный ток', difficulty: 2, type: 'single',
|
||
text: 'Ток 4 А течёт через резистор 5 Ом в течение 5 минут. Выделенная теплота:',
|
||
options: [
|
||
{ text: '24 кДж', correct: true },
|
||
{ text: '2,4 кДж', correct: false },
|
||
{ text: '240 кДж', correct: false },
|
||
{ text: '6 кДж', correct: false },
|
||
],
|
||
explanation: '\\(Q = I^2 R t = 16\\cdot5\\cdot300 = 24\\,000\\,\\text{Дж} = 24\\,\\text{кДж}\\).',
|
||
},
|
||
{
|
||
topic: 'Постоянный ток', difficulty: 2, type: 'single',
|
||
text: 'Лампочка мощностью 100 Вт рассчитана на 220 В. Её сопротивление нити накала:',
|
||
options: [
|
||
{ text: '484 Ом', correct: true },
|
||
{ text: '22000 Ом', correct: false },
|
||
{ text: '0,45 Ом', correct: false },
|
||
{ text: '22 Ом', correct: false },
|
||
],
|
||
explanation: '\\(R = \\dfrac{U^2}{P} = \\dfrac{220^2}{100} = \\dfrac{48400}{100} = 484\\,\\text{Ом}\\).',
|
||
},
|
||
{
|
||
topic: 'Постоянный ток', difficulty: 2, type: 'single',
|
||
text: 'Напряжение на зажимах источника 10 В при токе 2 А, ЭДС = 12 В. Внутреннее сопротивление источника:',
|
||
options: [
|
||
{ text: '1 Ом', correct: true },
|
||
{ text: '6 Ом', correct: false },
|
||
{ text: '5 Ом', correct: false },
|
||
{ text: '11 Ом', correct: false },
|
||
],
|
||
explanation: '\\(r = \\dfrac{\\varepsilon - U}{I} = \\dfrac{12-10}{2} = 1\\,\\text{Ом}\\).',
|
||
},
|
||
{
|
||
topic: 'Постоянный ток', difficulty: 2, type: 'single',
|
||
text: 'КПД источника тока при \\(\\varepsilon = 15\\) В, \\(r = 1\\) Ом, \\(R = 4\\) Ом:',
|
||
options: [
|
||
{ text: '80%', correct: true },
|
||
{ text: '20%', correct: false },
|
||
{ text: '75%', correct: false },
|
||
{ text: '60%', correct: false },
|
||
],
|
||
explanation: '\\(\\eta = \\dfrac{R}{R+r} = \\dfrac{4}{5} = 80\\%\\).',
|
||
},
|
||
{
|
||
topic: 'Постоянный ток', difficulty: 3, type: 'single',
|
||
text: 'Два резистора \\(R_1 = 6\\) Ом и \\(R_2 = 3\\) Ом включены параллельно к источнику 12 В. Ток через \\(R_1\\):',
|
||
options: [
|
||
{ text: '2 А', correct: true },
|
||
{ text: '4 А', correct: false },
|
||
{ text: '6 А', correct: false },
|
||
{ text: '1 А', correct: false },
|
||
],
|
||
explanation: 'Напряжение на каждом резисторе 12 В (параллельное соединение). \\(I_1 = U/R_1 = 12/6 = 2\\,\\text{А}\\).',
|
||
},
|
||
|
||
/* ══════════════════════════════════════════════════════════════════════
|
||
МАГНЕТИЗМ
|
||
══════════════════════════════════════════════════════════════════════ */
|
||
{
|
||
topic: 'Магнетизм', difficulty: 1, type: 'single',
|
||
text: 'Сила Ампера, действующая на прямолинейный проводник длиной 0,5 м с током 4 А в поле \\(B = 0{,}3\\) Тл (проводник перпендикулярен полю):',
|
||
options: [
|
||
{ text: '0,6 Н', correct: true },
|
||
{ text: '6 Н', correct: false },
|
||
{ text: '0,06 Н', correct: false },
|
||
{ text: '6,7 Н', correct: false },
|
||
],
|
||
explanation: '\\(F = BIl\\sin90° = 0{,}3\\cdot4\\cdot0{,}5 = 0{,}6\\,\\text{Н}\\).',
|
||
},
|
||
{
|
||
topic: 'Магнетизм', difficulty: 2, type: 'single',
|
||
text: 'Сила Лоренца на электрон (\\(q = 1{,}6\\cdot10^{-19}\\) Кл), движущийся в поле \\(B = 0{,}2\\) Тл со скоростью \\(5\\cdot10^6\\) м/с (перпендикулярно полю):',
|
||
options: [
|
||
{ text: '\\(1{,}6\\cdot10^{-13}\\) Н', correct: true },
|
||
{ text: '\\(1{,}6\\cdot10^{-12}\\) Н', correct: false },
|
||
{ text: '\\(1{,}6\\cdot10^{-14}\\) Н', correct: false },
|
||
{ text: '\\(5\\cdot10^{-26}\\) Н', correct: false },
|
||
],
|
||
explanation: '\\(F = qvB = 1{,}6\\cdot10^{-19}\\cdot5\\cdot10^6\\cdot0{,}2 = 1{,}6\\cdot10^{-13}\\,\\text{Н}\\).',
|
||
},
|
||
{
|
||
topic: 'Магнетизм', difficulty: 2, type: 'single',
|
||
text: 'Если ток в проводнике увеличить в 2 раза и индукцию поля увеличить в 2 раза, сила Ампера:',
|
||
options: [
|
||
{ text: 'увеличится в 4 раза', correct: true },
|
||
{ text: 'увеличится в 2 раза', correct: false },
|
||
{ text: 'не изменится', correct: false },
|
||
{ text: 'уменьшится в 4 раза', correct: false },
|
||
],
|
||
explanation: '\\(F = BIl\\) ⟹ \\(F \\propto BI\\). При \\(B \\to 2B,\\; I \\to 2I\\): \\(F \\to 4F\\).',
|
||
},
|
||
{
|
||
topic: 'Магнетизм', difficulty: 2, type: 'single',
|
||
text: 'Магнитный поток через контур площадью 0,2 м² в однородном поле \\(B = 0{,}5\\) Тл при \\(\\theta = 0°\\) (нормаль вдоль поля):',
|
||
options: [
|
||
{ text: '0,1 Вб', correct: true },
|
||
{ text: '0,04 Вб', correct: false },
|
||
{ text: '0,5 Вб', correct: false },
|
||
{ text: '0,25 Вб', correct: false },
|
||
],
|
||
explanation: '\\(\\Phi = BS\\cos\\theta = 0{,}5\\cdot0{,}2\\cdot\\cos0° = 0{,}1\\,\\text{Вб}\\).',
|
||
},
|
||
{
|
||
topic: 'Магнетизм', difficulty: 2, type: 'single',
|
||
text: 'Правило «буравчика» (правой руки) применяется для нахождения:',
|
||
options: [
|
||
{ text: 'направления вектора магнитной индукции прямолинейного тока', correct: true },
|
||
{ text: 'направления силы Ампера', correct: false },
|
||
{ text: 'направления индукционного тока', correct: false },
|
||
{ text: 'направления силы Лоренца на положительный заряд', correct: false },
|
||
],
|
||
explanation: 'Правило буравчика: если вращать рукоятку буравчика в направлении тока в соленоиде, поступательное движение укажет направление \\(\\vec{B}\\). Для прямого тока: пальцы правой руки по \\(\\vec{B}\\), большой — ток.',
|
||
},
|
||
{
|
||
topic: 'Магнетизм', difficulty: 3, type: 'single',
|
||
text: 'Протон (\\(m = 1{,}67\\cdot10^{-27}\\) кг, \\(q = 1{,}6\\cdot10^{-19}\\) Кл) движется в поле \\(B = 0{,}1\\) Тл со скоростью \\(2\\cdot10^7\\) м/с. Радиус круговой траектории:',
|
||
options: [
|
||
{ text: '≈ 2,1 м', correct: true },
|
||
{ text: '≈ 0,21 м', correct: false },
|
||
{ text: '≈ 21 м', correct: false },
|
||
{ text: '≈ 0,021 м', correct: false },
|
||
],
|
||
explanation: '\\(r = \\dfrac{mv}{qB} = \\dfrac{1{,}67\\cdot10^{-27}\\cdot2\\cdot10^7}{1{,}6\\cdot10^{-19}\\cdot0{,}1} \\approx 2{,}09\\,\\text{м}\\).',
|
||
},
|
||
{
|
||
topic: 'Магнетизм', difficulty: 3, type: 'single',
|
||
text: 'При одновременном увеличении тока в проводнике в 3 раза и расстояния до него в 3 раза, индукция магнитного поля прямого тока:',
|
||
options: [
|
||
{ text: 'не изменится', correct: true },
|
||
{ text: 'увеличится в 3 раза', correct: false },
|
||
{ text: 'уменьшится в 3 раза', correct: false },
|
||
{ text: 'увеличится в 9 раз', correct: false },
|
||
],
|
||
explanation: '\\(B \\propto I/r\\). При \\(I \\to 3I,\\; r \\to 3r\\): \\(B \\to (3I)/(3r) = I/r = B\\).',
|
||
},
|
||
|
||
/* ══════════════════════════════════════════════════════════════════════
|
||
ЭЛЕКТРОМАГНИТНАЯ ИНДУКЦИЯ
|
||
══════════════════════════════════════════════════════════════════════ */
|
||
{
|
||
topic: 'Электромагнитная индукция', difficulty: 1, type: 'single',
|
||
text: 'Магнитный поток через контур изменился с 0,6 Вб до 0,1 Вб за 0,1 с. ЭДС индукции:',
|
||
options: [
|
||
{ text: '5 В', correct: true },
|
||
{ text: '0,5 В', correct: false },
|
||
{ text: '50 В', correct: false },
|
||
{ text: '7 В', correct: false },
|
||
],
|
||
explanation: '\\(\\varepsilon = \\left|\\dfrac{\\Delta\\Phi}{\\Delta t}\\right| = \\dfrac{0{,}5}{0{,}1} = 5\\,\\text{В}\\).',
|
||
},
|
||
{
|
||
topic: 'Электромагнитная индукция', difficulty: 1, type: 'single',
|
||
text: 'Трансформатор: первичная обмотка 1000 витков, вторичная 50 витков, \\(U_1 = 220\\) В. Напряжение на вторичной обмотке:',
|
||
options: [
|
||
{ text: '11 В', correct: true },
|
||
{ text: '4400 В', correct: false },
|
||
{ text: '110 В', correct: false },
|
||
{ text: '55 В', correct: false },
|
||
],
|
||
explanation: '\\(\\dfrac{U_2}{U_1} = \\dfrac{n_2}{n_1}\\) ⟹ \\(U_2 = 220\\cdot\\dfrac{50}{1000} = 11\\,\\text{В}\\).',
|
||
},
|
||
{
|
||
topic: 'Электромагнитная индукция', difficulty: 2, type: 'single',
|
||
text: 'ЭДС самоиндукции катушки с \\(L = 0{,}5\\) Гн при изменении тока от 0 до 4 А за 0,2 с:',
|
||
options: [
|
||
{ text: '10 В', correct: true },
|
||
{ text: '1 В', correct: false },
|
||
{ text: '40 В', correct: false },
|
||
{ text: '2,5 В', correct: false },
|
||
],
|
||
explanation: '\\(\\varepsilon = L\\dfrac{\\Delta I}{\\Delta t} = 0{,}5\\cdot\\dfrac{4}{0{,}2} = 10\\,\\text{В}\\).',
|
||
},
|
||
{
|
||
topic: 'Электромагнитная индукция', difficulty: 2, type: 'single',
|
||
text: 'Частота переменного тока 50 Гц. Период:',
|
||
options: [
|
||
{ text: '0,02 с', correct: true },
|
||
{ text: '50 с', correct: false },
|
||
{ text: '0,2 с', correct: false },
|
||
{ text: '0,002 с', correct: false },
|
||
],
|
||
explanation: '\\(T = \\dfrac{1}{f} = \\dfrac{1}{50} = 0{,}02\\,\\text{с}\\).',
|
||
},
|
||
{
|
||
topic: 'Электромагнитная индукция', difficulty: 2, type: 'single',
|
||
text: 'Колебательный контур: \\(L = 0{,}1\\) Гн, \\(C = 10\\) мкФ. Период колебаний:',
|
||
options: [
|
||
{ text: '≈ 6,3 мс', correct: true },
|
||
{ text: '≈ 62,8 мс', correct: false },
|
||
{ text: '≈ 0,63 мс', correct: false },
|
||
{ text: '≈ 1 мс', correct: false },
|
||
],
|
||
explanation: '\\(T = 2\\pi\\sqrt{LC} = 2\\pi\\sqrt{0{,}1\\cdot10^{-5}} = 2\\pi\\cdot10^{-3} \\approx 6{,}28\\,\\text{мс}\\).',
|
||
},
|
||
{
|
||
topic: 'Электромагнитная индукция', difficulty: 3, type: 'single',
|
||
text: 'Трансформатор повышает напряжение с 220 В до 11 000 В. Первичная обмотка 400 витков, ток 50 А. Ток во вторичной обмотке (идеальный трансформатор):',
|
||
options: [
|
||
{ text: '1 А', correct: true },
|
||
{ text: '2500 А', correct: false },
|
||
{ text: '0,1 А', correct: false },
|
||
{ text: '10 А', correct: false },
|
||
],
|
||
explanation: '\\(\\dfrac{U_2}{U_1} = \\dfrac{I_1}{I_2}\\) ⟹ \\(I_2 = I_1\\cdot\\dfrac{U_1}{U_2} = 50\\cdot\\dfrac{220}{11000} = 1\\,\\text{А}\\).',
|
||
},
|
||
{
|
||
topic: 'Электромагнитная индукция', difficulty: 3, type: 'single',
|
||
text: 'Правило Ленца: индукционный ток в контуре всегда направлен так, что его магнитное поле:',
|
||
options: [
|
||
{ text: 'препятствует изменению магнитного потока, его вызвавшего', correct: true },
|
||
{ text: 'совпадает по направлению с изменением внешнего магнитного потока', correct: false },
|
||
{ text: 'перпендикулярно внешнему магнитному полю', correct: false },
|
||
{ text: 'не зависит от скорости изменения магнитного потока', correct: false },
|
||
],
|
||
explanation: 'Правило Ленца — проявление закона сохранения энергии: индукционный ток создаёт поле, направленное против изменения потока, т.е. препятствует его изменению.',
|
||
},
|
||
|
||
/* ══════════════════════════════════════════════════════════════════════
|
||
ОПТИКА
|
||
══════════════════════════════════════════════════════════════════════ */
|
||
{
|
||
topic: 'Оптика', difficulty: 1, type: 'single',
|
||
text: 'Луч света падает на плоское зеркало, образуя угол 35° с поверхностью зеркала. Угол отражения равен:',
|
||
options: [
|
||
{ text: '55°', correct: true },
|
||
{ text: '35°', correct: false },
|
||
{ text: '70°', correct: false },
|
||
{ text: '90°', correct: false },
|
||
],
|
||
explanation: 'Углы падения и отражения отсчитываются от нормали. Угол с поверхностью 35° → угол с нормалью 90° − 35° = 55°. По закону отражения угол отражения = 55°.',
|
||
},
|
||
{
|
||
topic: 'Оптика', difficulty: 1, type: 'single',
|
||
text: 'Линза с оптической силой 5 дптр. Фокусное расстояние:',
|
||
options: [
|
||
{ text: '20 см', correct: true },
|
||
{ text: '5 см', correct: false },
|
||
{ text: '50 см', correct: false },
|
||
{ text: '2 м', correct: false },
|
||
],
|
||
explanation: '\\(F = \\dfrac{1}{D} = \\dfrac{1}{5} = 0{,}2\\,\\text{м} = 20\\,\\text{см}\\).',
|
||
},
|
||
{
|
||
topic: 'Оптика', difficulty: 2, type: 'single',
|
||
text: 'Предмет на расстоянии 30 см от тонкой собирающей линзы с \\(F = 20\\) см. Расстояние до изображения:',
|
||
options: [
|
||
{ text: '60 см', correct: true },
|
||
{ text: '12 см', correct: false },
|
||
{ text: '30 см', correct: false },
|
||
{ text: '50 см', correct: false },
|
||
],
|
||
explanation: '\\(\\dfrac{1}{F} = \\dfrac{1}{d_0} + \\dfrac{1}{d_i}\\) ⟹ \\(\\dfrac{1}{d_i} = \\dfrac{1}{20} - \\dfrac{1}{30} = \\dfrac{1}{60}\\) ⟹ \\(d_i = 60\\,\\text{см}\\).',
|
||
},
|
||
{
|
||
topic: 'Оптика', difficulty: 2, type: 'single',
|
||
text: 'Две щели шириной \\(d = 1\\) мм, экран на расстоянии \\(L = 2\\) м, длина волны \\(\\lambda = 500\\) нм. Расстояние между соседними максимумами:',
|
||
options: [
|
||
{ text: '1 мм', correct: true },
|
||
{ text: '0,1 мм', correct: false },
|
||
{ text: '5 мм', correct: false },
|
||
{ text: '0,5 мм', correct: false },
|
||
],
|
||
explanation: '\\(\\Delta y = \\dfrac{\\lambda L}{d} = \\dfrac{500\\cdot10^{-9}\\cdot2}{10^{-3}} = 10^{-3}\\,\\text{м} = 1\\,\\text{мм}\\).',
|
||
},
|
||
{
|
||
topic: 'Оптика', difficulty: 2, type: 'single',
|
||
text: 'Показатель преломления стекла \\(n = 1{,}5\\). Критический угол полного внутреннего отражения:',
|
||
options: [
|
||
{ text: '≈ 42°', correct: true },
|
||
{ text: '≈ 48°', correct: false },
|
||
{ text: '≈ 30°', correct: false },
|
||
{ text: '≈ 60°', correct: false },
|
||
],
|
||
explanation: '\\(\\sin\\theta_\\text{кр} = \\dfrac{1}{n} = \\dfrac{1}{1{,}5} = 0{,}667\\) ⟹ \\(\\theta_\\text{кр} \\approx 41{,}8° \\approx 42°\\).',
|
||
},
|
||
{
|
||
topic: 'Оптика', difficulty: 3, type: 'single',
|
||
text: 'Луч переходит из воздуха в стекло с \\(n = 1{,}73\\). Угол падения 60°. Угол преломления:',
|
||
options: [
|
||
{ text: '30°', correct: true },
|
||
{ text: '60°', correct: false },
|
||
{ text: '45°', correct: false },
|
||
{ text: '20°', correct: false },
|
||
],
|
||
explanation: '\\(\\sin\\beta = \\dfrac{\\sin\\alpha}{n} = \\dfrac{\\sin60°}{1{,}73} = \\dfrac{\\sqrt{3}/2}{\\sqrt{3}} = 0{,}5\\) ⟹ \\(\\beta = 30°\\).',
|
||
},
|
||
{
|
||
topic: 'Оптика', difficulty: 2, type: 'single',
|
||
text: 'Скорость света в воде с \\(n = 1{,}33\\):',
|
||
options: [
|
||
{ text: '≈ 2,26·10⁸ м/с', correct: true },
|
||
{ text: '≈ 4·10⁸ м/с', correct: false },
|
||
{ text: '≈ 1·10⁸ м/с', correct: false },
|
||
{ text: '3·10⁸ м/с', correct: false },
|
||
],
|
||
explanation: '\\(v = \\dfrac{c}{n} = \\dfrac{3\\cdot10^8}{1{,}33} \\approx 2{,}26\\cdot10^8\\,\\text{м/с}\\).',
|
||
},
|
||
{
|
||
topic: 'Оптика', difficulty: 1, type: 'single',
|
||
text: 'Какой цвет видимого спектра имеет наибольшую длину волны?',
|
||
options: [
|
||
{ text: 'Красный', correct: true },
|
||
{ text: 'Жёлтый', correct: false },
|
||
{ text: 'Зелёный', correct: false },
|
||
{ text: 'Фиолетовый', correct: false },
|
||
],
|
||
explanation: 'Видимый спектр: красный (~700 нм) > оранжевый > жёлтый > зелёный > голубой > синий > фиолетовый (~400 нм). Красный — наибольшая длина волны.',
|
||
},
|
||
|
||
/* ══════════════════════════════════════════════════════════════════════
|
||
КВАНТОВАЯ ФИЗИКА И ЯДЕРНАЯ
|
||
══════════════════════════════════════════════════════════════════════ */
|
||
{
|
||
topic: 'Квантовая и ядерная физика', difficulty: 1, type: 'single',
|
||
text: 'Энергия фотона при частоте \\(\\nu = 6\\cdot10^{14}\\) Гц (\\(h = 6{,}63\\cdot10^{-34}\\) Дж·с):',
|
||
options: [
|
||
{ text: '≈ 4·10⁻¹⁹ Дж', correct: true },
|
||
{ text: '≈ 4·10⁻²⁰ Дж', correct: false },
|
||
{ text: '≈ 4·10⁻¹⁸ Дж', correct: false },
|
||
{ text: '≈ 10⁻³³ Дж', correct: false },
|
||
],
|
||
explanation: '\\(E = h\\nu = 6{,}63\\cdot10^{-34}\\cdot6\\cdot10^{14} \\approx 3{,}98\\cdot10^{-19}\\,\\text{Дж} \\approx 4\\cdot10^{-19}\\,\\text{Дж}\\).',
|
||
},
|
||
{
|
||
topic: 'Квантовая и ядерная физика', difficulty: 1, type: 'single',
|
||
text: 'Период полураспада изотопа 20 лет. Через 40 лет от начального количества \\(N_0\\) останется:',
|
||
options: [
|
||
{ text: '\\(N_0/4 = 25\\%\\)', correct: true },
|
||
{ text: '\\(N_0/2 = 50\\%\\)', correct: false },
|
||
{ text: '\\(N_0/8 = 12{,}5\\%\\)', correct: false },
|
||
{ text: '0', correct: false },
|
||
],
|
||
explanation: '\\(N = N_0\\left(\\tfrac12\\right)^{40/20} = N_0\\left(\\tfrac12\\right)^2 = \\dfrac{N_0}{4}\\).',
|
||
},
|
||
{
|
||
topic: 'Квантовая и ядерная физика', difficulty: 1, type: 'single',
|
||
text: 'При \\(\\alpha\\)-распаде ядра \\(^{238}_{92}U\\) образуется:',
|
||
options: [
|
||
{ text: '\\(^{234}_{90}\\text{Th}\\)', correct: true },
|
||
{ text: '\\(^{234}_{91}\\text{Pa}\\)', correct: false },
|
||
{ text: '\\(^{238}_{90}\\text{Th}\\)', correct: false },
|
||
{ text: '\\(^{232}_{88}\\text{Ra}\\)', correct: false },
|
||
],
|
||
explanation: 'При \\(\\alpha\\)-распаде: \\(Z \\to Z-2\\), \\(A \\to A-4\\). \\(Z=92-2=90\\) (торий), \\(A=238-4=234\\).',
|
||
},
|
||
{
|
||
topic: 'Квантовая и ядерная физика', difficulty: 2, type: 'single',
|
||
text: 'Фотоэффект: металл облучают светом с частотой \\(\\nu = 7{,}5\\cdot10^{14}\\) Гц. Работа выхода \\(A = 3\\cdot10^{-19}\\) Дж (\\(h = 6\\cdot10^{-34}\\) Дж·с). Максимальная кинетическая энергия электрона:',
|
||
options: [
|
||
{ text: '\\(1{,}5\\cdot10^{-19}\\) Дж', correct: true },
|
||
{ text: '\\(7{,}5\\cdot10^{-19}\\) Дж', correct: false },
|
||
{ text: '\\(4{,}5\\cdot10^{-19}\\) Дж', correct: false },
|
||
{ text: '\\(3\\cdot10^{-19}\\) Дж', correct: false },
|
||
],
|
||
explanation: '\\(E_k = h\\nu - A = 6\\cdot10^{-34}\\cdot7{,}5\\cdot10^{14} - 3\\cdot10^{-19} = 4{,}5\\cdot10^{-19} - 3\\cdot10^{-19} = 1{,}5\\cdot10^{-19}\\,\\text{Дж}\\).',
|
||
},
|
||
{
|
||
topic: 'Квантовая и ядерная физика', difficulty: 2, type: 'single',
|
||
text: 'Какое излучение обладает наибольшей проникающей способностью?',
|
||
options: [
|
||
{ text: 'Гамма-излучение (\\(\\gamma\\))', correct: true },
|
||
{ text: 'Альфа-излучение (\\(\\alpha\\))', correct: false },
|
||
{ text: 'Бета-излучение (\\(\\beta\\))', correct: false },
|
||
{ text: 'Ультрафиолетовое', correct: false },
|
||
],
|
||
explanation: '\\(\\gamma\\)-кванты — наиболее проникающее излучение, поглощаются только толстым слоем свинца или бетона. \\(\\alpha\\) — поглощается листом бумаги, \\(\\beta\\) — несколькими мм алюминия.',
|
||
},
|
||
{
|
||
topic: 'Квантовая и ядерная физика', difficulty: 2, type: 'single',
|
||
text: 'В ядерной реакции \\(^1_1H + ^7_3Li \\to 2\\,^4_2He\\):',
|
||
options: [
|
||
{ text: 'выполняются законы сохранения массового числа и заряда', correct: true },
|
||
{ text: 'нарушается закон сохранения заряда', correct: false },
|
||
{ text: 'нарушается закон сохранения массового числа', correct: false },
|
||
{ text: 'нарушаются оба закона сохранения', correct: false },
|
||
],
|
||
explanation: '\\(A\\!:\\; 1+7=8=2\\cdot4\\) ✓; \\(Z\\!:\\; 1+3=4=2\\cdot2\\) ✓. Оба закона выполняются.',
|
||
},
|
||
{
|
||
topic: 'Квантовая и ядерная физика', difficulty: 2, type: 'single',
|
||
text: 'Период полураспада радия 1600 лет. Через сколько лет активность препарата уменьшится в 4 раза?',
|
||
options: [
|
||
{ text: '3200 лет', correct: true },
|
||
{ text: '400 лет', correct: false },
|
||
{ text: '800 лет', correct: false },
|
||
{ text: '6400 лет', correct: false },
|
||
],
|
||
explanation: '\\(\\dfrac{N}{N_0} = \\left(\\tfrac12\\right)^{t/T} = \\dfrac{1}{4} = \\left(\\tfrac12\\right)^2\\) ⟹ \\(t = 2T = 2\\cdot1600 = 3200\\,\\text{лет}\\).',
|
||
},
|
||
{
|
||
topic: 'Квантовая и ядерная физика', difficulty: 3, type: 'single',
|
||
text: 'Какое излучение НЕ отклоняется магнитным полем?',
|
||
options: [
|
||
{ text: 'Гамма-излучение', correct: true },
|
||
{ text: 'Альфа-излучение', correct: false },
|
||
{ text: 'Бета-излучение', correct: false },
|
||
{ text: 'Пучок протонов', correct: false },
|
||
],
|
||
explanation: '\\(\\gamma\\)-кванты — электромагнитные волны, не несут заряда, поэтому магнитным полем не отклоняются. \\(\\alpha\\) и \\(\\beta\\) — заряженные частицы, отклоняются.',
|
||
},
|
||
|
||
/* ══════════════════════════════════════════════════════════════════════
|
||
КОЛЕБАНИЯ И ВОЛНЫ
|
||
══════════════════════════════════════════════════════════════════════ */
|
||
{
|
||
topic: 'Колебания и волны', difficulty: 1, type: 'single',
|
||
text: 'Маятник совершает 10 полных колебаний за 20 с. Частота колебаний:',
|
||
options: [
|
||
{ text: '0,5 Гц', correct: true },
|
||
{ text: '2 Гц', correct: false },
|
||
{ text: '20 Гц', correct: false },
|
||
{ text: '0,2 Гц', correct: false },
|
||
],
|
||
explanation: '\\(f = \\dfrac{N}{t} = \\dfrac{10}{20} = 0{,}5\\,\\text{Гц}\\).',
|
||
},
|
||
{
|
||
topic: 'Колебания и волны', difficulty: 1, type: 'single',
|
||
text: 'Скорость звука в воздухе 340 м/с. Длина волны при частоте 1700 Гц:',
|
||
options: [
|
||
{ text: '0,2 м = 20 см', correct: true },
|
||
{ text: '0,02 м', correct: false },
|
||
{ text: '2 м', correct: false },
|
||
{ text: '0,578 м', correct: false },
|
||
],
|
||
explanation: '\\(\\lambda = \\dfrac{v}{f} = \\dfrac{340}{1700} = 0{,}2\\,\\text{м}\\).',
|
||
},
|
||
{
|
||
topic: 'Колебания и волны', difficulty: 2, type: 'single',
|
||
text: 'Математический маятник длиной \\(L = 1\\) м (\\(g = 10\\) м/с²). Период колебаний:',
|
||
options: [
|
||
{ text: '≈ 2 с', correct: true },
|
||
{ text: '≈ 1 с', correct: false },
|
||
{ text: '≈ 4 с', correct: false },
|
||
{ text: '≈ 0,5 с', correct: false },
|
||
],
|
||
explanation: '\\(T = 2\\pi\\sqrt{\\dfrac{L}{g}} = 2\\pi\\sqrt{\\dfrac{1}{10}} = \\dfrac{2\\pi}{\\sqrt{10}} \\approx 1{,}99\\,\\text{с} \\approx 2\\,\\text{с}\\).',
|
||
},
|
||
{
|
||
topic: 'Колебания и волны', difficulty: 2, type: 'single',
|
||
text: 'Маятник с периодом 2 с. При уменьшении его длины в 4 раза период станет:',
|
||
options: [
|
||
{ text: '1 с', correct: true },
|
||
{ text: '0,5 с', correct: false },
|
||
{ text: '4 с', correct: false },
|
||
{ text: '8 с', correct: false },
|
||
],
|
||
explanation: '\\(T \\propto \\sqrt{L}\\). При \\(L \\to L/4\\): \\(T \\to T/2 = 1\\,\\text{с}\\).',
|
||
},
|
||
{
|
||
topic: 'Колебания и волны', difficulty: 3, type: 'single',
|
||
text: 'Два маятника с периодами 2 с и 3 с начинают колебаться одновременно. Через сколько секунд они впервые окажутся в одинаковой фазе?',
|
||
options: [
|
||
{ text: '6 с', correct: true },
|
||
{ text: '3 с', correct: false },
|
||
{ text: '12 с', correct: false },
|
||
{ text: '1 с', correct: false },
|
||
],
|
||
explanation: 'Нужно наименьшее общее кратное периодов: \\(\\text{НОК}(2,\\,3) = 6\\,\\text{с}\\).',
|
||
},
|
||
];
|
||
|
||
/* ── insert ─────────────────────────────────────────────────────────── */
|
||
const insertQ = db.prepare(
|
||
'INSERT INTO questions (subject_id, topic_id, text, difficulty, year, explanation, type, image, source_type) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)'
|
||
);
|
||
const insertO = db.prepare(
|
||
'INSERT INTO options (question_id, text, is_correct, order_index) VALUES (?, ?, ?, ?)'
|
||
);
|
||
|
||
let inserted = 0, skipped = 0;
|
||
const checkQ = db.prepare('SELECT id FROM questions WHERE subject_id = ? AND text = ?');
|
||
db.exec('BEGIN');
|
||
try {
|
||
for (const q of questions) {
|
||
if (checkQ.get(SID, q.text)) { skipped++; continue; }
|
||
const topicId = getOrCreateTopic(SID, q.topic);
|
||
const { lastInsertRowid: qid } = insertQ.run(
|
||
SID, topicId, q.text, q.difficulty,
|
||
q.year || null, q.explanation || null, q.type || 'single', null, 'базовый'
|
||
);
|
||
q.options.forEach((o, i) => insertO.run(qid, o.text, o.correct ? 1 : 0, i));
|
||
inserted++;
|
||
process.stdout.write('.');
|
||
}
|
||
db.exec('COMMIT');
|
||
console.log(`\n✓ Вставлено ${inserted}, пропущено ${skipped} вопросов по физике.`);
|
||
} catch (err) {
|
||
db.exec('ROLLBACK');
|
||
console.error('\nОшибка:', err.message);
|
||
process.exit(1);
|
||
}
|