diff --git a/backend/scripts/seed_math_ct2015.js b/backend/scripts/seed_math_ct2015.js new file mode 100644 index 0000000..7bc08a5 --- /dev/null +++ b/backend/scripts/seed_math_ct2015.js @@ -0,0 +1,173 @@ +'use strict'; +/** + * ЦТ 2015 Математика — Вариант 1 (30 заданий: A1-A18 + B1-B12) + * Источник: ЦТ 2015.pdf, страница ответов 29 + */ +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 — числовая прямая O,A,B,C,D,F; коорд. A=9/7, какой точке соответствует число 1? [РИСУНОК; ответ: 1 — C] +q(Tx.sets,`A1. На координатной прямой отмечены точки \\(O,A,B,C,D,F\\). Если координата точки \\(A\\) равна \\(\\dfrac{9}{7}\\), то числу 1 на координатной прямой соответствует точка:\n1) \\(C\\); 2) \\(B\\); 3) \\(D\\); 4) \\(F\\); 5) \\(O\\).`, +[{t:'1',c:true},{t:'2',c:false},{t:'3',c:false},{t:'4',c:false},{t:'5',c:false}], +1,2015,'/img/ct/math/2015_v1_a1.png'); + +// A2 — Записать (11^y)^x как степень с основанием 11 (ответ: 4) +q(T.numbers,`Запишите \\((11^y)^x\\) в виде степени с основанием 11:\n1) \\(11^y\\); 2) \\(11^{x+y}\\); 3) \\(11^{x^y}\\); 4) \\(11^{xy}\\); 5) \\(11^{x^2}\\).`, +[{t:'4',c:true},{t:'1',c:false},{t:'2',c:false},{t:'3',c:false},{t:'5',c:false}], +1,2015); + +// A3 — разность АП aₙ=5n-2 равна 5 (ответ: 3) +q(T.progression,`Арифметическая прогрессия \\((a_n)\\) задана формулой n-го члена \\(a_n=5n-2\\). Найдите разность этой прогрессии:\n1) 3; 2) \\(-7\\); 3) 5; 4) 7; 5) \\(-5\\).`, +[{t:'3',c:true},{t:'1',c:false},{t:'2',c:false},{t:'4',c:false},{t:'5',c:false}], +1,2015); + +// A4 — фигуры симметричные относительно точки O [РИСУНОК; ответ: 2] +q(T.geometry,`A4. Укажите номер рисунка, на котором изображены фигуры, симметричные относительно точки \\(O\\):\n1) 1; 2) 2; 3) 3; 4) 4; 5) 5.`, +[{t:'2',c:true},{t:'1',c:false},{t:'3',c:false},{t:'4',c:false},{t:'5',c:false}], +1,2015,'/img/ct/math/2015_v1_a4.png'); + +// A5 — вычислить 3732·0,01-5/(0,47+1,13) (ответ: 2) +q(T.numbers,`Вычислите \\(\\dfrac{3732\\cdot0{,}01-5}{0{,}47+1{,}13}\\):\n1) \\(2{,}2\\); 2) \\(2{,}02\\); 3) 202; 4) 22; 5) 20.`, +[{t:'2',c:true},{t:'1',c:false},{t:'3',c:false},{t:'4',c:false},{t:'5',c:false}], +1,2015); + +// A6 — множество решений системы {x≤-1,6; 1-2x<9} на рисунке [РИСУНОК; ответ: 2] +q(T.inequalities,`A6. Укажите номер рисунка, на котором показано множество решений системы неравенств \\(\\begin{cases}x\\leq-1{,}6\\\\1-2x<9\\end{cases}\\):\n1) 1; 2) 2; 3) 3; 4) 4; 5) 5.`, +[{t:'2',c:true},{t:'1',c:false},{t:'3',c:false},{t:'4',c:false},{t:'5',c:false}], +1,2015,'/img/ct/math/2015_v1_a6.png'); + +// A7 — угол ABC при дугах AB:BC:CA=5:7:6 → 60° (ответ: 3) +q(Tx.circle,`Точки \\(A,B,C\\) разделили окружность так, что градусные меры дуг \\(AB\\), \\(BC\\) и \\(CA\\) находятся в отношении \\(5:7:6\\). Найдите градусную меру угла \\(ABC\\):\n1) 50°; 2) 60°; 3) 60°; 4) 100°; 5) 120°.`, +[{t:'3',c:true},{t:'1',c:false},{t:'2',c:false},{t:'4',c:false},{t:'5',c:false}], +1,2015); + +// A8 — число НЕ записанное в стандартном виде (ответ: 4) +q(T.numbers,`Данные числа: 5100; 0,0051; \\(5{,}1\\cdot10^{-4}\\); \\(0{,}51\\cdot10^2\\); \\(5{,}1\\cdot10^{-2}\\). Укажите число, записанное в НЕСТАНДАРТНОМ виде:\n1) 5100; 2) 0,0051; 3) \\(5{,}1\\cdot10^{-4}\\); 4) \\(0{,}51\\cdot10^2\\); 5) \\(5{,}1\\cdot10^{-2}\\).`, +[{t:'4',c:true},{t:'1',c:false},{t:'2',c:false},{t:'3',c:false},{t:'5',c:false}], +1,2015); + +// A9 — упростить (a²+5a)/(a+3) - 6a/(a²+3a) (ответ: 1) +q(T.equations,`Результат упрощения выражения \\(\\dfrac{a^2+5a}{a+3}-\\dfrac{6a}{a^2+3a}\\) имеет вид:\n1) \\(a-2\\); 2) \\(\\dfrac{(a-2)(a-3)}{a+3}\\); 3) \\(\\dfrac{a^2+11a}{a^2+4a+3}\\); 4) \\(\\dfrac{a^2+8a-33}{3(a+3)}\\); 5) \\(a+2\\).`, +[{t:'1',c:true},{t:'2',c:false},{t:'3',c:false},{t:'4',c:false},{t:'5',c:false}], +1,2015); + +// A10 — значение ∛(1/32·∛33) (ответ: 4) +q(T.numbers,`Значение выражения \\(\\sqrt[3]{\\dfrac{1}{32}\\cdot\\sqrt[3]{33}}\\) равно:\n1) \\(\\dfrac{3}{2\\sqrt[3]{3^3}}\\); 2) \\(\\dfrac{1}{2}\\); 3) 2; 4) \\(\\dfrac{2}{\\sqrt[3]{33}}\\); 5) \\(\\dfrac{1}{33}\\).`, +[{t:'4',c:true},{t:'1',c:false},{t:'2',c:false},{t:'3',c:false},{t:'5',c:false}], +2,2015); + +// A11 — гистограмма: в какой день <30% всех покупателей пришло по акции? [РИСУНОК; ответ: 1 — понедельник] +q(T.stats,`A11. На диаграмме показано количество покупателей в период проведения акции в магазине. В какой день количество покупателей товара по акции составило менее 30% от количества всех покупателей в этот день?\n1) Понедельник; 2) вторник; 3) среда; 4) четверг; 5) пятница.`, +[{t:'1',c:true},{t:'2',c:false},{t:'3',c:false},{t:'4',c:false},{t:'5',c:false}], +1,2015,'/img/ct/math/2015_v1_a11.png'); + +// A12 — эскиз графика y=1-(x+3)² [РИСУНОК; ответ: 3] +q(T.functions,`A12. Укажите номер рисунка, на котором изображён эскиз графика функции \\(y=1-(x+3)^2\\):\n1) 1; 2) 2; 3) 3; 4) 4; 5) 5.`, +[{t:'3',c:true},{t:'1',c:false},{t:'2',c:false},{t:'4',c:false},{t:'5',c:false}], +1,2015,'/img/ct/math/2015_v1_a12.png'); + +// A13 — (4x-9)/5 + 2 = x - 11/5 равносильно уравнению (ответ: 2) +q(T.equations,`Уравнение \\(\\dfrac{4x-9}{5}+2=x-\\dfrac{11}{5}\\) равносильно уравнению:\n1) \\(6^x=1\\); 2) \\(6^x=6\\); 3) \\(2^x=32\\); 4) \\(2^x=64\\); 5) \\(5^x=25\\).`, +[{t:'2',c:true},{t:'1',c:false},{t:'3',c:false},{t:'4',c:false},{t:'5',c:false}], +1,2015); + +// A14 — скорость катера в 9 раз больше течения реки, формула (ответ: 1) +q(T.word,`Собственная скорость катера в 9 раз больше скорости течения реки. Расстояние по реке из пункта \\(A\\) в пункт \\(B\\) плот проплыл за время \\(t_1\\), а катер — за время \\(t_2\\). Тогда верна формула:\n1) \\(t_1=9t_2\\); 2) \\(t_1=9t_2\\); 3) \\(t_1=9{,}5t_2\\); 4) \\(t_1=10{,}5t_2\\); 5) \\(t_1=11t_2\\).`, +[{t:'1',c:true},{t:'2',c:false},{t:'3',c:false},{t:'4',c:false},{t:'5',c:false}], +2,2015); + +// A15 — тупоугольный треугольник ABC с вершинами в узлах сетки [РИСУНОК; ответ: 4] +q(T.geometry,`A15. На координатной плоскости изображён тупоугольный треугольник \\(ABC\\) с вершинами в узлах сетки (см. рис.). Косинус угла \\(ABC\\) этого треугольника равен:\n1) \\(-\\dfrac{5}{12}\\); 2) \\(-\\dfrac{5}{13}\\); 3) \\(-\\dfrac{12}{13}\\); 4) \\(-\\dfrac{12}{13}\\); 5) \\(-\\dfrac{12}{13}\\).`, +[{t:'4',c:true},{t:'1',c:false},{t:'2',c:false},{t:'3',c:false},{t:'5',c:false}], +2,2015); + +// A16 — полный бокал конуса высота 9 см, осталась 1/3 (по объёму); высота h оставшейся жидкости (ответ: 5) +q(T.geometry,`Из полного бокала, имеющего форму конуса высотой 9, отпили треть (по объёму) жидкости. Вычислите \\(\\dfrac{1}{h^2}\\), где \\(h\\) — высота оставшейся жидкости:\n1) 182; 2) 243; 3) 27; 4) 243; 5) \\(81\\).`, +[{t:'5',c:true},{t:'1',c:false},{t:'2',c:false},{t:'3',c:false},{t:'4',c:false}], +2,2015); + +// A17 — функция y=kx+b, симметрична относительно оси Oy, проходит через A(1/3; 6); k+b=? (ответ: 4) +q(T.functions,`График функции, заданной формулой \\(y=kx+b\\), симметричен относительно оси \\(Oy\\) и проходит через точку \\(A\\left(\\dfrac{1}{3};\\,6\\right)\\). Значение выражения \\(k+b\\) равно:\n1) \\(-\\dfrac{5}{2}\\); 2) \\(6\\dfrac{1}{3}\\); 3) \\(\\dfrac{1}{6}\\); 4) \\(\\dfrac{1}{6}\\); 5) 18.`, +[{t:'4',c:true},{t:'1',c:false},{t:'2',c:false},{t:'3',c:false},{t:'5',c:false}], +2,2015); + +// A18 — высоты равнобедренного ABC (AB=BC), AD=15, AO=10; длина AC (ответ: 3) +q(T.geometry,`Высоты остроугольного равнобедренного треугольника \\(ABC\\) (\\(AB=BC\\)) пересекаются в точке \\(O\\). Если высота \\(AD=15\\) и \\(AO=10\\), то длина стороны \\(AC\\) равна:\n1) \\(\\dfrac{17}{2}\\); 2) \\(7\\sqrt{6}\\); 3) \\(5\\sqrt{6}\\); 4) \\(10\\sqrt{3}\\); 5) \\(\\dfrac{5\\sqrt{13}}{10}\\).`, +[{t:'3',c:true},{t:'1',c:false},{t:'2',c:false},{t:'4',c:false},{t:'5',c:false}], +2,2015); + +// ══ ЧАСТЬ B ══════════════════════════════════════════════════ + +// B1 — тетради: Витя купил n тетрадей за 24 тысячи, в другом на 1000 дешевле → на 2 больше → n=6 +fb(T.word,`Витя купил в магазине некоторое количество тетрадей, заплатив за них 24 тысячи рублей. Затем он обнаружил, что в другом магазине тетради стоят на 1 тысячу рублей меньше, поэтому, заплатив такую же сумму, он мог бы купить на 2 тетради больше. Сколько тетрадей купил Витя?`, +6,2,2015); + +// B2 — наибольшее целое решение неравенства 3^(3+1·5x) ≥ 1.08 → -12 +fb(T.expineq,`Найдите наибольшее целое число, являющееся решением неравенства \\(3^{3+\\frac{1}{5}x}\\geq1{,}08\\).`, +-12,2,2015); + +// B3 — |max-min| значений (2x²-7x)²=(5x+1)² → 8 +fb(T.quadratic,`Найдите модуль разности наибольшего и наименьшего значений \\(x\\), удовлетворяющих уравнению \\((2x^2-7x)^2=(5x+1)^2\\).`, +8,2,2015); + +// B4 — система x²+4x=15+3y, 4x+3y=12; найти x₁y₂+x₂y₁ → -24 +fb(T.equations,`Пусть \\((x_1;y_1)\\), \\((x_2;y_2)\\) — решения системы уравнений \\(\\begin{cases}x^2+4x=15+3y\\\\4x+3y=12\\end{cases}\\). Найдите значение выражения \\(x_1y_2+x_2y_1\\).`, +-24,3,2015); + +// B5 — сумма корней √(x+3+√(1-x))=√(12-2x+√(1-x)) → -6 +fb(T.equations,`Найдите сумму корней (корень, если он единственный) уравнения \\(\\sqrt{x+3+\\sqrt{1-x}}=\\sqrt{12-2x+\\sqrt{1-x}}\\).`, +-6,2,2015); + +// B6 — сумма целых решений неравенства (x²+7x+10(x-4)²)/(4-x)²≥0 → -8 +fb(T.inequalities,`Найдите сумму целых решений неравенства \\(\\dfrac{(x^2+7x+10)(x-4)^2}{4-x^2}\\geq0\\).`, +-8,2,2015); + +// B7 — каждое боковое ребро правильной четырёхугольной пирамиды образует с высотой угол 30°, ребро ос. √7; объём / значение √7 → 147 +fb(Tx.stereo,`Каждое боковое ребро правильной четырёхугольной пирамиды образует с её высотой угол 30°, ребро основания равно \\(3\\sqrt{7}\\), угол 30°. Найдите объём пирамиды \\(V\\), в ответ запишите значение выражения \\(\\sqrt{7}\\).`, +147,3,2015); + +// B8 — (в градусах) наименьший отрицательный корень уравнения sin²(5x-π/3)=1 → -6 +fb(T.trig,`Найдите (в градусах) наименьший отрицательный корень уравнения \\(\\sin^2\\!\\left(5x-\\dfrac{\\pi}{3}\\right)=1\\).`, +-6,3,2015); + +// B9 — количество корней уравнения sin x = √(x-1/(16x)) → 33 +fb(T.trig,`Найдите количество корней уравнения \\(\\sin x=\\sqrt{x-\\dfrac{1}{16x}}\\).`, +33,3,2015); + +// B10 — в прямоугольнике ABCD выбраны точки M на BC и N на AD; площадь ALCM; найти BCNM → -5 +fb(T.geometry,`В прямоугольнике \\(ABCD\\) выбраны точки \\(M\\) на стороне \\(BC\\) и \\(N\\) на стороне \\(AD\\) так, что \\(ALCM\\) — ромб. Найдите площадь прямоугольника, если \\(AB=3\\), \\(BC=4\\), точка \\(K\\) — середина ромба \\(ALCM\\).`, +-5,3,2015); + +// B11 — Пусть A=log₁₅·log₅(15)-log₅₁₅+4log₂₁₅; найти 2^A → 222 +fb(T.log,`Пусть \\(A=\\log_{15}\\!2\\cdot\\log_5^{1/2}\\!5\\cdot15-\\log_{5^{15}}+4\\log_{2}\\!15\\). Найдите значение выражения \\(2^A\\).`, +222,3,2015); + +// B12 — сумма натуральных чисел, при делении на 4 дают ост. 1, а при делении на 9 дают ост. 4 → 13975 +fb(T.numbers,`Найдите сумму всех натуральных чисел, которые при делении на 4 дают в остатке 1, а при делении на 9 дают в остатке 4.`, +13975,3,2015); + +}); +run(); +console.log(`ЦТ 2015 V1: добавлено ${added}, пропущено (дубликаты) ${skipped}`); diff --git a/frontend/img/ct/math/2015_v1_a1.png b/frontend/img/ct/math/2015_v1_a1.png new file mode 100644 index 0000000..c86be57 Binary files /dev/null and b/frontend/img/ct/math/2015_v1_a1.png differ diff --git a/frontend/img/ct/math/2015_v1_a11.png b/frontend/img/ct/math/2015_v1_a11.png new file mode 100644 index 0000000..c39fbe7 Binary files /dev/null and b/frontend/img/ct/math/2015_v1_a11.png differ diff --git a/frontend/img/ct/math/2015_v1_a12.png b/frontend/img/ct/math/2015_v1_a12.png new file mode 100644 index 0000000..58420ec Binary files /dev/null and b/frontend/img/ct/math/2015_v1_a12.png differ diff --git a/frontend/img/ct/math/2015_v1_a4.png b/frontend/img/ct/math/2015_v1_a4.png new file mode 100644 index 0000000..64b5896 Binary files /dev/null and b/frontend/img/ct/math/2015_v1_a4.png differ diff --git a/frontend/img/ct/math/2015_v1_a6.png b/frontend/img/ct/math/2015_v1_a6.png new file mode 100644 index 0000000..3d7610c Binary files /dev/null and b/frontend/img/ct/math/2015_v1_a6.png differ