Обновления Testlib и Polygon (июнь 2015)

Revision ru18, by fcspartakm, 2015-06-29 15:15:48

Привет, Codeforces!

Месяц назад я присоединился к работе чудесной команды Codeforces во главе с Михаилом Мирзаяновым (MikeMirzayanov). Традиционно, чтобы вникнуть во все тонкости этого проекта, моя работа началась с системы Polygon. Хотелось бы рассказать Вам о ее изменениях.

Для редактирования файлов в Polygon теперь используется Ace Editor. В нем есть приятная глазу подсветка синтаксиса и автодополнение (нужно нажать Ctrl + Space). В скором времени планируется внедрить этот редактор и в Codeforces.

К сожалению, Ace Editor не поддерживает скроллинг текста на телефонах и планшетах, поэтому для них останется старый редактор текста.

На странице валидатора, чекера и интеркатора появилась кнопка View Source, при нажатии на которую можно посмотреть исходный код файла. В основном, это удобно тем, что теперь можно посмотреть код стандартных чекеров.

В библиотеку Testlib также были внесены полезные изменения, которые поддержаны и в Polygon. Теперь можно указывать в валидаторе различные ограничения для различных тестсетов, а также для различных групп тестов. Для регистрации валидатора теперь нужно использовать registerValidation(argc, argv);, а у validator появились методы validator.group() и validator.testset().

Для проверки теста валидатором из командной строки с использованием тестсета и группы надо выполнить команду val.exe --testset "testsetName" --group "groupName" < testFile.

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

Также упрощена проверка покрытия тестами различных случаев. Это поддерживается в Polygon во вкладке Invocation.

Если в валидаторе указать название переменной (это функция игнорируется для переменных, содержащих в названии цифры), то в случае, если нет тестов, в которых эта переменная достигает своего минимального или максимального значения, после выполнения Invocation, появится предупреждение об этом.

Если нужно удостовериться, например, что есть тест где значение переменной n четно, нужно добавить в валидатор новую Feature addFeature("even-n"), а после считывания значения переменной n нужно написать: if (n % 2 == 0) feature("even-n);.

Введение Feature будет полезно для человека, проверяющего готовую задачу или готовый контест. Но, как нам кажется, эта функция будет полезна и самим авторам задач.

В скором времени Вас ждут все новые и новые улучшения! Всем хорошего летнего настроения!

Tags codeforces, polygon, testlib, полигон

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en12 English fcspartakm 2015-06-30 14:23:45 30
ru32 Russian fcspartakm 2015-06-30 14:23:31 0 (опубликовано)
ru31 Russian fcspartakm 2015-06-30 14:23:12 30 (сохранено в черновиках)
ru30 Russian fcspartakm 2015-06-30 12:52:14 15 Мелкая правка: 'orces.\n\n![ ](h' -br/
en11 English fcspartakm 2015-06-30 12:51:57 228 Tiny change: '.\n\n[cut]\n\n![ ](h' -br/
ru29 Russian fcspartakm 2015-06-30 12:47:13 284
ru28 Russian fcspartakm 2015-06-30 12:42:33 0 (опубликовано)
en10 English fcspartakm 2015-06-30 12:42:21 77
ru27 Russian fcspartakm 2015-06-30 12:37:26 45
en9 English fcspartakm 2015-06-30 12:36:50 139
en8 English fcspartakm 2015-06-30 12:32:04 153
ru26 Russian fcspartakm 2015-06-30 12:17:58 131
en7 English fcspartakm 2015-06-29 19:28:58 61
en6 English fcspartakm 2015-06-29 19:28:15 10 Tiny change: 'om/4cbe16/тетстстс.png)\n\nI' -
ru25 Russian fcspartakm 2015-06-29 19:26:07 62
en5 English fcspartakm 2015-06-29 19:25:19 65
ru24 Russian fcspartakm 2015-06-29 19:24:58 71
en4 English fcspartakm 2015-06-29 19:23:53 1089
en3 English fcspartakm 2015-06-29 18:57:06 2096
en2 English fcspartakm 2015-06-29 17:46:39 451
en1 English fcspartakm 2015-06-29 17:35:14 4050 Initial revision for English translation
ru23 Russian fcspartakm 2015-06-29 15:28:43 263
ru22 Russian fcspartakm 2015-06-29 15:26:44 168
ru21 Russian fcspartakm 2015-06-29 15:25:59 167
ru20 Russian fcspartakm 2015-06-29 15:25:14 890
ru19 Russian fcspartakm 2015-06-29 15:16:29 39
ru18 Russian fcspartakm 2015-06-29 15:15:48 80
ru17 Russian fcspartakm 2015-06-29 15:14:52 58
ru16 Russian fcspartakm 2015-06-29 15:11:18 16
ru15 Russian fcspartakm 2015-06-29 15:10:48 6 Мелкая правка: 'нию, [Ace Redactor](http:' -> 'нию, [Ace Editor](http:'
ru14 Russian fcspartakm 2015-06-29 15:09:54 48
ru13 Russian fcspartakm 2015-06-29 14:44:32 1 Мелкая правка: 'estsetName --group "' -> 'estsetName" --group "'
ru12 Russian fcspartakm 2015-06-29 14:18:44 8 Мелкая правка: ' хорошего настроения' -> ' хорошего летнегнастроения'
ru11 Russian fcspartakm 2015-06-29 14:17:58 2 Мелкая правка: 'upName" ----testOver' -> 'upName" --testOver'
ru10 Russian fcspartakm 2015-06-29 14:17:38 187
ru9 Russian fcspartakm 2015-06-29 14:01:49 543
ru8 Russian fcspartakm 2015-06-29 13:56:37 2 Мелкая правка: 'мального и максимал' -> 'мального или максимал'
ru7 Russian fcspartakm 2015-06-29 13:56:16 14 Мелкая правка: 'титестсеты, чтобы избежать проблем с' -> 'титестсеты без проблем с'
ru6 Russian fcspartakm 2015-06-29 13:55:15 84
ru5 Russian fcspartakm 2015-06-29 13:53:07 986 Мелкая правка: 'человека. Например, ' -
ru4 Russian fcspartakm 2015-06-29 13:38:02 100 Мелкая правка: '`.\n\n\n\n' -
ru3 Russian fcspartakm 2015-06-29 13:37:09 322 Мелкая правка: 'et()`.\n\n![ ](http://codeforces.me/492b87/validator.png)\n\n' -> 'et()`.\n\n\n\n'
ru2 Russian fcspartakm 2015-06-29 13:20:48 550 Мелкая правка: 'та.\n\n2. ' -
ru1 Russian fcspartakm 2015-06-29 13:15:15 341 Первая редакция (сохранено в черновиках)