Autorské riešenie
[stiahni]

Pri kreslení takejto tapety sa musíme trochu zamyslieť. Aká je veľká tapeta v zadaní? Aká vzorka sa v nej opakuje?

Pri pozornejšom skúmaní si všimneme, že v tapete sa striedavo opakuje takáto vzorka s "prázdnou" vzorkou. Ak počítame aj prázdne kachličky, tapeta v zadaní má teda rozmer 6 kachličiek v stĺpci a 5 kachličiek v riadku. Nakresliť takúto kachličku však nie je problém. Môžeme to spraviť napríklad takto:
 

viem kachlicka :a
 polygon [opakuj 4 [do :a vp 90 do (4*:a) vp 90 do :a vp 90]]
koniec

 Premenná :a predstavuje dĺžku strany malého štvorčeka v rohu kachličky. Celá kachlička má teda dĺžku strany 4*:a. Zostáva naprogramovať vykreslenie celej tapety, podľa požadovaných rozmerov (počtu kachličiek) a veľkosti kachličky.

Na vykreslenie môžeme použiť dva cykly. Vnútorný cyklus (opakuj :s) zabezpečí nakreslenie jedného riadku tapety a vonkajší cyklus (opakuj :r) zabezpečí opakovanie kreslenia celého riadku. Pri kreslení plnej kachličky využijeme procedúru kachlicka a posunieme sa na ďalšie miesto na tapete. Pri kreslení prázdnej kachličky sa len presunieme na ďalšie miesto na tapete.

Problém ale je v tom, že riadky nie sú rovnaké. Prvý riadok začína vzorkovanou kachličkou, druhý prázdnou kachličkou, tretí vzorkovanou atď. Na to, aby sme rozlíšili, ktorý riadok (párny alebo nepárny) kreslíme, použijeme premennú :riadok. Jej hodnotu nastavíme na začiatku na hodnotu 1 (kreslíme prvý riadok) a po nakreslení každého riadku ju zvýšime o 1. Pri kreslení riadku kachličiek budeme brať do úvahy do úvahy číslo riadku. Ak je riadok nepárny (zvyšok :riadok 2 = 1), začneme riadok plnou kachličkou (urob "stlpec 1). Ak je riadok párny, začneme prázdnou kachličkou (urob "stlpec 0). Po nakreslení jednej kachličky v riadku premennú :stlpec zvýšime o 1. Ak je jej hodnota nepárna, kreslíme plnú kachličku. Ak je párna, kreslíme prázdnu kachličku.

Jedna z verzií tohto programu teda vyzerá nasledovne.

viem tapeta :r :s :a
 zmaz domov
 urob "riadok 1

 opakuj :r
  [ak2 zvyšok :riadok 2 = 1 [urob "stlpec 1] 
                            [urob "stlpec 0] 
   opakuj :s
    [ak zvyšok :stlpec 2 = 1 [kachlicka :a]
     vp 90
     do 4*:a
     vl 90
     urob "stlpec :stlpec + 1
    ] 
  vl 90
  do :s*4*:a
  vp 90
  vz 4*:a
  urob "riadok :riadok + 1
 ]
koniec

 

Najčastejšie chyby

Najväčší problém vám spôsobovalo zistiť, aká veľká je tapeta v zadaní. Keďže ste nezistili jej rozmer správne, vaše tapety neboli celkom správne. Niektorý ste si neuvedomili, že v tapete sa strieda plná kachlička s prázdnou.