Autorské riešenie
Riešenie úlohy o písmenkovom kruhu je založené na práci s dvoma reťazcami:
Jednoduchým testom na úvod môžeme zistiť, či je dĺžka hľadaného a kruhového reťazca rovnaká. Ak sme zistili, že dĺžka hľadaného a kruhového reťazca:
Skúsenejší programátori rýchlo zistia, že hľadaný text si vieme veľmi rýchlo napísať aj odzadu s využitím výrezov v jazyku Python a to pomocou príkazu hladany_text_odzadu = hladany_text[::-1]. Potom nám už stačí preskúmať, či od zadaného indexu na kruhovom reťazci sa hľadaný text nachádza na kruhu buď priamo alebo v tvare tohto hľadaného textu odzadu. Hneď pri prvom nájdení zhody môžeme vrátiť hodnotu True, a teda v prípade kladnej odpovede už ďalšie indexy skúmať nemusíme. Nasleduje možný zdrojový kód v jazyku Python # Python def over(hladany_text, kruhovy_text): if len(hladany_text) != len(kruhovy_text): return False hladany_text_odzadu = hladany_text[::-1] for index in range(len(kruhovy_text)): spojenie = kruhovy_text[index:] + kruhovy_text[:index] if spojenie == hladany_text: return True if spojenie == hladany_text_odzadu: return True return False Vaše zaujímavé riešenia a najčastejšie chyby Úlohu riešilo všetkých 25 tímov. Väčšina riešení bola správna a používala prehľadanie všetkých možných indexov začiatku hľadaného reťazca na kruhu. Niektorí, aj keď to zadanie nevyžadovalo, do riešení doplnili aj prípadné vymazanie medzier v hľadanom texte alebo v texte na písmenkovom kruhu. Každého tímu sa podarilo aspoň načítať hľadaný text a kruhový text. Súťažiacim, ktorí získali menší počet bodov, chýbalo napríklad vyriešenie úlohy aj opačným smerom. Niektorý namiesto postupného prechodu všetkých pozícií na kruhu použili funkciu na náhodné generovanie indexu, čo neviedlo v niektorých prípadoch k správnemu výsledku. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |