diff --git a/backend/scripts/seed_math_ct2017.js b/backend/scripts/seed_math_ct2017.js new file mode 100644 index 0000000..c4282f6 --- /dev/null +++ b/backend/scripts/seed_math_ct2017.js @@ -0,0 +1,173 @@ +'use strict'; +/** + * ЦТ 2017 Математика — Вариант 1 (30 заданий: A1-A18 + B1-B12) + * Источник: CT-2017.pdf + Ответы ЦТ 2017.pdf + */ +const db = require('../src/db/db'); +const MATH_ID = 3; +const T = {arithmetic:16,word:17,numbers:18,trig:19,quadratic:20,progression:21,inequalities:22,geometry:23,functions:24,log:25,expineq:26,equations:27,stats:28}; +function getTopic(n){const e=db.prepare('SELECT id FROM topics WHERE subject_id=? AND LOWER(name)=LOWER(?)').get(MATH_ID,n);if(e)return e.id;return Number(db.prepare('INSERT INTO topics (subject_id,name) VALUES (?,?)').run(MATH_ID,n).lastInsertRowid);} +const Tx={stereo:getTopic('Стереометрия'),circle:getTopic('Окружность и круг'),sets:getTopic('Числовые промежутки'),}; +const ex=new Set(db.prepare('SELECT text FROM questions WHERE subject_id=3').all().map(q=>q.text.slice(0,80).trim())); +let added=0,skipped=0; +const insQ=db.prepare(`INSERT INTO questions (subject_id,topic_id,text,type,difficulty,year,explanation,correct_text,image,source_type) VALUES (?,?,?,?,?,?,?,?,?,?)`); +const insO=db.prepare(`INSERT INTO options (question_id,text,is_correct,order_index) VALUES (?,?,?,?)`); +function q(tid,text,opts,diff,year,img){ + const key=text.slice(0,80).trim();if(ex.has(key)){skipped++;return;}ex.add(key); + const r=insQ.run(MATH_ID,tid,text,'single',diff,year||null,null,null,img||null,'ЦТ'); + const id=r.lastInsertRowid;opts.forEach((o,i)=>insO.run(id,o.t,o.c?1:0,i));added++; +} +function fb(tid,text,ans,diff,year){ + const a=String(ans); + const key=text.slice(0,80).trim();if(ex.has(key)){skipped++;return;}ex.add(key); + insQ.run(MATH_ID,tid,text,'fill-blank',diff,year||null,null,a,null,'ЦТ'); + added++; +} + +const run=db.transaction(()=>{ + +// ══ ЧАСТЬ A ══════════════════════════════════════════════════ + +// A1 — вращение прямоугольников вокруг AD, цилиндр с квадратным осевым сечением [РИСУНОК; ответ: 3 — 3,5] +q(T.geometry,`A1. Укажите номера прямоугольников, изображённых на рисунках 1–5, при вращении которых вокруг стороны \\(AD\\) получается цилиндр, осевым сечением которого является квадрат:\n1) 2, 3; 2) 1, 5; 3) 3, 5; 4) 2, 4; 5) 1, 3, 5.`, +[{t:'3',c:true},{t:'1',c:false},{t:'2',c:false},{t:'4',c:false},{t:'5',c:false}], +1,2017,'/img/ct/math/2017_v1_a1.png'); + +// A2 — выразить 737 см 8 мм в метрах (до сотых = 7,38 м) (ответ: 4) +q(T.numbers,`Выразите 737 см 8 мм в метрах с точностью до сотых:\n1) 0,74 м; 2) 7,378 м; 3) 7,38 м; 4) 7,38 м; 5) 73,78 м.`, +[{t:'4',c:true},{t:'1',c:false},{t:'2',c:false},{t:'3',c:false},{t:'5',c:false}], +1,2017); + +// A3 — скорость автомобиля на участке BC по графику движения [РИСУНОК; ответ: 2 — 52 км/ч] +q(T.word,`A3. На рисунке изображён график движения автомобиля из пункта O в пункт N. Скорость движения автомобиля на участке \\(BC\\) (в км/ч) равна:\n1) 22; 2) 52; 3) 78; 4) 104; 5) 60.`, +[{t:'2',c:true},{t:'1',c:false},{t:'3',c:false},{t:'4',c:false},{t:'5',c:false}], +1,2017,'/img/ct/math/2017_v1_a3.png'); + +// A4 — выразить a из 3/(2b+1)=6/(a-b) → a=5b+2 (ответ: 1) +q(T.equations,`Выразите \\(a\\) из равенства \\(\\dfrac{3}{2b+1}=\\dfrac{6}{a-b}\\):\n1) \\(a=5b+2\\); 2) \\(a=5b-2\\); 3) \\(a=15b-6\\); 4) \\(a=15b+6\\); 5) \\(a=4b-1\\).`, +[{t:'1',c:true},{t:'2',c:false},{t:'3',c:false},{t:'4',c:false},{t:'5',c:false}], +1,2017); + +// A5 — значение 8√3 + ⅛√192 = 9√3 (ответ: 5) +q(T.numbers,`Значение выражения \\(8\\sqrt{3}+\\dfrac{1}{8}\\sqrt{192}\\) равно:\n1) \\(16\\sqrt{3}\\); 2) \\(\\sqrt{195}\\); 3) \\(8\\dfrac{\\sqrt{11}}{4}\\); 4) \\(\\dfrac{65\\sqrt{195}}{8}\\); 5) \\(9\\sqrt{3}\\).`, +[{t:'5',c:true},{t:'1',c:false},{t:'2',c:false},{t:'3',c:false},{t:'4',c:false}], +1,2017); + +// A6 — второй член aₙ=3n²-8n+9, a₂=5 (ответ: 3) +q(T.progression,`Последовательность \\((a_n)\\) задана формулой n-го члена \\(a_n=3n^2-8n+9\\). Второй член этой последовательности равен:\n1) 12; 2) \\(-16\\); 3) 5; 4) 16; 5) 6.`, +[{t:'3',c:true},{t:'1',c:false},{t:'2',c:false},{t:'4',c:false},{t:'5',c:false}], +1,2017); + +// A7 — 7cos²34°+10sin30°+7sin²34° = 7+5 = 12 (ответ: 1) +q(T.trig,`Значение выражения \\(7\\cos^2\\!34°+10\\sin30°+7\\sin^2\\!34°\\) равно:\n1) 12; 2) 17; 3) 24; 4) \\(7+10\\sqrt{3}\\); 5) \\(14+\\sqrt{3}\\).`, +[{t:'1',c:true},{t:'2',c:false},{t:'3',c:false},{t:'4',c:false},{t:'5',c:false}], +1,2017); + +// A8 — верное утверждение о кратности (148 кратно 1) (ответ: 3) +q(T.numbers,`Среди данных утверждений укажите номер верного:\n1) число 451 кратно числу 6;\n2) число 9 кратно числу 35;\n3) число 148 кратно числу 1;\n4) число 55 кратно числу 0;\n5) число 43 кратно числу 10.`, +[{t:'3',c:true},{t:'1',c:false},{t:'2',c:false},{t:'4',c:false},{t:'5',c:false}], +1,2017); + +// A9 — длина AB треугольника ABC (AC=32) [РИСУНОК; ответ: 2] +q(T.geometry,`A9. Дан треугольник \\(ABC\\), в котором \\(AC=32\\). Используя данные рисунка, найдите длину стороны \\(AB\\) треугольника \\(ABC\\):\n1) 10,2; 2) 14,6; 3) 13,8; 4) 13,5; 5) 10,4.`, +[{t:'2',c:true},{t:'1',c:false},{t:'3',c:false},{t:'4',c:false},{t:'5',c:false}], +2,2017,'/img/ct/math/2017_v1_a9.png'); + +// A10 — упростить √((2x-4,6)²)+4,6 при -10,b>0 при a=-2,b=4 значение выражения → 56 +fb(T.numbers,`Известно, что при числах \\(a\\) и \\(b\\), \\(a-2=-b<0\\). Найдите значение выражения \\(b+c\\).`, +56,2,2017); + +// B4 — произведение корней x²-3x=4√x²-5x+9 (единственный корень) → -48 +fb(T.equations,`Найдите произведение корней (корень, если он единственный) уравнения \\(x^2-3x=4\\sqrt{x^2-5x+9}\\).`, +-48,3,2017); + +// B5 — площадь параллелограмма (угол 45°, диагональ 7√2/2 на расстоянии √2/2 от сторон) → 72 +fb(T.geometry,`В параллелограмме с острым углом 45° точка пересечения диагоналей удалена от прямых, содержащих неравные стороны, на расстояния \\(\\tfrac{7\\sqrt{2}}{2}\\) и 2. Найдите площадь параллелограмма.`, +72,2,2017); + +// B6 — x₀ = наибольший корень log₅(x/32) + 4log₂·5x - 52=0, выражение 7√(x₀/√x₀) → -32 +fb(T.log,`Пусть \\(x_0\\) — наибольший корень уравнения \\(\\log_5\\!\\dfrac{x}{32}+4\\log_{25}\\!x-52=0\\), тогда значение выражения \\(7\\sqrt{\\!x_0}\\) равно...`, +-32,3,2017); + +// B7 — неравенство 1/(√17-4)^(x+7) ≥ (√17-4)^(4x+5) → сумма целых из [-20;-2] → -209 +fb(T.inequalities,`Решите неравенство \\(\\dfrac{1}{(\\sqrt{17}-4)^{x+7}}\\geq(\\sqrt{17}-4)^{4x+5}\\). Запишите сумму целых решений, принадлежащих промежутку \\([-20;-2]\\).`, +-209,3,2017); + +// B8 — найти увеличение в 8 раз произведения абсцисс точек пересечения y=12 и чётной функции → -143 +fb(T.functions,`Найдите увеличенное в 8 раз произведение абсцисс точек пересечения прямой \\(y=12\\) и графика нечётной функции, область определения которой \\((-\\infty;0)\\cup(0;+\\infty)\\) и при \\(x>0\\) задаётся формулой \\(y=2x^{5/2}-4\\).`, +-143,3,2017); + +// B9 — площадь поверхности полиэдра (SABCD пирамида, основание квадрат a=1, SB⊥основанию, SB=2√3) → 121 +fb(Tx.stereo,`Найдите площадь полной поверхности прямой треугольной призмы, описанной около шара, если площадь основания призмы равна 7,5.`, +121,3,2017); + +// B10 — произведение наибольшего целого решения на кол-во целых решений 18/(3+|24-x|)>|24-x| → 119 +fb(T.inequalities,`Найдите произведение наибольшего целого решения на количество целых решений неравенства \\(\\dfrac{18}{3+|24-x|}>|24-x|\\).`, +119,2,2017); + +// B11 — первые члены АП и ГП одинаковы и равны 3, вторые различны, при третьих: aₙ одинаковы → 121 +fb(T.progression,`Первые члены арифметической и геометрической прогрессий одинаковы и равны 3, третьи члены тоже одинаковы, а вторые различны. Найдите пятый член арифметической прогрессии, если все члены обеих прогрессий положительны.`, +121,3,2017); + +// B12 — прямая четырёхугольная призма ABCDA₁B₁C₁D₁ (объём 960), A₁M:MD₁=1:3... → 60 +fb(Tx.stereo,`\\(ABCDA_1B_1C_1D_1\\) — прямая четырёхугольная призма, объём которой равен 960. Основанием призмы является параллелограмм \\(ABCD\\). Точки \\(M\\) и \\(N\\) принадлежат рёбрам \\(A_1D_1\\) и \\(C_1D_1\\) так, что \\(A_1M:MD_1=1:3\\) и \\(D_1N:NC_1=1:3\\). Точки \\(A_1N\\) и \\(B_1M\\) пересекаются в точке \\(K\\). Найдите объём пирамиды \\(SB_1KNC_1\\), если \\(S\\in B_1D_1\\) и \\(B_1S:SD=3:1\\).`, +60,3,2017); + +}); +run(); +console.log(`ЦТ 2017 V1: добавлено ${added}, пропущено (дубликаты) ${skipped}`); diff --git a/frontend/img/ct/math/2017_v1_a1.png b/frontend/img/ct/math/2017_v1_a1.png new file mode 100644 index 0000000..a8afdd9 Binary files /dev/null and b/frontend/img/ct/math/2017_v1_a1.png differ diff --git a/frontend/img/ct/math/2017_v1_a11.png b/frontend/img/ct/math/2017_v1_a11.png new file mode 100644 index 0000000..da6943b Binary files /dev/null and b/frontend/img/ct/math/2017_v1_a11.png differ diff --git a/frontend/img/ct/math/2017_v1_a12.png b/frontend/img/ct/math/2017_v1_a12.png new file mode 100644 index 0000000..2692fb4 Binary files /dev/null and b/frontend/img/ct/math/2017_v1_a12.png differ diff --git a/frontend/img/ct/math/2017_v1_a14.png b/frontend/img/ct/math/2017_v1_a14.png new file mode 100644 index 0000000..ec71247 Binary files /dev/null and b/frontend/img/ct/math/2017_v1_a14.png differ diff --git a/frontend/img/ct/math/2017_v1_a15.png b/frontend/img/ct/math/2017_v1_a15.png new file mode 100644 index 0000000..66c529c Binary files /dev/null and b/frontend/img/ct/math/2017_v1_a15.png differ diff --git a/frontend/img/ct/math/2017_v1_a3.png b/frontend/img/ct/math/2017_v1_a3.png new file mode 100644 index 0000000..9ad525b Binary files /dev/null and b/frontend/img/ct/math/2017_v1_a3.png differ diff --git a/frontend/img/ct/math/2017_v1_a9.png b/frontend/img/ct/math/2017_v1_a9.png new file mode 100644 index 0000000..63fa32a Binary files /dev/null and b/frontend/img/ct/math/2017_v1_a9.png differ