Професионална програма
Loading...
+ Нов въпрос
NiKoev avatar NiKoev 1 Точки

04. Snowwhite, Retake Exam - 05 January 2018

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

Опитахте се реша 4-та задача Snowwhite от Programming Fundamentals Retake Exam - 05 January изпита. Искам да я реша с Dictionary, тъй като не сханах много класовете. Докарах я до 60/100. Мисля, че съм изпълнил всички условия и сортировката би трябвало да работи. Не мога да намеря проблема. Благодаря предварително! Ето кода: https://pastebin.com/fqr45mwk

0
Fundamentals Module
k.sevov avatar k.sevov 1071 Точки

Както си го написал в момента сортираш първо по цветовете, т.е. ще ти изкара първо всички джуджета с червено (примерно защото това с най-голям physics e червено), а то се иска да са ти подредени по physics като първи критерий. Примерно ако имаш с най-голям physics червено, втори жълт, трети червен, твоят код ще изпечата първо двата червени. Общо взето задачата е такава, че не може да се направи директно сортировка като ги държиш в такава структура - повече по въпроса сме писали в тази тема.

0
NikolayNeykov92 avatar NikolayNeykov92 617 Точки

Здравей,

При твоя подход проблема е че ключ на речника са цветовете на шапките на джуджетата и при сортировка

сортираш цветовете на шапките, а не самите джуджета.

За да се получи с вложени речници, трябва първо да сортираш речника по броя на шапките, да го презапишеш в

Dictionary<string, int> и за ключ трябва да слагаш ключа на първия речник + ключа на вложения речник (така както ще се принтират) и после да сортираш презаписания речник по physics или иначе казано трябва да сортираш наобратно спрямо условието на задачата.

Ето как изглежда сортировката:

 

            Dictionary<string, int> sortedDwarfs = new Dictionary<string, int>();
            foreach (var hatColor in dwarfs.OrderByDescending(x=>x.Value.Count()))
            {
                foreach (var dwarf in hatColor.Value)
                {
                    sortedDwarfs.Add($"({hatColor.Key}) {dwarf.Key} <-> ", dwarf.Value);
                }
            }
            foreach (var dwarf in sortedDwarfs.OrderByDescending(x=>x.Value))
            {
                Console.WriteLine($"{dwarf.Key}{dwarf.Value}");
            }

2
28/06/2018 13:07:35
NiKoev avatar NiKoev 1 Точки

Благодаря Много!

0
Elena123456 avatar Elena123456 224 Точки

И аз благодаря много за споделеното решение!

Поздрави!

0