Привет на всички участници! Решихме да направим някои малки промени в оценяването на алгоритмичната част, както и да добавим още един етап при тестването на решенията ви, като с тези промени целим да улесним участието ви и да го направим по-приятно. И тъй като това все пак са промени (макар и малки), както и поради наличието на голям брой празници по времето на този кръг, решихме да увеличим срока за предаване с няколко дни. В следващите редове ще видите по-подробно за какво става на въпрос.

Промяна в срока за предаване

Удължаваме срока за предаване на решенията за задачата от втори кръг до 20 януари, неделя (преди това беше 17 януари).

Промяна в оценяването на алгоритмичната част

Решихме да внесем една по-значителна промяна в оценяването на алгоритмичната част. До момента, оценяването се извършваше, като за всеки тест един алгоритъм получаваше различен брой точки в зависимост от игралното поле. Така по-малките полета даваха по-малко точки, а по-големите – повече точки. Проблемът е, че разликата между точки за малки и големи полета беше твърде голяма и малките полета бяха п0чти незначителни в оценяването. Въпреки че сме на мнение, че алгоритъм който се справя с големи полета, заслужава по-добра оценка от такъв, който се справя с малки, разликата е твърде голяма и искаме да оценим по-добре усилията вложени за оптимизиране на малки полета. В същото време не искахме да ощетим алгоритмите, които се справят добре на големите полета. Ето какво измислихме.

Отсега нататък (освен ако не е изрично споменат0), всички тестове ще носят еднакъв брой точки и сумата на точките от всички тестове ще е 10. Тоест, поле 10 на 10 ще носи същите точки като поле 1000 на 1000. Това ще стане, като за всеки тест ще се намира най-добрия резултат на алгоритъм и той ще получи максималните точки за този тест, а останалите ще получат съответния процент от тези точки за този тест (т.е. скалирането се извършва за всеки тест, а не за сбора от всички тестове като преди). Например:

  • ако за задачата има 10 теста, то всеки ще носи по 1 точка.
  • Ако на първото поле най-добре представилият се алгоритъмът G има резултат 30
  • алгоритъмът M има резултат 15,
  • а алгоритъмът L има резултат 10, то
  • в крайна сметка точките за този тест са:
    • G: 1 точка
    • M: 0.5 точки
    • L: 0.33 точки
  • По същия начин се оценяват всички останали тестове, точките се сумират и след това се закръглят до цяло число

И сега едно пояснение. Тъй като с това оценяване малките и големи полета получават еднакви точки, а това не е коректно спрямо алгоритмите, които работят добре и за големи полета, ще има количествена разлика между тестовете с малки полета и тези с големи полета. Тестовете с малки полета ще бъдат по-малко от тестовете с големи полета (съотношението ще е около 30/70 или 40/60 в полза на тестовете с големи полета, но това е по-скоро пример отколкото нещо конкретно).

Забележка: тук “малки” и “големи” полета е ползвано заради условията на задачите до този момент. По-нататък същото ще важи съответно за “ниска” и “висока” сложност – за първите два кръга сложността е правопропорционална на големината на полето, но това не винаги ще е така.

Предварително тестване на алгоритмите

За да избегнем усложнения, подобни на тези от миналия кръг – а именно неправилно подредени решения, грешен вход-изходен формат и подобни – ще проведем две предварителни тествания на  предадените решения. Тези тествания са единствено с цел да насочат участниците и да им покажат грешките им преди реалното пращане на решения. Така всеки ще може да види дали е поставил алгоритъма си на правилното място и дали правилно е описал отбора си във файла authors.txt (виж инструкциите за предаване на решения), както и как се държи алгоритъмът му при тестването.

Забележка: при отбори от двама участника, препоръчваме само единият да предава решение за определен кръг, за да избягваме разминавания в решенията на участниците от един отбор.

Предварителното тестване ще се проведе в петъка и съботата преди крайния срок (т.е. на датите 18 и 19 януари) и ще протече по следния начин:

  • За да участват в първото предварителното тестване, всички състезатели предават решения до 23:00 часа в петък, като само последно предадените решения от всеки отбор се оценяват
    • Забележка: предадените решения не е нужно да са напълно функционални – върху тях ще бъдат изпълнени само примерните тестове дадени в условието и тези резултати няма да се зачитат в реалното оценяване
  • Журито стартира автоматизирана проверка на подредбата на решенията, извличане на автори и отбори и изпълнение на примерните тестове
  • Журито публикува информация в 24:00 часа, петък срещу събота, (във формата на логове и таблици с отбори) относно коректността на решенията. Възможно е известно закъснение в зависимост от броя на некоректно предадените решения
  • Състезателите коригират решенията си и ги предават до 23:00 в събота, за да участват във второ предварително тестване, като процесът се повтаря
    • Забележка: състезателите могат да участват във второто предварително тестване, дори без да са участвали в първото
  • Трето предварително тестване няма да се провежда, и крайният срок за предаване на решения за оценка е неделя, 20 януари, 23:59:59 часа.

С тези мерки се надяваме да избегнем забавяния при тестването, корекции от журито върху алгоритмите и налагане на наказателни точки. Моля обърнете внимание, че правилното форматиране на предаденото решение (папка algorithm, папка application и файл authors.txt) е важно, тъй като в следващите кръгове извличането на алгоритмите за тестване и на отборите ще бъде автоматизирано).

Участието в предварителното тестване е по желание на участниците, но журито силно го препоръчва.