Професионална програма
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
kaloyannikov avatar kaloyannikov 531 Точки

няма смисъл от regex . 

За birthday проверяваш дали string-a contain-ва "/" , ако да е - birthday , aко не - име.

0
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 6847 Точки

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

0
24/06/2016 11:53:31