04.Lora's Fan Club 25 April 2018 Extended
Колеги, някой може ли да ми обясни защо два теста ми гърмят с ArgumentException: At least one object must implement IComparable при сортирането с LINQ.
Колеги, някой може ли да ми обясни защо два теста ми гърмят с ArgumentException: At least one object must implement IComparable при сортирането с LINQ.
Да, всъщност си разбрах грешката. Вместо да сортирам по стойност на речника ThenBy(a => a.TraitValue.Keys), трябва да сортирам по име ThenBy(a => a.Name)
За да не правя нова тема, ще попитам тук. Същата задача ми дава 80/100, гърмят ми седмия и последния тест. Ровех, тестове правих, но не мога да намеря грешката си. Някой ако има време, ако може да погледне решението ми. Благодаря.
Първата грешка (7-тест), е че проверяваш дали if (fans[name][trait] < value) преди да си преизчислил с метода новото value, замени го с if (fans[name][trait] < AddValue(trait, value)).
Втората грешка (последния тест), е понеже е казано " If this boy already exists in our database all positive traits added so far are erased! ", а ти с .Clear() триеш всички traits, не само положителните. Може би има кратка за ламбда за целите, но не можах да я съчиня, затова с един форийч намирам положителните и после ги трия.
Ето го с малките корекции:
https://pastebin.com/Nxk1uKLY
Поздравления за изключително четливото и подредено решение.
P.S. ламбдата с LINQ се получи, спестява 5-6 реда код: Вместо fans[name].Clear()
трябва: fans[name] = fans[name].Where(x => fans[name][x.Key] <= 0).ToDictionary(x => x.Key, x => x.Value);
Еее, за това че трябва само да се премахнат позитивните нямаше шанс да го намеря. Благодаря ти много. За if (fans[name][trait] < AddValue(trait, value)). бях го променил по този начин, но пак даваше 80/100, вероятно защото пак е имало да премахна само позитивните, и реших да го върна обратно поради някаква причина, даже не ясна за мен защо... Пак Благодаря за доброто и подробно обяснение. Златен си!
Може ли да се даде решение без обекти?