Autorské riešenie
[stiahni]

Pri každom pohybe korytnačky po bludisku sa do premennej postup typu zoznam pridáva jedna z hodnôt P (vpravo), L (vľavo), H (hore), D (dole). Výsledkom pohybu korytnačky po bludisku môže byť napríklad zoznam:
[P D H P L D P D L H L P D P H L].

Aj keď cesta korytnačky mohla byť ľubovoľná, späť by sa mala vrátiť najkratšou cestou. Najskôr sa posunie v zvislom smere, potom vo vodorovnom smere. 

Ako však zistiť, o koľko krokov sa má korytnačka posunúť v zvislom a o koľko vo vodorovnom smere?

Rovnaké počty krokov hore a dole spôsobia, že korytnačka skončí na mieste kde začala. Po krokoch [H H D H D D] je korytnačka opäť na rovnakom mieste. Ak niektorý počet krokov v jednom smere prevláda, korytnačka sa posunie v tom smere, v ktorom počet krokov prevláda. Po krokoch [H H D H D] skonči korytnačka o jeden krok hore. 

Stačí nám teda spraviť rozdiel počtu krokov hore a dole. Za každý krok hore pripočítame k zvislému smeru 1, za každý dole odpočítame od zvislého smeru 1. Výsledkom je počet krokov v zvislom smere od štartovacej pozície.

To isté platí aj vo vodorovnom smere. Za každý krok vpravo pripočítame k vodorovnému smeru 1, za krok vľavo odpočítame 1. Výsledkom je počet krokov vo vodorovnom smere od štartovacej pozície.

Na spracovanie prvkov zoznamu postup použijeme príkaz prePrvky

prePrvky "kam :postup
  [
    ak2 :kam="H [urobtu "y :y+1]
      [ak2 :kam="D [urobtu "y :y-1]
        [ak2 :kam="L [urobtu "x :x-1]
          [urobtu "x :x+1]
        ]
      ]
  ]

Hodnoty x a y sú kroky zaznamenané od štartovacej pozície. Späť do štartovacej pozície sa korytnačka vráti posunom o vzdialenosť  -y*60 v zvislom smere a -x*60 vo vodorovnom smere.

do -:y*60
vp 90
do -:x*60

Procedúra návrat vyzerá nasledovne:

viem návrat
  urobtu "x 0
  urobtu "y 0
  prePrvky "kam :postup
  [ ak2 :kam="H [urobtu "y :y+1]
      [ak2 :kam="D [urobtu "y :y-1]
         [ak2 :kam="L [urobtu "x :x-1]
                      [urobtu "x :x+1]
         ]
      ]
  ] 
  nechfp "cervena
  nechhp 3
  pd
  do -:y*60
  vp 90
  do -:x*60
koniec

Vaše zaujímavé riešenia

Najčastejšie chyby

Najčastejšia chyba, ktorú ste pri riešení úlohy robili, bol spôsob návratu korytnačky na červenú značku. V úlohe bolo napísané, že návrat má byť po najkratšej ceste. Nie po stopách korytnačky.:)

Pri správnych riešeniach, chceme upozorniť len skutočnosť, že ste nemuseli pracovať so 4 premennými (najčastejšie nazvaných h, d, l, p). Stačilo sledovať dva smery: os x a y. y= h-d a x=p-l Potom by príkazy vetvenia boli jednoduchšie.