Autorské riešenie
V tejto úlohe máme zobraziť skupiny čísel, ktoré predstavujú niečo neznáme čo chceme odhaliť. Vo všeobecnosti rovnako veľké skupiny čísel môžeme zobraziť ako obdĺžnikovú oblasť bodov rôznymi spôsobmi. Napr. údaje v ilustratívnom príklade môžeme rozmiestniť po riadkoch alebo po stĺpcoch. Vypisovanie údajov v obdĺžnikovej oblasti môžeme začať v niektorom zo štyroch rohov obdlžníka. V riešení základnej úlohy budeme vykresľovať údaje po stĺpcoch zdola nahor a zľava doprava. Pre vypísanie tajekto "obdĺžnikovej" skupiny čísel použijeme dva vnorené príkazy opakovania, napr. preČísla. Širku obdĺžnika určíme ako počet prvkov zoznamu "data a výšku ako počet prvkov prvého prvku zoznamu "data. Program na vypísanie čísel môže vyzerať napr. takto: viem vypiš V našej úlohe budeme namiesto čísel vykresľovať body s farbou určenou hodnotou čísel v zozname "data. Ak prečítame j-tý prvok z i-teho podzoznamu zoznamu "data, tak na pozíciu i-tý riadok a j-tý stĺpec zobrazíme bod s touto prečítanou hodnotou. Jeho farbu určíme určíme ako odtieň sivej farby, ktorá má všetky tri zložky R, G, B rovnaké. Program na vykreslenie tajomnej mapy po stĺpcoch v odtieňoch sivej môže vyzerať napr. takto: viem kresli_graf Riešenie základnej úlohy zo zadania (bez kontroly vstupných hodnôt) dostaneme, ak v tomto programe doplníme parametre predstavujúce súradnice obrazovky, kde sa má vykresliť mapa a namiesto príkazu nechXYsúr :i :j uvedieme príkaz nechXYsúr :x_počiatok+:i :y_počiatok+:j. viem kresli_graf :x_počiatok :y_počiatok Ak chceme vykresľovať mapu aj so zadaným zväčšením doplníme do procedúry kresli_graf ďalší parameter :zväčšenie a upravíme príkaz nastavujúci pozíciu vykreslenia na nechXYsúr :x_počiatok+:i*:zväčšenie :y_počiatok+:j*:zväčšenie. A tiež namiesto príkazu bod 1 vytvoríme pomocnú procedúru kresli_bod na vykreslenie farebného bodu s patričným zväčšením: viem kresli_graf:x_počiatok :y_počiatok :zväčšenie viem kresli_bod
polygón [ opakuj 4 [ dopredu :zväčšenie vpravo 90 ] ] koniec Napokon vytvoríme riešenie úlohy, v ktorom doplníme parametre obdĺžnikového výrezu mapy :x1 :y1 :x2 :y2, parametre vodorovného aj zvislého zväčšenia bodu vykresľovania :x_zväčšenie :y_zväčšenie a ošetríme vstupné hodnoty parametrov, aby sa dala zadaná časť mapy vykresliť na danú stránku. viem kresli_graf :x_počiatok :y_počiatok :x1 :y1 :x2 :y2 :x_zväčšenie :y_zväčšenie viem kresli_bod
; vykreslenie bodu, resp. obdĺžnikového polygónu polygón [ opakuj 2 [ dopredu :y_zväčšenie vpravo 90 dopredu :x_zväčšenie vpravo 90 ] ] koniec Program môžeme ešte vylepšiť, ak namiesto štandardných hodnôt rozmerov obrazovky s pravým horným rohom so súradnicami [397,249], uvedieme výrazy pre všeobecné rozmery obrazovky: Ďalším vylepšením riešenia tejto úlohy môže byť doplnenie ďalších troch parametrov určujúcich jeden z 8 možných smerov vykresľovania mapy (zdola zľava, zdola sprava, zhora zľava, zhora sprava, zľava zdola, zľava zhora, sprava zdola, sprava zhora). Iným diskutabilným vylepšením úlohy by bolo doplnenie uhla naklonenia vykreslenia mapy. Tu by sme sa museli vzdať absolútneho vykresľovania bodov pomocou karteziánskej sústavy (príkazy nechXYsúr, či nechPoz) a použiť výlučne príkazy korytnačej grafiky (dopredu, vpravo, ...). 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 tabuľku, dôsledný rozbor možných prípadov riešenia úlohy, a tiež na výpočty s karteziánskymi súradnicami, použitie vnorených príkazov opakovania, vetvenia, zložených podmienok (so spojkami zároveň, alebo), údajového typu vnorený zoznam, nastavovanie farieb v modeli RGB. Riešenie tejto úlohy je ukážkou toho, ako sa dá naprogramovať nástroj na pomoc pri zisťovaní súvislosti v údajoch a pri ich vizualizácii. Vaše zaujímavé riešenia a najčastejšie chyby Do riešenia tejto úlohy sa zapojilo 10 tímov. Len 1 tím vyriešil túto úlohu na plný počet 7 bodov - JM&JM, ktorým gratulujeme. Celkové priemerné skóre tejto úlohy bolo 3,8 bodu, čo je cca 54%. V riiešeniach tejto úlohy sa vyskytli rôzne prístupy pri
Nedostatky, ktoré sme našli v riešeniach súťažiacich:
|
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |