Конкурсът по програмиране развива алгоритмичното мислене на състезателите и техните способности да разработват решения на практически проблеми от разработката на софтуер, да построяват технологични решения базирани на съвременни софтуерни платформи, езици за програмиране и технологии, да работят в екип, да си разделят задачите по проекта и да постигат съвместно по-добри резултати. Той обединява уменията на добрите състезатели по алгоритми с уменията на добрите софтуерни инженери, които разработват приложен софтуер и в крайна сметка подготвя състезателите за живота и за реална работа в софтуерната индустрия, където се изискват проучване, дизайн, разработка, тестване, внедряване и поддръжка на цялостни продукти и софтуерни решения. Това прави конкурса много ценен за младите хора, които искат да станат кадърни софтуерни инженери, и дава възможност за развитие на практически умения, които един ден състезателите ще използват в професията си.
Сезон 2012/2013
През този сезон конкурсът ще навлезе в 18-тата поредна година от съществуването си, а за втора поредна година състезателите ще се борят както с алгоритмични проблеми, така и с приложната част на софтуерното инженерство. В състезанието може да участват както индивидуални участници, така и отбори до двама души.
В различните кръгове състезателите ще работят в много от сферите в софтуерното инженерство, започвайки от по-лесни за решаване проблеми и придвижвайки се към все по-комплексни приложения, решаващи реални проблеми и задачи от софтуерната индустрия.
Темите на задачите за съответните кръгове ще гравитират около съответния учебния материал, изучаван в Софтуерната Академия на Телерик.
Междинни кръгове
Състезанието се състои от няколко междинни кръга и един финален кръг. Междинните кръгове се провеждат приблизително веднъж на месец и се състоят в следния формат:
- Журито публикува условие на задача за съответния кръг на главната страница на конкурса, както и в секция “Задачи“
- Участниците имат 20-дневен срок (или повече, ако в условието на задачата е споменат по-дълъг срок) да предадат решение. Решенията се предават чрез секцията “Качи решение” (освен ако условието на задачата не гласи друго)
- Журито оценява алгоритмичните и приложните части на предадените решения
- Журито публикува резултатите от междинните кръгове на главната страница на конкурса
- Журито обновява генералното класиране в секция “Класиране“
Резултатът за определен междинен кръг се определя от сбора на резултатите за приложната и алгоритмичната част на отбора за съответния кръг
Генералното класиране се формира като за всеки отбор се съберат резултатите, които отборът има на кръговете, в които е участвал. Съответно, в колкото повече кръгове участва един отбор, толкова по-голям шанс има да излезе напред в генералното класиране.
Финален кръг
На финалния кръг на състезанието се класират първите 30 отбора в генералното класиране (журито си запазва правото да промени тази бройка, спрямо показаните резултати от състезателите, като следва своевременно да съобщи за такава промяна).
Финалния кръг се провежда в два състезателни дни, присъствено (за отбори от двама състезатели е нужно присъствието на поне единия).
- Първия ден се дава условието на задача с приложна и алгоритмична част (както на междинните кръгове). Всеки отбор решава задачата на място и трябва да предаде алгоритмичната и приложната част на решението си в рамките на 12 часа (този период може да бъде удължен по преценка на журито).
- На втория ден всеки отбор представя приложната част на решението си пред журито и останалите участници в рамките на 10 минути, като журито и останалите участници имат право да задават въпроси. Журито поставя оценки на приложната част по време на представянето. Идеята на представянето е всеки отбор да може възможно най-добре и пълно да представи решението си на приложната част, с цел да получи по-висока оценка. Журито заседава и решава крайните оценки на приложната част. Алгоритмичната част се оценява автоматизирано. Финалния резултат на всеки отбор се определя от сбора на резултата му от приложната и алгоритмичната част на финалния кръг
- След представянията на втория ден се провежда награждаване и закриване на състезанието
Финалния кръг ще се проведе в София, като датите и мястото ще бъдат предварително обявени.
Регламент
Подробно описание на регламента за сезон 2012/2013 може да намерите в секция “Регламент“.
Награди
На финалния кръг на състезанието ще бъдат раздадени големите награди (лаптопи, таблети, монитори…) на най-добре представилите се. Допълнително, организаторите си запазват правото да дават награди на междинните кръгове, като тези награди могат да варират (тениски, сертификати, компютърно оборудване и прочие).
Naki
November 9, 2012
Кога започва конкурсът?
nakov
November 19, 2012
Конкурсът започна на 16 ноември 2012 г.
Виктор
November 17, 2012
“Задачите позволяват използването на различни езици за програмиране и технологии (например C#, PHP, C, C++, Delphi, Python, WPF, Windows Forms, Java, Swing, Flash, JavaScript, HTML5). Всички предадени решения ще бъдат тествани в Windows 7 среда съгласно общите условия на конкурса.” – От това да разбираме ли, че може да ползваме и Pascal? (:
nakov
November 19, 2012
Може да се ползва Паскал, стига да работи под Windows 7. Най-добре Delphi.
Александър Геров
November 24, 2012
В случай, че програмата завърши с по-малко ходове от зададените, кое е по-правилно: да спре или да започне да печата празни ходове (примерно put 0 0, take 0 0 и т.н.) и така до достигане на първоначално зададеният брой ходове?
Смятам, че би трябвало да спре, по-горе обаче сте писали “На изхода трябва да бъдат отпечатани точно C на брой реда”
admin
November 26, 2012
Малко вероятно е да има такива тестови примери, но ако има – най-добре е да се печатат празни ходове, от гледна точка на проверката (като просто спирането на програмата също няма да се счита за грешно поведение).
Zdravko
December 16, 2012
Т.е. ако дъската ни е само с нули и имаме само 1 ход, няма да е грешно да пишем:
take 0 0 ?
admin
December 16, 2012
Да, вземането от поле с 0 е валиден ход, който не променя дъската.
Виктор
November 25, 2012
“На втория ред стои числото N – дължината на страната на правоъгълното игрално поле (т.е. броя плочки във всеки ред и всяка колонка в игралното поле).”
Щом N е дължината на страната, явно всички страни са еднакви, следователно полето не трябва ли да бъде квадратно, а не правоъгълно? (:
admin
November 26, 2012
Квадратът е вид правоъгълник :), но иначе твоето предложение конкретизира условието, което е хубаво нещо. Направихме корекцията.
Stiliqn
December 10, 2012
Имам едно въпросче: трябва ли да спрем конзолата след като изведем ходовете?
admin
December 10, 2012
По условие алгоритъмът трябва да приключва работа за 3 секунди, т.е. на третата секунда не трябва да се изпълнява който и да било ред код от алгоритъма – програмата трябва да е “спряла”, след като е извела всички ходове. В противен случай алгоритъмът ще бъде спрян автоматично и ще бъдат признати ходовете отпечатани на конзолата до 3-тата секунда.
Виктор
December 14, 2012
Тоест, например ако имаме Console.ReadLine() накрая на програмата, трябва да го махнем, правилно ли съм разбрал?
admin
December 14, 2012
Да, трябва като копираш примерните входни данни, програмата ти да изпечата съответния изход и да приключи работа за 3 секунди, без да чака допълнителни натискания на клавиши или нещо подобно
antont
December 17, 2012
Тъй като не разбрах напълно отговорът Ви, аз съм сложил
Console.ReadLine()
на програмата ми. Надявам се да не е толкова голям проблем. Ще ми се анулират ли точките на алгоритмичната част? Грешката не е чак толкова голяма.antont [email protected] 4007432 са ми данните.
admin
December 17, 2012
Принципно е проблем, тъй като когато има
Console.ReadLine накрая, алгоритъмът не приключва работата си, а чака за още вход, при което системата ще прецени, че алгоритъмът просто е продължил да работи и не е завършил в ограничението от 3 секунди. Не бива да поставяш “празен” Console.ReadLine накрая на програмата – представи си като пишеш коментар тук да трябва да натискаш Enter, след като си кликнал “Коментиране”, за да може да си публикуваш коментара.
За тази задача журито ще направи всичко възможно да отчете алгоритмичната част дори за такива случаи – но това затруднява и забавя проверката, и сигурно ще бъдат наложени наказателни точки.
Деян
December 17, 2012
Здравейте!
Няколко минути след срока за вчерашното предаване на решенията си открих една глупава механична грешка (една объркана дума в един от редовете на кода на UI проекта, на едно единствено място!). 🙂 По принцип UI проекта си работи, отпечатвайки правилно всички ходове в HTML-и, но в някои случаи (в зависимост от въведените размери на полето и брой ходове) или забравя да сложи линка към следващия ход от един момент нататък, или слага излишен линк към следващ ход от един момент нататък.
Самата грешка е в:
TrollGame-UI-Project –> FileManipulate.cs –> ред номер 207 –> вместо StartGame.TruePlaygroundSize трябва да пише StartGame.TotalTurnNumber
Много се чудих дали да пиша тук за този проблем, но се надявам ако е възможно при оценяването да се вземе предвид, че става въпрос за чисто механична и еднократна грешка (не е оплескан целият код тотално 🙂 ) и предвид грешката да не се отнема пълния брой точки на UI частта ами ако се прецени да получа някоя друга точица там :). Както предполагам може да се предположи от вида на грешката, програмата работи абсолютно коректно за случаите когато размерът на полето е равен на броя на ходовете. Когато ходовете са по-малко от размера на полето, програмата работи почти коректно 🙂 предвид, че се преглеждат успешно всички ходове, само на последния е сложен един излишен линк за следващ ход, който съответно не работи. При случая, при който ходовете са повече от размера на полето, програмата “забравя” да сложи следващ линк от ход номер равен на размер_на_полето към ход номер размер_на_полето + 1. 🙂
Благодаря за отделеното внимание!
Идентификационните ми данни в системата на Телерик са: d_p_y 9000613
admin
December 17, 2012
Здравей, благодарим за разяснението, със сигурност ще ти бъдат отчетени точки за приложната част. Това, което си описал като проблем, не изглежда като голям дефект в приложната част и едва ли ще бъдат отнети много точки – но естествено все нещо ще бъде отнето.
Димитър Дилянов Иванов
December 17, 2012
Здравейте, и аз забелязах, че като съм предал вчера съм забравил последното парче код да го сложа в while цикъл и вади 3 хода по-малко от въведените, има ли някакъв начин да го оправим, разбира се ако не сте проверили вече задачките 🙂