Loading...
mihayloff14 avatar mihayloff14 824 Точки

Competition - Facebook Hacker Cup

Здравейте,

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

https://www.facebook.com/hackercup?fref=ts

Казва се Facebook Hacker Cup и за определено време, трябва да се решат дадени задачи като се използва програмен език по ваш избор, стига да има безплатен компилатор (В тази връзка, не съм сигурен дали може да се използва C# ).

Дори може да cheat-ваме малко като си помагаме взаимно и задаваме въпроси свързани със задачите. В тази връзка аз бих искал да попитам, ако някой е по-запознат, може ли да се използва C# за решаването на тези задачи, тъй като лично за мен, той ми е най-удобен. В краен случай ще използвам PHP ама не ми се ще много много.  

Тагове:
6
Events 12/01/2015 00:22:29
mihayloff14 avatar mihayloff14 824 Точки

Нека и аз споделя моя опит:

Първа задача ми се стори сравнително лесна и успях да я направя, но навярно няма да бъде зачетена за вярна, защото едва когато я предадох разбрах, че се изисква да взема input от файл и съответно да връща output в друг, а пък аз го направих по традиционния начин с конзолното четене и писане :D.

Втора задача, вече напълно наясно с услоеието, мисля че се справих с нея съдейки по вения output от примерните входни данни, но уви след толкова много изпити в СофтУни съм наясно, че е възможно да имам верни първоначални входни данни и да взема 10/100 :D. Начина, по който подходих с нея беше да ползвам стандартна рекурсия за генериране на всички уникални комбинации, като идеята бе, че имам матрица с брой редове == броя на случаите, а на всеки ред съдържа съответните данни за реда (разни протеини и каквото там беше) и използвайки рекурсия, генерирам всички възможни комбинации и на дъното на рекурсията проверявам дали комбинацията match-ва условието.

Трета задача определено бе най-интересна. Реших да подходя с нея използвайки един стандартен алгоритъм за обхождане на лабиринт - Breadth-First Search. Поиграх си и имплементирах различните ситуации при засичане с оръдие и въртенето на оръдия на всеки ред и всичко изглеждаше ОК без случаите, в които за да избегне оръдието трябва да използва вече минат маршрут (алгоритъма маркира обходения маршрут за да не се получи StackOverflow). Затова в крайна сметка от примерните входни данни всички случаи без първия (точно такава ситуация) ми бяха коректни и реших все пак да събмитна за някоя друга точка и се изненадах, когато в редовния input имаше лабиринти от по 60x60++ реда няколко пъти и следователно, програмата не успя да изкара резултат за 6 минути и не успях да събмитна нищо. Даже я оставих да върви от любопитство доколко ще го докара, но след около 20 минути ми писна и я спрях :D. Тогава осъзнах, че може би трябваше да използвам алгоритъм, който обхожда в дълбочина, а не по широчина. Освен това, така и не успях да разбера как мога да се справя с проблема, описан по-горе.

Ето и решения на задачите:

http://pastebin.com/94rDDX3s - Cooking The Books

http://pastebin.com/sWdy5EfU - New Year Resolution

http://pastebin.com/vSS3CVKU - Laser Maze (Сложил съм класа Turret, който създадох, в един файл с основния клас, защото можем да предадем само един source file) 

1
11/01/2015 19:12:02
AleksandurSeferinkin avatar AleksandurSeferinkin 333 Точки

Аз затуй не маркирах обходения маршрут, ползвах съвсем различни и объркани методи. В примерния тест всичко беше ОК, а в задължителния получих StackOverflow.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.