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

70/100 на задача "Snowwhite" от Associative arrays - More exercise ; C# Fundamentals

Бих се радвал, ако някой обясни защо задачата не хваща 100 точки. На мен ми изглежда чудесно работеща, но явно...

Judge: https://judge.softuni.bg/Contests/1302/Associative-Arrays-More-Exercise - Тук ще намерите и условието на задачата

Моето решение: https://pastebin.com/A2hdi8VT

 

0
Fundamentals Module
SvetoslavPetsev avatar SvetoslavPetsev 100 Точки
Best Answer

Привет,

Пипнах мако кода ти, в частта със записване в сиписъка и добавих break в цикъла. Джуджето с по-малка физика, само му я пренаписвам /защото останалото - име и шапка, е същото/ :

                for (int i = 0; i < dwarfs.Count; i++)
                {
                    if (dwarfs[i].Name == name)
                    {
                        isMatched = true;
                        if (dwarfs[i].HatColor != hatColor)
                        {
                            dwarfs.Add(dwarf);
                        }
                        else if (dwarfs[i].Physics < physics)
                        {
                            dwarfs[i].Physics = physics;
                        }
                        break;
                    }
                }

Като цяло е рисковано да въртиш цикъл по колекция и да променяш размера и вътре в цикъла.Става ако го break - неш при изпълнена задача. Ако обаче трябва да го извъртиш до край е необходимо да следиш индекса на елемента и дължината на колекцията / при триене -> да намалиш индекса, за да не прескочи елемент, a при добавяне да увеличиш дължината/.

Така вече дава 100/100:

https://pastebin.com/dp0uKDy0

Може да разгледаш и този вариант /с ламбда израз/, без цикъл:

                if (dwarfs.Any(x => x.Name == name))
                {
                    Dwarf findDwarf = dwarfs.Find(x => x.Name == name);
                    if (findDwarf.HatColor != hatColor)
                    {
                        dwarfs.Add(dwarf);
                    }
                    else if (findDwarf.Physics < physics)
                    {
                        findDwarf.Physics = physics;
                    }
                }
                else
                {
                    dwarfs.Add(dwarf);
                }

Поздрави!

0
15/04/2020 09:14:12
Rosen00 avatar Rosen00 12 Точки

Много благодаря за наистина полезното включване!

0