Autorské riešenie
Úloha pozostávala z práce s 10 položkovým zoznamom čísel. Jej riešenie by sme mohli rozdeliť na tri časti: implementácia funkcie orezanie núl na začiatku a konci zoznamu, implementácia funkcie na zväčšenie / zmenšenie zoznamu a implementácia funkcie na zmenu intenzity hodnôt zoznamu. 1. Výrez (funkcia na odstránenie núl na začiatku a na konci zoznamu): riešenie môže byť založené na posúvaní indexu i od začiatku doprava, pokiaľ sú hodnoty nulové a následne posúvaním indexu j od konca doľava, kým sú hodnoty nulové. Na záver postačí vrátiť podzoznam od i po j (vrátane), ak existuje, inak prázdny zoznam 2. Zoom (funkcia na zväčšenie alebo zmenšenie zoznamu): ak je vstupný parameter faktora zväčšenia kladný, tak každú hodnotu vieme zopakovať faktor-krát. Kým je výsledný zoznam dlhší ako 10, orezávam symetricky z oboch strán napríklad príkazom novy = novy[1:-1]. Ak je vstupný parameter faktora zväčšenia záporný, tak vyberieme blok dĺžky abs(faktor), spočítame priemer bloku a zaokrúhlime ho na celé číslo. Ak je faktor=0, tak zoznam sa prirodzene nemení. 3. Intenzita (funkcia na zmenu intenzity hodnôt zoznamu): ak je vstupný parameter zmena kladný alebo nulový, tak pôvodnú hodnotu vynásobíme týmto parametrom, ale novú hodnotu ohraničíme na maximum 255. Ak je vstupný parameter zmena záporný, tak berieme jeho abdolútnu hodnotu ako deliteľa. Následne hodnotu zaokruhlíme. Nasleduje možný zdrojový kód v jazyku Python:
Vaše zaujímavé riešenia a najčastejšie chyby Úlohu riešilo 27 tímov. Väčšina tímov použila správny postup na dosiahnutie vhodného riešenia a využilo postup uvedený v autorskom riešení. Viaceré riešenia boli výborne okomentované. V niektorých riešeniach tímy pri augmentácii intenzita pri zápornom čísle používali násobenie namiesto delenia. Iné tímy pri kladnom zoome nevynechali symetricky hodnoty z oboch okrajov. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |