Loading...
Danisimo avatar Danisimo 1 Точки

Programming Fundamentals Extended Exam - 20 August 2017 Part II - 04. Trainlands

Здравейте,

Решавам примерни изпити и забих на 80/100 на тази задача от няколко часа. Ето го кода: https://pastebin.com/pUiet3kQ

Прегледах няколко решения и ми се струват сходни. Основната разлика, която открих е, че поради леко неразбиране на условието от моя страна и поради желание да използвам AddRage() метода, който не се поддържа от Dictionary си направих речник с вложен лист. Единственият проблем, до който това може да доведе е AddRange() да ми вкара повтарящи се вагони, но това е подсигурено от условието, което казва че вагоните винаги ще бъдат уникални в контекста на влака си. Единственото, което ми хрумва е при {trainName} -> {otherTrain} командата да се наливат неуникални елементи. Това обаче ми се струва, че не е така. Решенията с вложен речник не правят проверка за уникалност на ключа на вложения речник, а джъдж им дава 100/100.

Тагове:
0
Programming Fundamentals 14/12/2017 19:37:33
k.sevov avatar k.sevov 1077 Точки
Best Answer

Проблемът идва от 46-ти и 62-ри ред, където подаваш самия лист, а не негово копие (тъй като листовете са референтни типове). В резултат на това и двете ентрита в речника сочат към един и същи лист и операциите върху единия се отразяват и върху другия. Поправен вариант - https://pastebin.com/tZQxJd6u. Би трябвало да може и по-елегантно да стане ако подадем копие на списъка само, но това го написах, за да разбера дали тук е проблемът.

1
Danisimo avatar Danisimo 1 Точки

Благодаря много! Никога нямаше да се сетя. Аз първоначално променях листовете с = вместо с clear и add. Не знам защо, но реших, че add създава нова инстанция на KeyValuePair и съм решил този проблем...
Ще е хубаво да спра да си правя живота сложен всеки път... Може да си загубих 3 часа да го дебъгвам, но си спестих писането на два foreach-a. Totally worth it.

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