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 мапа. В единия държа от име към person, в другия от дата на раждане към person. След това като принтирам информация става по следния начин. Когато принтирам списъците за родители и деца, проверявам първо в единия мап дали дадения списък е със size > 0, ако е принтирам списъка, ако е празен проверявам в другия мап отново дали дадения списък е по-голям от 0 и отново същото. Това решение даде 100/100. Ако желаеш мога да ти дам и кода да го прегледаш.
Колега, а проверяваш ли дали винаги пърсон-а/човека има всичко т.е. и имена и дата ... за да го принтираш ? ... може ли да ти се случи да принтираш само датата :)
Е какъв е шансът да остане само датата? Те все някога ще ти дадат име за тази дта и когато видиш, че когато са ти дали име и дата, името го няма в речника, но датата я има - намираш го този обект и му слагаш име. И това става още на реда, в който четеш "Pesho Peshev 12/12/2012". А преди това например си получил "12/12/2012 - 13/12/1999"
точно затова питам ....дали има такъв шанс :) ...и дали е правил такава проверка ...
Дадохте ми доста съвети от общ характер, ама май никой не е погледнал кода ми. Да знам че са близо 300 реда и може би е малко досадно да се преглежда такова нещо и точно за това се надявам някой по - опитен да го прегледа набързо и да ми даде насоки. Също така споделете вашите решения за да се уча и от вас. Може би сте се сетили за много неща които аз съм пропуснал или пък сте намерили начин за доста по кратко решение.......споделяйте моля
Ето моето решение, надявам се да ти е полезно, макар и не на джава :)
http://pastebin.com/s5y7Aaxa
Ще ми е интересно да видя кода :-) и аз се преборих за 60 т.