Autorské riešenie
Našou úlohou je nájsť v žlto-zelenom terči výstrely - čierne body, zistiť, ako ďaleko sú od stredu a zrátať body.
Najprv si musíme uvedomiť, že musíme prejsť celým terčom bod po bode. Napríklad z ľavého dolného rohu hore po stĺpcoch až do pravého horného rohu. Alebo akokoľvek inak. Ak nájdeme bod čiernej farby, zavoláme procedúru zisti. ;Imagine logo
viem vyhodnot_zasahy urobTu "pocetBodov 0 ph ; na lavy dolny roh terca vz :dlzka / 2 vl 90 do :dlzka / 2 vp 90 opakuj :dlzka [ opakuj :dlzka [ ak farbaBodu = "cierna [ urobTu "pocet :pocet + zisti ] do 1 ] ;do noveho stlpca vz :dlzka vp 90 do 1 vl 90 ] ; naspat do stredu terca do :dlzka / 2 vl 90 do :dlzka / 2 vp 90 vysledok :pocetBodov koniec
Procedúra zisti vráti počet bodov za daný výstrel. Ten vypočítame takto: Keďže stred terča je v bode [0 0], absolútna hodnota súradníc určuje vzdialenosť od stredu. Keď si vezmeme tú väčšiu z nich, vieme zistiť, v ktorom medzištvorci sa výstrel nachádza. Označme ju "max. Poznáme dĺžku terča. Šírku medzištvorca potom vypočítame ako dĺžka terča / 20. Delíme číslom 20, lebo medzištvorcov je 10 a každý je započítaný do dĺžky 2-krát. Výsledok po celočíselnom delení čísla "max číslom šírka označuje poradie medzištvorca v ktorom sa výstrel nachádza od stredu. Označme ho "poradie. Aby sme aj posledný pixel medzištvorca započítali k správnemu medzištvorcu, budeme deliť číslo "max-1. Počet bodov za výstrel je potom 10 - :poradie. Nakoniec, ak sme v párnom medzištvorci, pridáme do výsledku o 1 bod viac, keďže to znamená, že sme v zelenom medzištvorci.
;Imagine logo
viem zisti urobTu "vzdX abs Xsur urobTu "vzdY abs Ysur urobTu "pocet 0 ak2 :vzdX > :vzdY [ urobTu "max :vzdX ][ urobTu "max :vzdY ] urobTu "sirka (:dlzka / 20) urobTu "poradie (div :max-1 :sirka) urobTu "pocet (10 - :poradie) ;je v zelenom ak mod :pocet 2 = 0 [ urobTu "pocet 1+:pocet ] vy :pocet koniec Vaše zaujímavé riešenia a najčastejšie chyby Celkovo tímy pochopili zadanie úlohy. Riešenie však nebolo jednoznačne čitateľné, čo spôsobilo, že ani jedno riešenie nebolo úplne správne a viacerí v podstate ani nevedeli ako začať. O najčastejších chybách sa vo všeobecnosti nedá veľa povedať, keďže riešenia hodné hodnotenia boli len dve, každé iné. Dva tímy poslali len nedokončené riešenia. Jeden tím stavil na konštantu 5,9, ktorou násobil počet výstrelov a výsledok vrátil ako správny počet bodov. Iba 2 tímy takmer vyriešili úlohu. Jeden tím mal problém len s vyhodnocovaním výstrelu do zeleného a druhý s celkovým vyhodnocovaním výstrelov. Ich prehľadávanie terča bolo neefektívne, keďže ho prehľadávali postupne od stredu cez každý štvorec nanovo. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |