Установка задач с выбором и вводом правильного ответа (по математике)

Для установки таких задач необходимы три файла (кроме самого условия): task.in – входные данные тестов, task.out – выходные данные тестов, task.cfg – конфигурация задачи (одинаковый для всех задач этого типа). Все файлы в кодировке windows, в файлах не должно быть пустых строк.

Для задач с выбором правильного ответа следует использовать следующий файл task.cfg:

TYPE = USERS

CHECKER = 'D:\DelTA\Checkers\MathCheck.exe $SOLUTION$ task.out $MAXPOINT$'

CHECKFILES = {task.out}

CHECKSUBJECT = FILE

EXTTYPE = 'Пользовательская'

Формат файла task.in

Первая строка файла должна содержат символ H (horizontal) или V (vertical) – вертикальный или горизонтальный фрейм и далее через пробел – число, размер фрейма в процентах, относительно условия задачи. Пример первой строки: V 21%

Любая из последующих строчек может быть либо текстом, либо полем ввода, и так далее:

Формат строки

Пример строки

Назначение

HDIV Текст

HDIV Тест 1

Разделитель тестов. Обычный текст, выделенный цветом.

TEXT Текст

TEXT 2+2=

Обычный текст.

EDIT Код Текст

EDIT ans1 Ответ:

Поле ввода текста среднего размера (8..20 символов)

SEDIT Код Текст

SEDIT ans2 Ответ:

Поле ввода текста малого размера (до 8 символов)

LEDIT Код Текст

LEDIT ans3 Ответ:

Поле ввода текста большого размера (более 20 символов)

WEDIT Код Текст

WEDIT ans4 Ответ:

Поле ввода текста очень большого размера (ровно на всю ширину окна)

EDT Код

EDT ans3 Ответ:

Поле ввода текста среднего размера, без перевода строки.

COMBO Код Вариант1|

Вариант2|…

COMBO ans4 No|Yes

Выбор из нескольких вариантов.

RADIO Код Вариант1

RADIO ans5 2+2=3

RADIO ans5 2+2=4

Выбор из нескольких вариантов.

CHECK Код Тест

CHECK ans6 2+2=4

Выбор варианта

Пример:

V 38%

TEXT Обычный текст

TEXT И еще текст

HDIV Проверка сложения

CHECK ans1 2+2=4

HDIV Проверка умножения

RADIO ans2 2*2=3

RADIO ans2 2*2=4

HDIV Проверка деления

TEXT 25/5=

COMBO ans3 5|4|3

HDIV Сколько будет 2<sup>2</sup>?

SEDIT ans4

HDIV Сколько будет 2<sup>20</sup>?

EDIT ans5

HDIV Сколько будет 2<sup>40</sup>?

LEDIT ans6

Формат файла task.out

Первая строка файла должна быть

countby=task (если балы даются за полностью решенную задачу) или

countby=test (если балы даются за каждый верный ответ).

case=sensitive (опциональная строка, которая форсирует регистрозависимое сравнение пользовательских ответов с правильными).

 

Далее идут блоки тестов. Каждый блок начинается со строки

[N] (здесь N – номер теста). Далее необходимо указать правильные ответы:

Код=Правильный ответ

В конце блока теста следует количество баллов за тест:

score[N]=баллов

 

После всех тестов должна быть формула для вычисления баллов за всю задачу. В ней разрешено использовать операции сложения и умножения:

total=score[N1]+score[N2]*score[N3]…

 

Пример (для приведенного выше файла task.in):

countby=test

[1]

ans1=1

score[1]=1

[2]

ans2=2

score[2]=1

[3]

ans3=1

score[3]=1

[4]

ans4=4

score[4]=1

[5]

ans5=1048576

score[5]=1

[6]

ans6=1099511627776

score[6]=1

total=score[1]+score[2]+score[3]+score[4]+score[5]+score[6]

Внимание! Знак равенства в каждом случае должен следовать сразу за "переменной". Пробелы недопустимы.
В строчках, задающих правильные ответы, все, что находится после знака "=" вплоть до перевода строки, трактуется, как принадлежащее ответу (в т.ч. начальные и конечные пробелы).

Возможны также несколько правильных вариантов ответа. Для этого достаточно перечислить их все:

[1]

ans1=мышь

ans1=мышка

score[1]=1

Если Вас не устраивает наш стандартный интерфейс пользователя, вы можете создать свой. Для этого достаточно скрыть панель с ответами, поставив в файле task.in строке V 0% и в файле с условием составить свои формы для посылки.  Пример такого приема можно увидеть в курсе «Пропедевтика информатики».

New! Широкие возможности по выбору желаемого интерфейса, а также использованию готовых шаблонов предоставляет новый формат диалоговых задач.

Рисунок 6 – Нестандартный интерфейс ввода

 

Программа для преобразования тестов из задач «по программированию» в «математические» задачи

В системе DLB часто проводятся параллельно олимпиады по программированию и информатической математике. Причем условия задач по математике такие же, как и в задачах по программированию. Разница лишь в том, что в задаче по программированию ученику необходимо написать программу, которая бы давала ответ при любых входных данных, а в математической задаче ученик должен находить ответ сам.

Для проведения таких олимпиад можно использовать одинаковый набор тестов (для математиков большие и трудоемкие тесты можно опускать).

Мною создана программа, которая по существующим тестам для программистов создает тесты для математических задач.

Перед запуском программы должны быть созданы файлы task.cfg, 1.in, 1.out, …

Параметры запуска:

/число : обрабатывать первых n тестов

/H     : горизонтальный фрейм (по умолчанию - вертикальный)

/Sчисло: размер фрейма в % (по умолчанию - 21%)

/T     : балы даются по тестам (по умолчанию - за всю задачу)

/C     : форма для вопроса – COMBO

Полученные файлы task.in и task.out необходимо скопировать в каталог тестов. Туда же надо скопировать стандартный для математических задач task.cfg.

Данную программу всегда можно найти в каталоге \\NIT_SERVER\NIT\PROJECTS\DL\TST2MATH