# Текст задачи на LaTex с переменными в виде [переменная]task=r'$\log_{[e]}{(x^2+[b]x+[c])}=[d]$ введите сумму корней'# Переменные задачи можно задавать в виде словаря# где ключ - это имя переменной, а значение - это список возможных значений# также можно задавать переменные в зависимости от других переменных, функциейranges=dict(
default=range(-10, 10),
x1=range(-10, 10),
x2=range(-10, 10),
d=range(1, 3),
b=lambdax1, x2: x1+x2,
c=lambdax1, x2, e, d: x1*x2+e**d,
)
if__name__=='__main__':
fromGENERATORimportgenerate_testgenerate_test(task, ranges)
# автоматически генерит выражения # и уравнения с суммой корней в качестве ответа
генерация неравенств
task=r'$\log_{[e]}{(x^2+[b]x+[c])}>[d]$'ranges=dict(
x1=range(-10, 10),
x2=range(-10, 10),
d=lambdab: range(1, 3),
b=lambdax1, x2: x1+x2,
c=lambdax1, x2, e, d: x1*x2+e**d,
)
if__name__=='__main__':
fromtemplatesimportgenerate_inequality_testgenerate_inequality_test(task, ranges, nulls=2)
# nulls - максимальное количество нулей в уравнении из неравенства# если не устанавливать, могут теряться корни
пример своего решения
task=r'решите выражение $\frac{[a]}{[b]}$'defsolution(a, b):
answer=a/b# примеры обработки ответа:ifround(answer, 2) ==answer:
# генерить если в ответе не больше 2 знаков после запятойreturnanswerelifanswer>10:
# можно регулировать сложность с помощью величиныreturnanswerelifround(answer, 6) ==int(answer):
# генерить если ответ почти не отличается от целого (погрешность)returnanswer# если ничего не вернулось, то пример пропускаетсяreturnNoneif__name__=='__main__':
fromGENERATORimportgenerate_testgenerate_test(task, ..., solution)