Autorské riešenie
Riešenie úlohy o textovej analýze je založené na práci s textami, pričom zo vstupného textu je potrebné určiť:
Na určenie dĺžky zoznamu vieme použiť funkciu len(). Dĺžky jednotlivých častí zoznamu určíme tak, že si vypočítame výsledok celočíselného delenia dĺžky zoznamu štyrmi. Pomocou zvyšku po delení dĺžky zoznamu štyrmi si vieme určiť, koľko častí zoznamu bude mať dĺžku zväčšenú o jedna. Ak sa nám podarí určiť predchádzajúce hodnoty, je už ľahké pôvodné slovo zrekonštruovať tak, že jednotlivé časti zlepíme v určenom poradí, pričom môžeme použiť výrezy jazyku Python, napríklad pomocou príkazov stvrtina2 = vstup[indexy[0]:indexy[1]] . Nasleduje možný zdrojový kód v jazyku Python # Python def zrekonstruuj(vstup,): stvrtina = len(vstup) // 4 dlzky = [stvrtina] * 4 zvysok = len(vstup) % 4 for i in range(zvysok): dlzky[i] += 1 dlzky = [dlzky[1], dlzky[3], dlzky[0], dlzky[2]] indexy = [] for i in range(3): indexy.append(sum(dlzky[:i + 1])) stvrtina1 = vstup[:indexy[0]] stvrtina2 = vstup[indexy[0]:indexy[1]] stvrtina3 = vstup[indexy[1]:indexy[2]] stvrtina4 = vstup[indexy[2]:] return stvrtina3 + stvrtina1 + stvrtina4 + stvrtina2 vstupy = ('ormckyinfati', 'ormikinfat', 'eslieakren', 'sliekreen') for vstup in vstupy: vystup = zrekonstruuj(vstup) print(f'{vstup} -> {vystup}' False Všimnime si, že dĺžky jednotlivých častí sme si uložili do zoznamu, aby sa nám s nimi jednoduchšie pracovalo. Následne z nich počítame indexy, kde a jednotlivé časti reťazca končia. Opäť ich ukladáme do zoznamu. Vaše zaujímavé riešenia a najčastejšie chyby Úlohu riešilo 27 tímov. Väčšina riešení bola správna a využívala zvyšok po delení štyrmi na určenie štyroch rôznych prípadov. Viaceré tímy tieto štyri prípady skúmala osobitne a navrhla postup osobitne pre každý z nich. Iba niektoré z tímov to riešili univerzálne, a teda spôsobom, ktorý by sa neskôr dal zovšeobecniť aj na väčší počet častí slova. Niektoré tímy nevyriešili niektorý z týchto štyroch prípadov a riešenie teda fungovalo len pre niektoré vstupy. Niektorým tímom sa podarilo len zlepiť časti slova, a teda na vstupe nepoužívali celé slovo, ale hneď časti tohto slova na dátových uzloch. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |