Loading...
MiBuena avatar MiBuena 7 Точки

[C#] Problem 10. FamilyTree***

Здравейте,

ето това е моето решение на задачата, което дава 80т. Гърми ми последният тест.

Със сигурност моето не е най-оптимално направено.

Ще се радвам, ако има някой, който да сподели по-добре направено решение, което дава и пълните 100т. :)

Тагове:
0
C# OOP Basics 08/08/2016 15:17:34
AntyfrizZz avatar AntyfrizZz 238 Точки

Здравей,

 

".FirstOrDefault", ".Any" и подобните на тях са доста приятни за използване, но не правят магии. За да се изпълнят - обхождат. Ако може да ги спестиш се опитвай да го правиш. Имаш много if-ове, в които за да се влезе обхождаш колекцията си, и като влезеш - пак я обхождаш. Дори и да не влезеш, пак е обходена от - до.

За съжаление в логиката ти има мааалка дупка. Представи си следния инпут:

24/8/2000
21/2/1950 - 11/11/1111
Gosho2 Goshev - Stamat Peshev
Stamat Peshev 21/2/1950
End

 

Четем 1ви ред. Добавяме 2 Person-а в листа със съответните дати.

Четем 2ри ред. Добавяме нови 2 Persona в листа със съответните имена.

Обаче вече имаме проблем. Реално 1вата дата от 1вия ред и 2рото име от 2рия ред принадлежат на един и същ човек.

 

Ето моето решение. Може би не е най - елегантното и си има своите минуси в логиката.

В началото дефинирам 2 листа. Единия държи People, за които е дадена пълна информация (инпут без "-"). Втория държи инпутите с тирета. Реално след като прочета целия инпут, разполагам с List<Person> с всички хора и List<string> с връзки между хората. Това е и минуса. Заделя се памет за колекция, която съдържа инпут стринговете, които имат "-" и после се обхожда тази колекция.

http://pastebin.com/iYBiEzps

 

Поздрави!

0
MiBuena avatar MiBuena 7 Точки

Здравей, 

благодаря много за коментара. Аз много се чудех как може да се избегне това да се добавят направят 2 записа реално на един и същи и човек. Това е начинът - с 2 колекции.

Много добра логика и решение! 
Благодаря отново за подробното мнение!

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