Autorské riešenie
Našou úlohou je k ľubovoľnému kódu tovaru (Obr. 1, vľavo) vytvoriť rozšírený kód tovaru s kontrolným súčtom (Obr. 1, vpravo). Nový riadok (hore) a nový stĺpec (vpravo) rozšíreného kódu má obsahovať kruhy s takou farbou, aby bol počet bielych kruhov v každom stĺpci a v každom riadku párny.
Obr 1. Pôvodný kód tovaru (vľavo) a doplnený kód tovaru s kontrolným súčtom (vpravo) Poďme najprv vyriešiť jednoduchšiu úlohu, ktorou je doplniť v rade čiernych a bielych kruhov ďalší kruh s takou farbou, aby bol súčet bielych kruhov párny. Vytvoríme procedúru nastavRad na prechádzanie radom čiernych alebo bielych kruhov kým nenarazíme na koniec radu. Počas prechádzania kruhmi spočítavame biele kruhy a tiež celkový počet kruhov v rade. Podľa súčtu bielych kruhov nastavíme farbu nového kruhu. Ak je to párne číslo, farba nového kruhu je čierna, inak biela. Nakoniec sa vrátime opäť na východzí kruh radu. Procedúra nastavRad môže vyzerať, napr. takto: viem nastavRad :priemer V cykle kým je možné namiesto podmienky farbaBodu<>"sivá10 použiť podmienku alebo farbaBodu="biela farbaBodu="čierna, ktoré vyhovuje pri použití ľubovoľnej inej tretej farby rôznej od bielej a čiernej. Procedúru nastavRad použijeme pre všetky stĺpce a riadky pôvodného kódu (Obr 2.).
Obr 2. Schéma postupu dopĺňania kruhov v každom stĺpci a riadku pôvodného kódu Vytvoríme procedúru nastav, ktorá najprv prechádza všetkými stĺpcami pôvodného kódu a na ich koniec doplní kruh s takou farbou, aby bol súčet bielych kruhov párny. Potom sa presunieme do ľavého horného kruhu, natočíme sa vpravo a zopakujeme rovnaký postup na doplnenie kruhu s vhodnou farbo na koniec každého riadku kódu. Napokon sa vrátime na východziu pozíciu kódu - na ľavý dolný kruh. Procedúra nastav môže vyzerať, napr. takto: viem nastav :priemer Táto súťažná úloha je zameraná na použitie stratégií riešenia problémov (rozlož problém do podproblémov, nakresli si obrázok), na jednoduché výpočty (súčet, zvyšok pri delení), použitie príkazov opakovania, vetvenia a tvorbu vnorených procedúr s parametrami. Vaše zaujímavé riešenia a najčastejšie chyby Do riešenia tejto úlohy sa zapojili len 4 tímy. z toho 2 tímy (JM&JM a ikztzu) dosiahli plný počet bodov. Celkový priemer úspešnosti riešení bol 3 body z maximálneho počtu 6 bodov (50,0% úspešnosť). V jednom riešení autori použili na prechádzanie stĺpcami a riadkami cyklus kým. V inom riešení autori najprv zistili pomocou cyklu kým počet riadkov a stĺpcov a ďalej už používali cyklus opakuj na prechádzanie všetkými stĺpcami a riadkami kódu. V riešeniach autori použili v príkaze kým obe verzie podmienok uvedené v autorskom riešení. Odporúčania k riešeniam:
|
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |