Refaktoráld a faépítő algoritmust.
Egyes webes fórumok faelrendezést használnak, így a bejegyzések fa formájában jelennek meg. A bejegyzéseket azonban általában rendezetlen rekordhalmazként tárolja egy adatbázis. Ezért amikor a bejegyzéseket megjelenítjük a felhasználónak, újra fel kell építeni a fa szerkezetét.
A feladatod az lesz, hogy refaktorálj egy működő, de lassú és csúnya kódrészt, amely erősen absztrahált rekordok faépítési logikáját valósítja meg. A rekordok csak egy azonosítót és egy szülőazonosítót tartalmaznak. Az azonosító mindig 0 (beleértve) és a rekordlista hossza (nem beleértve) között van. Minden rekord szülőazonosítója kisebb, mint a saját azonosítója, kivéve a gyökérrekordot, amelynek a szülőazonosítója megegyezik a saját azonosítójával.
Példa egy fára:
root (ID: 0, parent ID: 0)
|-- child1 (ID: 1, parent ID: 0)
| |-- grandchild1 (ID: 2, parent ID: 1)
| +-- grandchild2 (ID: 4, parent ID: 1)
+-- child2 (ID: 3, parent ID: 0)
| +-- grandchild3 (ID: 6, parent ID: 3)
+-- child3 (ID: 5, parent ID: 0)
Néha szükség van arra, hogy kivételt dobj. Amikor ezt teszed, mindig adj meg egy beszédes hibaüzenetet, hogy jelezd, mi a hiba forrása. Ez olvashatóbbá teszi a kódodat, és jelentősen megkönnyíti a hibakeresést. Ha tudod, hogy a hiba forrása egy bizonyos típus lesz, dönthetsz úgy, hogy a beépített hibatípusok egyikét dobod, de ekkor is adj meg beszédes üzenetet.
Ez a konkrét feladat azt kéri, hogy alakítsd át, hogyan és hol használod a raise utasítást arra, hogy érvénytelen fa bemenet esetén ValueError-t „dobj”. A tesztek csak akkor lesznek sikeresek, ha a kód raises a megfelelő exception-t, és megfelelő üzenetet is fűz hozzá.
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Python nyelvet 17 fogalom146 feladat segítségével, valódi emberi mentorálással, mindez ingyen.