Софтуерно Инженерство
Loading...
+ Нов въпрос
IvayloIvanov2 avatar IvayloIvanov2 0 Точки

Проблем с 04. Roli The Coder от Programming Fundamentals Exam - Part 2 - 23 October 2016

Здравейте колеги, 

Мисля, че вървя в прав път с кода ми за тази задача, единствено огромен проблем ми създаде сортирането на Output-a по participants и еventName.

Заповядайте линк към задачата: https://judge.softuni.bg/Contests/Practice/Index/349#1

И това е моето решение: http://pastebin.com/1rD8xMiA

Проблемът е, че не спира да ми дава ексепшъна At least one object must implement IComparable. по какъвто и начин да опитам да сортирам речника...

Благодаря предварително!

Тагове:
0
Programming Fundamentals
Teodor92 avatar Teodor92 600 Точки
Best Answer

 

Опитваш се да сортираш по цяла колекция, което нямам да стане. Може да пренапишеш LINQ заявката на:

events = events.Select(x => new KeyValuePair<string, Dictionary<string, List<string>>>(x.Key,
                        x.Value.OrderByDescending(y => y.Value)
                            .ThenBy(y => y.Key)
                            .ToDictionary(y => x.Key, y => y.Value))).ToDictionary(x => x.Key, x => x.Value);

но изглежда доста кофти. Препоръката ми е, ако знаеш ООП, да използваш класове - ще е много по-красиво.

Още няколко note-a:
 

var entry = input.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries); // .ToArray()

Ненужен .ToArray()
 

var isLegit = eventName; // .ToCharArray()

Ненужен .ToCharArray()

LINQ Extension методите не променят колекцията върху която се използват а връщат нова. Т.е. вместо това:

events[ID][eventName].Distinct();

 ти трябва това:

events[ID][eventName] = events[ID][eventName].Distinct().ToList();


Поздрави,
Теодор

0
20/02/2017 22:15:25
Teodor92 avatar Teodor92 600 Точки

Едно допълнение за последната забележка - имаш още места с този проблем.

0