Loading...
IvMironov avatar IvMironov 35 Точки

Задача Roli - The Coder oт изпита Programming Fundamentals /23.10.2016г.

Здравейте,

Опитвам да реша задачата на 100%, но я докарвам до 90т. Гърми ми на 9-ти тест и не мога да разбера къде е проблема. Бихте ли ударили едно рамо при така написания код http://pastebin.com/kqq4VDXj. Благодаря!

Тагове:
1
Fundamentals Module 24/10/2016 21:15:02
e_rogleva avatar e_rogleva 38 Точки
Best Answer

Здравей,

доколкото разбрах, проблемът в задачата идва, когато се създава нов event, и по-специално от това, че и тук трябва да се следи дали присъстващите в списъка не се повтарят. Когато добавих тази проверка, кодът взе 100 точки :)

  if (!currentEvent.partisipant.Contains(inputElements[i]))
         {
             currentEvent.partisipant.Add(inputElements[i]);
         }

Поздрави! 

4
cheresharov avatar cheresharov 42 Точки

Само дето в условието никъде не се споменава за повтаряне на присъстващите!
"If she is given ID that already exists she needs to check if the eventName is the same. If it is, she adds the participants from the request to the other registered participants"

0
puffed avatar puffed 289 Точки

Здравей, 

Моят метод (долу) за добавяне на event и участници винаги изчиства повтарящите се участници в рамките на един event и пак взимам 90 точки. Ето ми целия код, ако някой може да намери проблема.

static void AddEventToList(Dictionary<int, Event> eventsList, Event currentEvent)
    {
        int eventId = currentEvent.ID;
        string eventName = currentEvent.Name;
        if (!eventsList.ContainsKey(eventId))
        {
            eventsList.Add(eventId, currentEvent);
        }
        else
        {
            if (eventsList[eventId].Name.Equals(eventName))
            {
                eventsList[eventId].Participants.AddRange(currentEvent.Participants);
                eventsList[eventId].Participants = eventsList[eventId].Participants.Distinct().ToList();
            }
            else
            {
                return;
            }
        }
    }

0
e_rogleva avatar e_rogleva 38 Точки

Пише го тук: 

Roli is the organizer of those events, so she needs to keep track of the unique participants for each event

1
24/10/2016 23:48:39
cheresharov avatar cheresharov 42 Точки

Съгласих се :D

Въпреки че това съм го направил, на мен също деветият тест ми пропада.

0
IvMironov avatar IvMironov 35 Точки

Благодаря ти!

1
e_rogleva avatar e_rogleva 38 Точки

Здравей :))

Мисля, че при теб проблемът е същият: Distict() изчиства повтарящите се участници, но в твоя код това се случва чак след като един event e създаден, появява се за втори път и му даваш AddRange с новите участници, т.е. ако имаш  например такъв вход:
1 #Beers @roli @trophon @alice @alice и event-ът Beers не среща отново, програмата ще върне два пъти @alice, защото въобще не стига до Distinct. Ако добавиш participants = participants.Distinct().ToList(); като създаваш първоначално списъка, judge дава 100 точки :D 

6
25/10/2016 02:09:30
puffed avatar puffed 289 Точки

Боже, нямаше да се сетя, все си мислех, че повторенията ще дойдат едва при второ добавяне... Много благодаря!! IvMironov, ако може да дадеш на e_rogleva един Best Answer, аз щях, но не съм задала аз въпроса.. а ако бях направила отделен пост, щяхме да се повторим. 

2
cheresharov avatar cheresharov 42 Точки

Въобще не предполагах, че в едно и също събитие може да има повтарящи се участници... 

0
boykostoyanoff avatar boykostoyanoff 15 Точки

може ли и тук малко помощ с тест 9
 

http://pastebin.com/PqkSXN9L

0
e_rogleva avatar e_rogleva 38 Точки

Здравей :)) 

На 41-ви ред от твоя код промених if (events.Any(e => e.ID.Contains(currentEvent.ID))) на (events.Any(e => e.ID.Equals(currentEvent.ID))), така задачата не гърми 

 

0
boykostoyanoff avatar boykostoyanoff 15 Точки

ох , то и аз това съм имал впредвид ама те ;-) златна си. мерси

1
Wencii avatar Wencii 90 Точки

http://pastebin.com/ktawzf1x - ето моят код. На мен ми гърми 10 тест и примера, който сте дали за Beers работи, но нещо друго се прецаква.. Някакви идеи?

0
cheresharov avatar cheresharov 42 Точки

Каква ти е идеята с това

  else if (!(events.Any(e => e.Name == eventName || e.ID == eventID)))

 

0
Wencii avatar Wencii 90 Точки

За да създам ново събитие нали не трябва да има друго със същото ИД и име?

0
cheresharov avatar cheresharov 42 Точки

Не трябвя да има друго събитие със същото ID. За името мисля никъде не се споменаваше в условието.

0
boykostoyanoff avatar boykostoyanoff 15 Точки

Да само ID-то е уникално.She saves the events by 'ID', which is the unique code for each event. For each ID, she keeps the event name and the participants for it.Две ID-та могат да имат еднакви имена и еднакви участници

0
Wencii avatar Wencii 90 Точки

     else if (!(events.Any(e => e.ID == eventID))) - ето сега в else-if проверявам, дали няма такъв ИД и ако няма добавям събитието, но пак е 90/100

0
boykostoyanoff avatar boykostoyanoff 15 Точки

по принцип имаш грешки като например при вход:

1 #Beers @roli @trophon @alice

2 Game#DevMeetup @sino @valyo

3 #Karaoke @nakov @royal @ROYAL @ivo

Time for Code

 

ти признава вторият евент а той не е правилен . ред 25 if (!eventName.Contains("#")) , трябва  да е if (!eventName.StartsWith("#")), но не те лови за това ;-), по принцип и евнет ID не е казано че е число, може да е и стринг, но май и това не е проблема. 

проблема е в регекса. не лови имена на участници с @ в името. пробвай с line 43 - MatchCollection participants = Regex.Matches(inputLine, @"@\S+");

2
Wencii avatar Wencii 90 Точки

М странно да... В регекса е била грешката. Благодаря ти!

0
KonstantinLupov avatar KonstantinLupov 34 Точки

Аз все още имам проблем с тази задача. Не може ли всички повтарящи участници в събитието да се изчистят като накрая в foreach се добави .Distinct() на листа от участници?

0
yonovd avatar yonovd 0 Точки

Здравейте, 
Може ли малко помощ ?  - https://pastebin.com/1DNn2mZb

Judge ми дава  40/100. 

0
cheresharov avatar cheresharov 42 Точки

В условието на задачата имаше, че ID-то на събитието трябва да е уникално. Т.е. не може да има две събития с едно и също ID. Какво трябва да се прави при такъв случай, не помня. Мисля, че новото събитие със съществуващо ID трябваше да се пренебрегне. Никъде в кода ти не видях да правиш тази проверка.

0
Jordan3900 avatar Jordan3900 8 Точки

Здравейте колеги, докарах задачата до 90 точки. Гърми ми 10 тест.  Може ли малко помощ, за да си открия грешката? Благодаря предварително! 
Това ми е кода: https://pastebin.com/7UeG6XB5

0
puffed avatar puffed 289 Точки

За уникалните участници е казано в началото на втория параграф: Roli is the organizer of those events, so she needs to keep track of the unique participants for each event.

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