Autorské riešenie
[stiahni]

Táto úloha vyzerá na prvý pohľad komplikovane. Keď sa však na ňu pozrieme bližšie, zistíme, že jej riešenie sa skladá z viacerých menších úloh. Tie samé o sebe nie sú až tak náročné, takže ich riešenie bude jednoduchšie. Riešenie je teda v tom, že si veľký a ťažký problém rozložíme na niekoľko menších a ľahších.

Pri kachličkovaní potrebujeme vedieť, koľko kachličiek má byť v jednom rade, koľko radov má byť na stene a aká veľká je jedna kachlička. V zadaní sa síce píše, že "zadáme koľko kachličiek má na stene byť ", ale len z jedného čísla nevieme určiť koľko radov má na stene byť a koľko kachličiek má byť v jednom rade. Počet kachličiek teda zadáme pomocou dvoch čísiel, počet radov a počet kachličiek v rade.

Pozrime sa bližšia na obrázok vykachličkovanej steny:

Ak chceme vykachličkovať celú stenu, môžeme ju kachličkovať po radoch. Naučíme korytnačku vykachličkovať jeden rad kachličiek. Ak korytnačka vykachličkuje jeden rad, posunieme ju na začiatok ďalšieho radu. Tento postup budeme opakovať toľko krát, koľko radov má na stene byť. Nakoniec presunieme korytnačku namiesto, odkiaľ začala kresliť prvý riadok kachličiek. Procedúra na kachličkovanie celej steny môže teda vyzerať nasledovne:

viem kachlickujStenu :stlpce :riadky :rozmer

  opakuj :riadky [
    kachlickujRiadok :stlpce :rozmer
    do :rozmer
  ]

  vzad :rozmer * :riadky

koniec

Pri kachličkovaní riadku stačí korytnačke vedieť, koľko kachličiek ("stlpce) má v riadku byť a aké majú byť veľké ("rozmer).

Pozrime sa teraz na to, ako vykachličkovať celý riadok kachličiek. Korytnačka nakreslí jednu kachličku a posunie sa na miesto, kde bude umiestnená ďalšia kachlička. Tento postup budeme opakovať toľko krát, koľko kachličiek má byť v jednom riadku ("stlpce). Nakoniec presunieme korytnačku namiesto, odkiaľ začala kresliť prvú kachličku v radku (ľahšie potom presunieme korytnačku na začiatok kreslenia ďalšieho riadku). Procedúra na kachličkovanie jedného radu kachličiek môže vyzerať nasledovne:

viem kachlickujRiadok :stlpce :rozmer
 
opakuj :stlpce [
    kresliKachlicku :rozmer
    vp 90
    do :rozmer
    vl 90
  ]

  vl 90
  do :rozmer * :stlpce
  vp 90

koniec

Pri samotnom kreslení jednej kachličky stačí, aby korytnačka poznala jej rozmer. Nakresliť jednu kachličku znamená, nakresliť štvorček so stranou veľkosti kachličky ("rozmer) a v každom rohu nakresliť malú hviezdičku. Procedúra na kreslenie jednej kachličky môže vyzerať nasledovne:

viem kresliKachlicku :rozmer
  opakuj 4 [
    ph
    vp 45
    do :rozmer / 3
    pd
    kresliHviezdicku :rozmer / 5
    ph
    vz :rozmer / 3
    vl 45
    pd
    do :rozmer
    vp 90
  ]
koniec

Presunieme korytnačku do vnútra budúcej kachličky, nakreslíme hviezdičku, vrátime sa a nakreslíme jednu stranu kachličky. Korytnačku otočíme o 90˚. Celý tento postup zopakujeme 4 krát. Hviezdička by mala mať taký rozmer, aby sa do kachličky vošli celkom štyri hviezdičky. My sme si zvolili "polomer" hviezdičky ako pätinu dĺžky strany kachličky.

Ostáva vyriešiť posledný problém, nakreslenie hviezdičky. Nakreslíme rameno hviezdičky a natočíme korytnačku tak, aby mohla začať kresliť ďalšie rameno. Veľkosť uhla, o ktorý sa má korytnačka otočiť, záleží na počte ramien hviezdičky. Pri našej, 32-cípovej hviezdičke je tento uhol 360 / 32.

Kreslenie kachličky vyzerá nasledovne:

viem kresliHviezdicku :dlzkaRamena
  nechFP ?
  opakuj 32 [
    do :dlzkaRamena
    vz :dlzkaRamena
    vp 360 / 32
  ]
  nechFP "cierna
koniec

Tým sme celú úlohu vyriešili.

Vaše zaujímavé riešenia a najčastejšie chyby

Najväčší problém vám robilo vyjadriť počet kachličiek ako súčin dvoch čísiel. S týmto si poradilo len 5 tímov: Peter Ralbovský, Expert vyssia-inteligencia, Profík jppo, Profík Sima 34 a Expert Baša a Saša (1). Väčšina z vás kachličkovala stenu len v jednom rade. Niektorí sa pokúsili zadaný počet kachličiek rozložiť na súčin, a podľa činiteľoch kachličkovať stenu.