Турнирът “The Challenge” тази година е вдъхновен от гейминг индустрията и се реализира с доверието и пълната подкрепа на водещото студио за мобилни игри Gameloft Sofia.
Четиримерни ротации, колизии, UV разгъвки… За решаването на тези и други проблеми от областта на алгоритмичните задачи ще разкаже Николай Димитров, технически директор в Gameloft Sofia, по време на откриващото онлайн събитие на турнира.
За съдържанието и организацията на турнира се грижи екипът на MNKnowledge, IT колектив с фокус върху споделянето на знания и технологични консултации. Проектът се ражда като отговор на силния интерес, който събитията на алгоритмична тематика, генерират в общността.
И този път задачите са дело на проф. Красимир Манев, доц. Бойко Банчев, доц. Петър Армянов и Любомир Коев. За целите на турнира авторите избират ranking system-а, разработена от Петър Петров – ръководител на младежките национални отбори по роботика и информатика, както и член на националната комисия по информатика.
Екипът на Gameloft e подготвил награден фонд, който ще бъде разпределен в две категории – за студенти и за професионалисти. Най-добре представилите се ще имат възможността да се включат в следващото издание на турнира като автори.
Награждаването е предвидено за 19 ноември 2021 г.
Пълните детайли за събитието, както и форма за регистрация, могат да бъдат намерени на сайта на организаторите.
А сега ще Ви срещнем с проф. Красимир Манев, един от членовете в Екипа, отговорен за измислянето на задачи в турнира “The Challenge”:
Визитка: Проф. Манев е български математик и информатик в Нов български университет. Има дългогодишен опит в българския национален олимпийски отбор по информатика. Между 2014 и 2017 г. е президент на Международната олимпиада по информатика.
PC Mania: Какво представляват състезанията по програмиране?
Състезанията по програмиране възникват в края на 70-те години на миналия век. Отначало, в първите такива състезания, организирани под патронажа на ACM, се включват студенти от университетите в САЩ, след това от други англоезични държави, а днес в ACM ICPC участват студенти от практически всички университети по света с програми по информатика.
PC Mania: Как изглежда едно състезание по програмиране?
Състезанията по програмиране са направени по модела на олимпиадите по математика. Участниците в едно състезание трябва да решат с програми няколко задачи с алгоритмичен характер (да ги наречем “етюди”, за разлика от написването на комерсиален програмен продукт, който можем да сравним със “симфония”) за ограничено време. Програмата-решение се тества с непознати за състезателя тестови примери, при ограничено време и памет за изпълнение на един тест. Ако програмата намери правилно решение за ограниченото време и използвайки само разрешеното количество памет, тогава се присъждат определен брой точки за този тестов пример.
Класирането в индивидуалните турнири, каквото е състезанието организирано от MNKnowledge, се прави по сумата на събраните точки.
Проверката за правилност и бързина (т.н. grading) се извършва автоматично с предназначени за целта софтуерни системи.
PC Mania: Каква е връзката на състезанията по програмиране с професията “програмист”?
Да започнем с това, че у нас всеки, който има желание, може да започне да участва в състезания по програмиране в 4-5 клас след съответна подготовка. Така един активен състезател завършва средното си образование след 7-8 години активни занимания с програмиране, през което време придобива много знания и опит в един от сегментите на професионална подготовка на програмист – един-два езика за програмиране, една или две ОС, поне една библиотека стандартни програми, голямо количество алгоритми и ефективни структури от данни. Спокойно може да се каже, че знанията и опита в този сегмент на редовен участник в състезание чувствително надвишават това, което студентите в съответните програми на висшето образования знаят и могат в указания сегмент при дипломирането си.
Разбира се, състезанията по програмиране не дават подготовка в други сегменти на професионалното обучение на програмисти, които се придобиват в университетското образование. Но, извън всяко съмнение е, че в университетското си битие състезателите по програмиране, в общия случай, се справят много по-добре от своите състуденти. Особено пък, ако продължат състезателната си кариера и като студенти. Затова младежите с активна състезателна кариера са охотно приемани на работа в големите софтуерните компании.
От друга страна работата в една софтуерна компания, не рядко, не се отличава с голямо разнообразие от предизвикателства. Овладял текущо използваната в компанията технология и типичните разработвани приложения, професионалният програмист постепенно започва да губи способността си да структурира данни, различни от такива, с което ежедневно работи, по най-ефективния начин и да ги обработва с най-подходящите (бързи и гарантиращи точността на резултатите) алгоритми, различни от често използваните. Затова при среща със съответна задача ефективността на такъв програмист не е достатъчна. С цел да се поддържа висок тонуса на програмистите по отношение на алгоритмите и ефективните структури от данни са създадени и споменатите вече състезания за програмисти, отворени за участие и от непрофесионалисти.
PC Mania: Каква е целевата група на Вашето състезание?
Без да се сравняваме с Top Coder или Codeforces, целта ни е подобна – да “раздвижим” малко колегите от българските софтуерни компании, да ги предизвикаме да се състезават (чувството да победиш свои колеги в качества, които се оценяват високо, е неописуемо) и да развиват способностите си да се справят със сериозни алгоритмични проблеми, когато ги срещнат в ежедневната си работа (чувството че си справил по най-добрия начин с тежка алгоритмична задача, също е неописуемо).
PC Mania: Как един професионален програмист може да се подготви за такова състезание, ако никога не се е състезавал?
Разбира се, че трябва да се започне с книгите по алгоритми и ефективни структури данни, но това не е достатъчно. Най-важна за изграждането на състезателни умения е тренирането с решаване на много и различни състезателни задачи. Такива задачи може да се намерят в различни сайтове за тренировка, като UVa Online Judge (Университета на Валядоли), Timus (Уралски Федерален Университет ) и доста други. И не на последно място, да се включват в реални състезания, като споменатите по-горе и в нашето по-скромно състезание.
В помощ на подготовката за състезания проф. Манев в момента работи над превода на книгата на Steven Halim, Felix Halim и Suhendri Effendy “Competitive programming”. T.нар. “Библия на състезателите по програмиране” е готова за печат и скоро ще излезе на български език.