Autorské riešenie
[stiahni]

  • Počet riešiteľov: 9/30= 30 %

  • Úspešnosť riešenia: 1,89/5  = 38%

Riešenie tejto úlohy nie je až také náročné, ako by sa na prvý pohľad mohlo zdať. Aj keď ide o programátorskú úlohu, začneme jej riešenie hľadať mimo počítača. Postačí nám papier (najlepšie štvorčekovaný) a ceruzka.

Vieme, že pri ťahaní kresliaceho pera, pero posiela svoje súradnice :x a :y procedúre kresliSymetricky. Úlohou procedúry je zistiť na akých súradniciach sa zobrazia odrazy tohto bodu v zrkadlách a na príslušných miestach nakresliť bodku. Situáciu nám uľahčí aj fakt, že súradnica [0, 0] sa nachádza v strede plochy na mieste, kde sa virtuálne zrkaflá vzájomne pretínajú.

Zoberme si štvorčekovanú sieť a nakreslime si do nej štyri obojstranné zrkadlá. Zvoľme si nejaký náhodný bod a pokúsme za zistiť, kde budú umiestnené jeho odrazy v zrkadlách.

symetria1

To, čo sa nachádza pred zrkadlom, sa nachádza aj za ním (teda, nám sa javí že je to za ním). Ak si zoberieme modré zrkadlo tak odraz bodu 1 sa bude javiť ako modrý bod 2.

symetria2

Pokračujme v hľadaní ďalších odrazov. Modrý bod v červenom zrkadle, ďalej jeho odraz v žltom zrkadle atď. Dostaneme zrejme obrázok podobný nasledujúcemu:

symetria3 

Ak by sme pokračovali v hľadaní odrazov všetkých získaných bodov vo všetkých zrkadlách, zistili by sme, že sa zobrazia do už existujúcich bodov. Viac ako týchto osem bodov už nezískame.

Teraz sa pozrime na umiestnenie odrazov, na ich súradnice. Vyznačme si ich.

symetria4

Vidíme, že súradnice bodov sú nasledovné:

1.     [2, 6] 
2.  [6, 2] 
3.  [6, -2] 
4.  [2, -6] 
5.  [-2, -6] 
6.  [-6, -2] 
7.  [-6, 2] 
8.  [-2, 6] 

Pokúsme sa tieto súradnice zovšeobecniť. Procedúra kresliSymetricky nepracuje s konkrétnymi číslami, ale so súradnicami x a y. Ak teda súradnice bodu 1 označíme ako [x, y], súradnice zvyšných bodov budú nasledovné:

1.     [2, 6]        [x, y] 
2.  [6, 2]  [y, x] 
3.  [6, -2]  [y, -x] 
4.  [2, -6]  [x, -y] 
5.  [-2, -6]  [-x, -y] 
6.  [-6, -2]  [-y, -x] 
7.  [-6, 2]  [-y, x] 
8.  [-2, 6]  [-x, y] 

A to je presne to, čo sme potrebovali zistiť. V procedúre kresliSymetricky stačí teda kresliť bodky na uvedených súradniciach. Výsledná procedúra teda môže vyzerať nasledovne: 

viem kresliSymetricky :x :y
  nechXYSur :x :y bod 5
  nechXYSur :y :x bod 5
  nechXYSur :y (-:x) bod 5
  nechXYSur :x (-:y) bod 5
  nechXYSur (-:x) (-:y) bod 5
  nechXYSur (-:y) (-:x) bod 5
  nechXYSur -:y :x bod 5
  nechXYSur -:x :y bod 5
koniec 

Šikovnejší z vás určite rozmýšľajú nad tým, čo sa stane, ak si prvý bod zvolíme niekde inde. Ak by sme si jeho súradnice označili [x, y], bez ohľadu na to, kde sa nachádza, odrazy bodov v zrkadlách by mali rovnaké súradnice ako tie, ktoré sme našli my (zrejme inak preusporiadané).

A ešte jedna otázka na zamyslenie. Čo ak bude náš zvolený bod priamo na niektorom zo zrkadiel? Toto však už prenecháme na vás :-).

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

Pri tejto úlohe nebolo potrebné vytvárať ďalšie korytnačky, resp. pracovať so súradnicami myšky. Týmto si niektorí z vás len skomplikovali riešenie. I ked sa dala použiťi dvojica príkazov (nechXSur a nechYSur), jednoduchšie je spojiť ich do jedného (nechXYSur).