Autorské riešenie
Pri riešení niektorých úloh, a táto k nim patrí, nám pomôže, ak sa zamyslíme nad tým, ako by sme úlohu riešili bez počítača. Ak by sme hľadali písmenká slova v nejakom inom texte, zrejme by sme postupovali nejako takto:
Ak tento postup prepíšeme do jazyka Python, funkcia je_sucastou môže vyzerať nasledovne: # Python def je_sucastou(slovo, text): idx_text = -1 for znak in slovo: idx_text = text.find(znak, idx_text + 1) if idx_text == -1: return False return True Cyklus for nám zabezpečí, že budeme postupne hľadať jednotlivé písmenká hľadaného slova. V premennej idx_text si pamätáme pozíciu, na ktorej sme našli naposledy hľadané písmenko alebo že sme ho nenašli. Všimnime si, že ďalšie písmenko už hľadáme od nasledujúcej pozície (idx_text + 1). Na prehľadávanie sme využili funkciu reťazca find. Funkcii vieme povedať nie len to, aké písmenko má hľadať (znak), ale aj to, od akého miesta má hľadať (idx_text + 1). Funkcia vráti pozíciu, kde písmenko našla alebo hodnotu -1. Ak funkcia vráti hodnotu -1 vieme, že písmenko sa v texte nenašlo a slovo sa v texte nenachádza. Ak sme našli všetky písmenká, vykonávanie cyklu sa skončilo. V tomto prípade môžeme vyhlásiť, že všetky písmenká slova sa v texte nachádzajú a nachádza sa tam teda aj celé slovo. Vaše zaujímavé riešenia a najčastejšie chyby Úlohu vyriešilo správne 5 tímov. Ostatným robilo problémy správne indexovanie znakov slova a znakov textu, takže občas ich program skončil s chybou, keď index v danom reťazci neexistoval. Niektorí nezohľadňovali poradie hľadaných slov v texte alebo viacnásobné výskyty písmen v slove. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |