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

[exam] Programming Fundamentals - 3.Football Standings - Разлика в изхода между Judge и моята конзола?

Здравейте,

Анализирам си грешките от изпита и попаднах на нещо странно в нулевия тест на задача 3.Football Standings и не знам дали аз нещо не полудявам, но го сравних 3 пъти. Изхода ми в джъджа излежда различно от това, което ми излиза на конзолата на компютъра ми за един и същи код за 1-вия нулев тест. Разликата се изразява в размяната на местата на  4. DENMARK 1 и 5. ITALY 1.

 

снимка от judge

 

А това е кода от това решение (№1197827) на задачата: код.

 

Моля да го погледнете. Ако ми кажете и къде ми е грешката по принцип в кода ще съм благодарен :)

0
Fundamentals Module 12/06/2016 20:43:44
mishomihaylov avatar mishomihaylov 67 Точки

Пробвали да ползваш SortedDictionary ? Според мен проблема е в това, че като са с еднакви score-ове трябва да са подредени лексикографски. Тоест, като използваш SortedDictionary, те се подреждат по имена докато ги вкарваш и после си ги сортираш и по точки направо в foreach-а по следния начин ->
teamsByPoints.OrderByDescending(x => x.Value). Пробвай и кажи дали ще се оправи със SortedDictionary.

0
12/06/2016 21:13:44
xanderbg avatar xanderbg 53 Точки

На изпита пробвах със SortedDictionary и даде 10 точки по-малко :D. Тоя сорт сигурно ще сработи на пръв поглед, ама няма как да го тествам в джъджа. Пробвах няколко неща и изхода ми изглежда като в заданието. Джъджа обаче е на друго мнение.

0
Filkolev avatar Filkolev 4501 Точки

Доста често се получава това, не е съвсем ясно каква е в крайна сметка причината в Judge да изкарва различни резултати.

Ясно е, че е заради сортирането. Ползваш нестабилно сортиране, а ти трябва стабилно изглежда (OrderBy и другите методи от LINQ са такива).

Защо обаче един и същи метод (нестабилния Sort()) връща различни резултати на машините на студентите, от една страна, и в Judge, от друга, е въпрос с повишена трудност.

2
ralitsa_d avatar ralitsa_d 171 Точки

Някъде в условието се споменаваше, че ако има два отбора с еднакъв брой точки или еднакъв брой отбелязани голове, те трябва да са сортирани лексикографски. Т.е.имаш сортиране първо по стойност, а след това по име на отбора. Знам, че звучи логично в такъв случай да работи със SortedDictionary, но аз използвах несортиран речник с двете сортирания в края на програмата и получих 100/100.

Ето и кода.

1
13/06/2016 13:02:21