Версия 2.1.42 (20050930) ======================== В данной версии исправлены ошибки процесса инсталляции системы и внесены некоторые улучшения. ejudge-setup ------------ При генерации инсталляционного скрипта генерируется команда создания символической ссылки на программу serve-control. Makefile -------- Улучшена обработка ситуации, когда в операцонной системе не установлены утилиты локализации xgettext и т. д. userlist-server --------------- Все cookie пользователя сбрасываются после смены им пароля. super-serve,serve-control ------------------------- Поддерживается редактирование переменной `checker_env' раздела описания задачи. Поддерживаются новые стандартные чекеры (см. ниже). При редактировании содержимого заголовочных файлов и стартового скрипта автоматически выполняется перекодирование из DOS-формата файлов в Unix-формат, так как браузер пересылает данные в DOS-формате текста (т. е. с концами строк \r\n). CGI-программы master и judge открываются в новом окне браузера. Поддерживается редактирование переменной `variant_num' раздела описания задач. Поддерживается редактирование таблицы распределения вариантов для вариантных задач. Поддерживается проверка настроек турнира для вариантных задач. libchecker ---------- Добавлены функции сравнения вещественных чисел. int checker_eq_double(double v1, double v2, double eps); int checker_eq_long_double(long double v1, long double v2, long double eps); int checker_eq_float(float v1, float v2, float eps); Эти функции сравнивают два вещественных числа v1 и v2 с точностью eps. Корректно обрабатываются специальные значение NaN, +Inf, -Inf. Если модули обоих чисел не превышают 1, то модуль разности между ними должен быть меньше 2*eps, т. е. |v1 - v2| < 2*eps. Если модуль хотя бы одного числа > 1, они должны иметь один знак, далее их порядки изменяются так, чтобы оба числа попали в интервал [0,2), затем проверяется условие |v1 - v2| < 2*eps. Таким образом, значение eps задаёт, сколько совпадающих десятичных знаков должны иметь два числа. Добавлено несколько новых стандартных чекеров: cmp_float, cmp_double, cmp_long_double - сравнивают вывод проверяемой программы, который должен состоять из одного вещественного числа соответствующего типа, и правильный ответ. Для сравнения используются функции сравнения вещественных чисел, описанные выше. Параметр eps должен задаваться с помощью переменной окружения EPS, для установки которой необходимо использовать конфигурационную переменную `checker_env' раздела описания задачи. cmp_bytes - сравнивает вывод проверяемой программы и правильный ответ байт в байт. cmp_int_seq, cmp_unsigned_int_seq, cmp_long_long_seq, cmp_unsigned_long_long_seq - сравнивают последовательность целых чисел соответствующего типа в выводе проверяемой программы и в правильном ответе. Вывод программы должен состоять только из целых чисел, разделённых пробельными символами. Количество чисел и сами числа в выводе программы и в правильном ответе должны совпадать. cmp_double_seq, cmp_long_double_seq - сравнивают последовательность вещественных чисел соответствующего типа в выводе проверяемой программы и в правильном ответе. Вывод программы должен состоять только из вещественных чисел, разделённых пробельными символами. Количество чисел и сами числа в выводе программы и в правильном ответе должны совпадать. Точность сравнения чисел определяется переменной окружения EPS.