Autorské riešenie
[stiahni]

Úloha vyzerá na prvý pohľad ťažká, ale nie je tomu tak. Stačí o nej trochu porozmýšľať. Prvý problém je, že nevieme, ako farbou mala šachovnica začínať (napr. ľavý spodný roh). Predpokladajme, že začiatočná farba je žltá (urobTu "zaciatocnaFarbaStlpca "zlta). Keďže poznáme rozmery šachovnice (počet štvorčekov v riadkoch a stĺpcoch), vieme zistiť, koľko štvorčekov je vyfarbených nesprávnou farbou. Ak by sme však nakoniec zistili, že je potrebné prefarbiť viac ako polovicu všetkých štvorčekov, výhodnejšie bude prefarbiť tie, o ktorých sme si pôvodne mysleli, že sú správne. Šachovnica teda bude začínať modrou farbou.

Šachovnicou môžeme prechádzať po stĺpcoch. Na každom štvorčeku na ktorom sa zastavíme otestujeme, či je chybnej farby (ak farbaBodu<>:farba). Ak áno, zvýšime počet chybných štvorčekov (zvys "pocetChyb). Nezabudnime, že ak sa posunieme na ďalší štvorček, zmeníme testovanú farbu.

ak2 :farba="zlta [
 urobTu "farba "modra
][
 urobTu "farba "zlta
]

Ak začneme testovať štvorčeky v nasledujúcom stĺpci nezabudnime, že by mal začínať inou farbou ako ten predchádzajúci.

ak2 :zaciatocnaFarbaStlpca="zlta [
 urobTu "zaciatocnaFarbaStlpca "modra
][
 urobTu "zaciatocnaFarbaStlpca "zlta
]

Celá procedúra pocetChybnych môže vyzerať nasledovne:

viem pocetChybnych
 urobTu "pocetChyb 0
 urobTu "zaciatocnaFarbaStlpca "zlta

 opakuj :stlpce [
  urobTu "farba :zaciatocnaFarbaStlpca
  opakuj :riadky [
   ak farbaBodu <> :farba [
    zvys "pocetChyb
   ]
   ak2 :farba = "zlta [
    urobTu "farba "modra
   ][
    urobTu "farba "zlta
   ]
   do 10
  ]
  vz 10 * :riadky
  vp 90 do 10 vl 90
  ak2 :zaciatocnaFarbaStlpca = "zlta [
   urobTu "zaciatocnaFarbaStlpca "modra
  ][
   urobTu "zaciatocnaFarbaStlpca "zlta
  ]
 ]

 ak2 :pocetChyb > :riadky * :stlpce / 2 [
  pis (slovo "|Počet chybných: | :riadky * :stlpce - :pocetChyb)
 ][
  pis (slovo "|Počet chybných: | :pocetChyb)
 ]
koniec

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

  • Väčšina z vás si neuvedomila, že šachovnica na fasáde môže začínať hociktorou z dvoch farieb. Niektorí si neuvedomili, že pri testovaní farieb štvorcov, nový stĺpec nemusí začínať inou farbou ako stĺpec pred ním skončil.