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

Advanced C# - Sets and Dictionaries - Problem 10. Population Counter

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

Ще може ли да дадете идея как накрая, ако има държави/градове с еднаква стойност, да се запази подредбата им според входа в речника? Ако всички се принтират в низходящ ред, пак се разместват тези с еднаква стойност.

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

 

Тагове:
0
C# Advanced
RoYaL avatar RoYaL SoftUni Team Trainer 6845 Точки

Ами това запазване трябва да е по дефиниция, ако използваш OrderBy(). Да не използваш някой друг метод за сортиране?

0
desibaltova avatar desibaltova 0 Точки

Използвам OrderByDescending(). Ето така изглежда накрая принтирането:

foreach (var outerPair in populationCounter.OrderByDescending(kvp=>kvp.Key))

{

int sum = 0;

foreach(var innerPair in outerPair.Value)

{

sum += innerPair.Value;

}

Console.WriteLine($"{outerPair.Key} (total population: {sum})");

foreach (var innerPair in outerPair.Value.OrderByDescending(i => i.Key))

{

Console.WriteLine($"=>{innerPair.Key}: {innerPair.Value}");

}

}

0
RoYaL avatar RoYaL SoftUni Team Trainer 6845 Точки

Чакай, май трябва да се запозная със задачата.

Да речем, че имаш "Bourgas" => 4, "Arbanasi" => 3, "Aysiktir" => 4

То тогава "Arbanasi" трябва да е пръв заради "A"-то, но "Bourgas" трябва да е втори, защото е влязал преди Aysiktir, въпреки че Aysiktir е преди Bourgas по ключ?

0
IskrenPenev avatar IskrenPenev 177 Точки

Сортират се първо по брой жители, а в случай че 2 града имат еднакъв брой жители, градовете се нареждат по ред на вкарване.

В случая:

Aysiktir - 4

Bourgas - 4

Arbanasi - 3

0
21/05/2016 23:32:37
TonyDimitrov avatar TonyDimitrov 27 Точки

Здравейт аз ги сортирах градовете както е по условие но не разбирам защо повечето тестове ми дават Runtime Error, някъде здраво ми гърми задачата, иначе ако не гърми ми минава теста. Това е линк: http://pastebin.com/3avJYhYb с кода, а ако някой е решил задачата и иска да сподели кода с мен тук за да го погледна ще съм благодарен.

0
Rextor92 avatar Rextor92 150 Точки

Здравей,

когато използваш .Sum върху числата, съхраняваш общия резултат в променлива int, която overflow-ва на 2,147,483,647. Замести Dictionary<string, Dictionary<string, int>> с  Dictionary<string, Dictionary<string, long>>

Поздрави,

ПС: Нулев тест №2 (Грешен отговор).. интересно, с един и същи вход judge ми казва, че изкарвам Italy преди Bulgaria в отговора, което при локален тест.. очевидно не е вярно.

 Локален тест

Тест в Judge

1
01/06/2016 15:11:05
TonyDimitrov avatar TonyDimitrov 27 Точки

Благодаря това е бил проблема, даде 100 точки. 

Иначе, не те разбрах какво искаш да покажеш със скриин шотовете, България трябва да е преди Италия защото те имат еднакво население и за това ги принтираме по реда на вкарване. Нарочно направих грешка да проверя 2-я тест.

ПС: Как се слага снимка тук?

0
Rextor92 avatar Rextor92 150 Точки

Показвам, че при идентичен вход, имам разлика в изхода между judge и локално тестване на програмата (локално изкарва България първа, както трябва да бъде, а в judge ми изкарва първо Италия)
Иначе, при писане на коментар имаш едно бутонче (пейзаж) - там въвеждаш url, размери, алтернативен текст и така ;)

0
ribcage avatar ribcage 1 Точки

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

При следния input:

Yambol|BUL|1
London|UK|3
Rome|ITA|4
Haskovo|BUL|2
Aston|UK|1
Vratza|BUL|1

при тестване на два различни кода се получават следните резултати:

 

   

 

Спрямо условието на задачата, какъв трябва да е верният отговор? И двата кода минават 100/100 в Judge, съответно няма тест, който да покрива такъв случай.

 

0
01/06/2018 03:01:23
TeodorStefanovPld avatar TeodorStefanovPld 1284 Точки

Сортират се първо по брой жители, а в случай че 2 града имат еднакъв брой жители, градовете се нареждат по ред на вкарване.и явно по име е descending

0