Loading...
Ivan_Pashkulev avatar Ivan_Pashkulev 20 Точки

Problem 10. FamilyTree***

Тази задача я започнах по обяд и изкарах цял ден с нея:))) Вече е 12ч и минават само нулевите тестове. Ужасна работа. Ще съм благодарен ако някой ми даде насоки. Най-вероятно има някакви изненади на входа, за които не подозирам  и регексите не го хващат. Доста завъртяна задача, истинско предизвикателство! Ето го и моето решение за 0 точки:))

https://github.com/pashkulev/JavaFundamentalsExams/blob/master/FamilyTree.java

P.S. Задачата вече дава 100 точки. Причината беше точно това, което предполагах - изненади при входните данни. Цялата останала логика си работеше перфектно. Оказа се че в имената може да има и цифри, което обаче по никакъв начин не е упоменато в условието. И така около 10 дни след като реших задачата, колегата Пламен Койнов ме светна за тази "малка" подробност с цифрите и просто трябваше да променя стандартния регекс за име - [A-Z][a-z]+   със този \\w+......... и познайте, от раз 100 точки. 

Благодаря на всички, които се включиха по темата и бих искал да призова организаторите на курса като ни дават задачи за домашни, да се постараят да описват по-добре условията и да ги тестват предварително, а за по-трудните задачи задължително да има constraints.

2
Java Advanced 29/06/2016 17:02:36
alexei.tcekov avatar alexei.tcekov 33 Точки

Здравей колега .. вместо да вкарваш инпута в два отделни речника/мап-ове защо не ги вкарваш в един .... когато получиш вход, който отговаря само за един човек "име име  дата" провери в наличните дали съдържа нещо т.е. дали вече имаш такова име или имаш такава дата ... и ъпдейтни стойностите ... понеже при мен с тази логика се получават и дубликати ... накрая си правя още една колекция, която е филтрирам ... взимам всеки човек по един път и когато срещне себе си отново, просто им обединявам ЛИСТ-овете .... и така изкарах 60т :) 

0
24/06/2016 08:34:08
supersane avatar supersane 234 Точки

Аз използвам 2 мапа. В единия държа от име към person, в другия от дата на раждане към person. След това като принтирам информация става по следния начин. Когато принтирам списъците за родители и деца, проверявам първо в единия мап дали дадения списък е със size > 0, ако е принтирам списъка, ако е празен проверявам в другия мап отново дали дадения списък е по-голям от 0 и отново същото. Това решение даде 100/100. Ако желаеш мога да ти дам и кода да го прегледаш.

0
alexei.tcekov avatar alexei.tcekov 33 Точки

Колега, а проверяваш ли дали винаги пърсон-а/човека има всичко т.е. и имена и дата ... за да го принтираш ? ... може ли да ти се случи да принтираш само датата :)

0
RoYaL avatar RoYaL Trainer 6849 Точки

Е какъв е шансът да остане само датата? Те все някога ще ти дадат име за тази дта и когато видиш, че когато са ти дали име и дата, името го няма в речника, но датата я има - намираш го този обект и му слагаш име. И това става още на реда, в който четеш "Pesho Peshev 12/12/2012". А преди това например си получил "12/12/2012 - 13/12/1999"

0
24/06/2016 11:53:31
alexei.tcekov avatar alexei.tcekov 33 Точки

точно затова питам ....дали има такъв шанс :) ...и дали е правил такава проверка ... 

0
Ivan_Pashkulev avatar Ivan_Pashkulev 20 Точки

Дадохте ми доста съвети от общ характер, ама май никой не е погледнал кода ми. Да знам че са близо 300 реда и може би е малко досадно да се преглежда такова нещо и точно за това се надявам някой по - опитен да го прегледа набързо и да ми даде насоки. Също така споделете вашите решения за да се уча и от вас. Може би сте се сетили за много неща които аз съм пропуснал или пък сте намерили начин за доста по кратко решение.......споделяйте моля

0
24/06/2016 15:16:47
fargo avatar fargo 18 Точки

Ето моето решение, надявам се да ти е полезно, макар и не на джава :)

http://pastebin.com/s5y7Aaxa

-1
a_dimitrov avatar a_dimitrov 20 Точки

Ще ми е интересно да видя кода :-) и аз се преборих за 60 т.

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