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

За оценяването и резултатите от алгоритмичната част

Тази задача беше интересна с две неща. На първо място, състезателите бяха изправени пред решаване на задача, която често се среща в съвременните стратегически игри (по-конкретно Turn-based strategy игрите) – да измислят игрова логика, справяща се възможно най-добре в зададения свят. Не е ясно дали оптимално решение в зададените ограничения съществува, и всички успешни алгоритми в един или друг смисъл ползваха определени евристични подходи в решението. Другата интересна част беше „играта“ и от двете страни – и на атакуващия и на защитаващия. Атакуващия съответно беше алгоритъма, а защита всъщност беше задача за генериране на тест, който е възможно най-труден за останалите алгоритми, но за който авторите би следвало да знаят най-доброто решение. Тук предполагахме, че състезателите ще генерират тест и предварително ще изчислят най-доброто възможно поведение за него, и в ще вкарат това поведение в алгоритъма си при разпознаване на техния тест. Поздрави на всички, които се постараха да се справят с тази задача.

Тестовете, проверката, резултатите

В този кръг, макар да имахме „помощ“ от състезателите с генерирането на тестовете, все пак искахме да сме коректни и да генерираме добри тестове. Но „добри“ и „изчерпателни“ тестове за тази задача не беше ясно как можем да създадем – променливите и взаимовръзките между тях бяха твърде много, за да е смислено напълно автоматизирано генериране (освен ако не бяхме решили да отделим 1 месец само за това). В същото време, генериране на ръка щеше да е също доста трудоемко и нямаше да покрие достатъчно случаи. Без малко да стигнем до вица за компромисния вариант, когато се досетихме, че можем да направим хибридно, полуавтоматизирано генериране на тестове.

Генерирането протече по следния начин: генерирахме определен брой матрици с размерите на игралното поле и във всяка от тях разположихме по определени начини солни мини и оборудвани пилета. Идеята беше проста – в контекста на тази задача смислени тестове са такива, в които позиционирането един човек защитник би създал, за да се защитава възможно най-добре, плюс няколко различни конфигурации, които не са най-добрите възможни защити, но са доста разпилени из пространството. След това върху всяка матрица пуснахме на няколко пъти генератор, който да избере по колко единици да сложи на определена позиция. Така получихме една сравнително разнообразна и смислена колекция от 45 теста. Оттам нататък включихме 14-те валидни тестовете и на участниците, за да си завършим колекцията.

Оценяването се проведе на две фази – първо изпълнихме всички тестове на журито, след това всички тестове на участниците върху всички алгоритми. След това взехме средно аритметичния резултат на всеки алгоритъм от двете фази като краен резултат – тоест изпълнихме обещанието за равнопоставеност на тестовете на журито с тези на участниците.

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

За оценяването и резултатите от приложната част

Ако трябва да сме честни, очаквахме повече в приложната част. Вярно, имаше доста силни решения, които си бяха почти напълно завършени игри, но много от участниците не бяха пратили решения изобщо, а някои от пратените имаха сериозни проблеми с функционирането и ползваемостта. Разбира се, журито много добре разбира сложността на създаването на една работеща игра и по никакъв начин не омаловажява труда на участниците.

Оценяването протече сравнително безаварийно и макар в началото да изглеждаше, все едно задачата сериозно е затруднила всички, се появиха решения които бяха впечатляващи. С две думи, някои приложения имаха проблеми с приемането на входни данни, както и с цялостното изпълнение на „играта“. В общата картина, повечето приложения бяха сравнително трудни за ползване (някои дори не представяха игралното поле), но почти навсякъде най-основните неща нужни, за да може да се „играе“ все пак бяха на лице (макар и не винаги твърде удобни). Трябва да се отбележе, че състезателите се бяха постарали да пресъздадат атмосферата на задачата – видяхме какви ли не карикатури на фермери и добитък, а на места и някои интересни истории. Имаше няколко решения, чиито техническо изпхълнение беше на доста добро ниво и те добре ще си проличат от класирането – силно препоръчваме да пробвате решенията на отборите в челните места по приложната част – няма да останете разочаровани.

Резултати и награждаване

Ето и класирането – както обикновено, участниците са представени чрез потребителските им имена в студентската система на Телерик.

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

Радваме се на продължаващото ви участие и очакваме да премерите сили в следващия кръг!

Автор 1 Автор 2 Общо Алгоритъм Приложение
paveld3 at.keranov 20 10 10
KOCTEHYPKATA desi.docheva 17 9 8
kdikov nikola76 16 9 7
krasi.nikolov ognyan.petkov 13 7 6
plamen_1 hristy93 12 7 5
pemmpty lazo003 9 5 4
d_p_y mariq88 8 5 3
mitko_lazarov 8 8 0
pirin isipro 8 8 0
aleks.todorov nader.dabour 7 3 4
aslv1 erik1001 7 4 3
angel.n.stoyanov migrachev 5 5 0
yonko.tsonev 4 1 3
staafl 2 2 0
cocodonchev rusiqt 1 1 0
JavaSTNT 0 0 0
MarinDraganov veke_D 0 0 0

Предстои да обновим и генералното класиране в страницата Класиране в следващите дни.

Подробни резултати и допълнителни материали

Всички допълнителни материали от състезанието (решения на участниците, тестове, лог файлове на тестването и т.н.) ще могат да бъдат намерени до няколо дни след класирането на този адрес: http://downloads.academy.telerik.com/svn/pc-magazine/Public/.

P.S.: Честит 8 март на всички празнуващи : ) !