Rešitev na prejšnji strani razbija vrstico na besede tako, kot da bi bile besede ločene samo s presledki. Dopolni jo tako, da bo delovala pravilno tudi ob prisotnosti ločil (vejice, pike ipd.).
Na koncu zanke v rešitvi na prejšnji strani (in v rešitvi spodaj) imamo v slovarju h
vse besede skupaj s podatki o tem, kolikokrat se katera od njih pojavi. Lahko jih zložimo v tabelo, pri čemer je vsak element par <število pojavitev, beseda> (ta par je pravzaprav tudi sam zase majhna tabela z dvema elementoma); uredimo jih padajoče in izpišemo prvih deset:
Napiši funkcijo, ki v danem seznamu besed poišče vse skupine besed, ki se rimajo. Za namen te naloge recimo, da se dve besedi rimata, če se ujemata v vseh črkah od zadnjega samoglasnika do konca besede.
Iz besedila naloge sledi, da je skupina besed, ki se rimajo, enolično določena s končnim delom besede (od zadnjega samoglasnika naprej). Če imamo na primer skupino besed ["zob", "grob", "tegob"]
, vidimo, da jim je skupna končnica -ob
. Ker končnica enolično določa skupino rimajočih se besed, jo lahko uporabimo kot ključ v slovarju; pripadajoča vrednost k temu ključu pa bo seznam besed, ki se končajo na to končnico. Za vsako besedo iz vhodnega seznama izračunamo njeno končnico, poiščemo v slovarju seznam za to končnico (če te končnice še ni v slovarju, jo zdaj dodamo) in besedo dodamo vanj.