Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

peter1998 avatar peter1998 5 Точки

Колеги малко помощ с нестед речници c# fundamentals

Колеги немога да изпринтирам valueto на речника в речника тоест да сортирам по него да се изпринтирва ключа малко объркващо звучи , но прегледайте условието на задачата 
-02. Tagram  C# Advanced Exam - 14 October 2018 https://judge.softuni.bg/Contests/Practice/Index/1289#1 
-ето и моето решение което не е правилно в изпринтирването https://pastebin.com/c2x1R81Q

Тагове:
Filkolev avatar Filkolev 4482 Точки

Виж внимателно какво се иска в условието: "At that point you should print the users, ordered by total likes in desecending order, then ordered by the tags’ count in ascending order". Има два критерия, по които се сортират потребителите - единият е основен (общо лайкове), а другият (брой тагове за потребителя) се ползва, когато общите лайкове са еднакви за няколко потребителя. Ти ползваш само един критерий, който е по име. След това пък сортираш таговете по броя лайкове, което не се иска в задачата.

П.П. Условието не е изчерпателно, понеже не казва изрично как се подреждат таговете за всеки потребител. Може да се предположи, че е по ред на пристигане, но без да е уточнено, едно решение с вложен речник (без допълнително да се пази реда на таговете) не е гарантирано коректно.

 

0
peter1998 avatar peter1998 5 Точки

ахааа да , условието е малко игнорирано , добре имаш ли нещо против да пипнеш само сортировката която мисля ,че е по сложен linQ Или ти имаш идея нов речник и по него тотал лайкс , моля те пусни едно кодче по полезно ще ми е .
Ако можеш желая ти хубав ден !

0
Filkolev avatar Filkolev 4482 Точки

По принцип не обичам да давам готов код :) Предпочитам поредица от насоки, които в някакъв момент да помогнат човек сам да си изгради решението.

В случая решение с вложен речник работи. По твоя код корекциите са минимални (от гледна точка на променени редове). Това, което трябва, е да махнеш вътрешната сортировка, а външната да я коригираш спрямо условието с две последователни сортирания. Схемата е следната:

Tagram.OrderByDescending(x => /* сумата от всички лайкове за всички тагове */).ThenBy(x => /* брой тагове */)

Втората сортировка е по-лесна, трябва ти броя тагове, което лесно може да достъпиш. За ключа х имаме като стойност речник и на този речник искаме размера (т.е. брой KeyValuePair записи).

Първото сортиране е малко по-особено. Схемата е следната - за ключа х взимаме вложения речник с таговете и трябва да намерим сумата на лайковете за всички тагове. Има начин да вземеш като колекция директно стойностите на вложения речник, демек само броя лайкове и след това да ги сумираш.

Почовъркай още малко по кода и ако не се получи ще копирам корекцията, която направих по твоето решение.

0
peter1998 avatar peter1998 5 Точки

Колега 100 от 100 , реших проблема като почовърках малко , схемата беше да махна вътрешната сортировка и да оправя вътрешната като условието 

 

 foreach (var username in Tagram.OrderByDescending(x=>x.Value.Values.Sum()).ThenBy(x=>x.Value.Keys.Count))
        {
            Console.WriteLine(username.Key);

            foreach (var item in username.Value)
            {
                Console.WriteLine($"- {item.Key}: {item.Value}");
            }
        }

Поздрави и Благодаря

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