[Programming Fundamentals] Dictionaries Exercise - 10.Сръбско Unleashed
Здравейте колеги,
тази задача малко ме поизмъчи. Джъджа ми дава 70/100. Първо ми гърмяха 3те проверки(4та, 5та и 7ма), после вкарах long.TryParse като проверка и вместо да ми гърмят почна да ми дава грешен резултат. Прочетох си още няколко пъти условието на задачата и видях, че не бях вкарал проверка за това, че певеца/певацицата и мястото на концерта могат да бъдат с от една до три думи - съответно сложих и такива проверки. Но пак ми дава 70 точки. Ще съм много благодарен ако някои може да съдейства, като ми е достатъчно само примерен вход, при който се получава грешката.
Ето кода: https://pastebin.com/y1Qxx8Wn
EDIT: видях, че правя една и съща проверка 2 пъти като проверявам мястото и билетите да са >= 3, но това не оказва влияние като цяло.
Мерси много за отговора, разгледах ти кода и на пръв поглед всичко ми изглеждаше почти същото като проверки, така тук да акцентирам на ПОЧТИ :D.
- Няколко часа отделих на определяне на "venue", като пробвах всякакви комбинации в твоя и моя код :) Като "venue" - може да има неща от сорта на "Belgrade @12" , "Belgr@de 12" и тн. (при вход "ceca @Belgrade @12 11 11" , "ceca @Belgr@de 12 11 11") - това е валиден изход или поне не проверяват за него. В твоя код от ред 79 до 91 правиш проверка за това, но тя никога не се изпълнява, така и не разбрах защо - пробвах и през дебъгера.
- Моята фундаментална грешка e, че първо проверявам дали има някъде '@' във входа и сплитвам по него и след това сплитвам по "space". А то трябва да се провери дали имам елемент, който да започва с '@' при първи сплит по "space".
- Другото е, че изпълнителя също може да започва с '@', което трябва да се включи в името и да търси "venue" по '@' на следващ елемент.
- Вход като "ceca @@Belgrade 12 12" - програмата връща изход "venue == Belgrade", което за мен е грешен вход и не трябва да се зачита като валиден изход или поне да връща изход "venue == @Belgrade". Джъда май нямат таква проверка.
След (буквално) 2 дни блъскане на глава, бях решил да правя проверки за какво ли не, може и да има нещо излишно. Просто, когато мина бях толкова доволен, не съм гледал после за оптимизиране, което всъщност си е моя грешка.
Ето тук можеш да видиш едно доооооста по-кратко решение с регекс - нещо което се учи към края на Fundamentals курса
Мда, регекс само съм го чувал. Но пробвах кода с различни входове като - "@lepa @@Belgrade 12 12" , "@le@pa @Belgrade 12 12", "lepa @Bel @grade 12 12" и при 2та варианта се на решаване на задачата се получават доста странни и различни работи :D