Autorské riešenie
Cieľom úlohy bolo na základe vstupnej hodnoty zo senzora vrátiť počet obdĺžnikov, ktoré je potrebné vysvietiť na displeji autonómneho vozidla. Jedno z možných zobrazení vysvietenia je znázornené na obrázku - displej obsahuje 7 obdĺžnikov a vysvietené sú práve 4 obdĺžniky.
Vstupná hodnota je zakódovaná ako päťciferné číslo v trojkovej sústave. Úloha mala viacero možných riešení. Jedným z vhodných riešení je previesť túto vstupnú hodnotu na desiatkové číslo. Prevody medzi číselnými sústavami v jazyku Python je možné riešiť nasledujúcimi spôsobmi:
Vieme, že všetky päťciferné čísla v trojkovej sústave predstavujú 3*3*3*3*3=243 rôznych hodnôt v desiatkovej sústave. Následne už postačí týchto 243 hodnôt správne rozdeliť do ôsmich rovnako veľkých intervalov. Inými slovami, na určenie počtu vysvietených obdĺžnikov postačí číslo v desiatkovej sústave vydeliť počtom všetkých hodnôt a následne tento podiel vynásobiť ôsmimi. Číslo, ktoré dostaneme, zaokrúhlime smerom dole, a tak dostaneme celé číslo, ktoré vyjadruje počet obdĺžnikov. # Python def stupen_vysvietenia(vstup): return math.floor(int(vstup, 3) / 3 ** 5 * 8) Úlohu bolo možné riešiť aj bez prevodu na desiatkovú sústavu. Tento spôsob využíva možnosť porovnávania reťazcov v jazyku Python. Nevýhodou tohto riešenia je potreba nájdenia hraníc, v ktorých sa počet vysvietených obdĺžnikov mení. # Python def stupen_vysvietenia_inak(vstup): if vstup < '01011': return0 elif vstup < '02021': return1 elif vstup < '10102': return2 elif vstup < '11112': return3 elif vstup < '12122': return4 elif vstup < '20210': return5 elif vstup < '21220': return6 else: return7 Vaše zaujímavé riešenia a najčastejšie chyby Úlohu riešilo 24 tímov, väčšinou správne. Väčšina tímov použila prevod trojkovej sústavy na desiatkovú a následne určila hranica vzťahom alebo priamym zadaním hraníc intervalov. žiaden tím neriešil úlohu porovnávaním reťazcov. Medzi najčastejšie chyby patril nepresný prevod z trojkovej do desiatkovej sústavy. Niektorým riešeniam chýbalo ošetrenie prípadov, ak v päťcifernom čísle v trojkovej sústave na vstupe je prvá cifra rovná 0. Tiež malé nedostatky vznikali aj pri prevodoch na počet obdĺžnikov. Jeden tím vyriešil úlohu aj s možnosťou prevodou medzi rôznymi číselnými sústavami.
|
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |