Autorské riešenie
[stiahni]

Číslo, ktoré padlo na kocke, zistíme podľa umiestnenia jednotlivých bodiek. Bodky sú vykresľované v štvorcovej mriežke 3x3.

Ak si dobre všimnete rozloženie bodiek v jednotlivých číslach, zistíte, že niektoré pozície sú obsadené častejšie ako iné. Napríklad bodku v ľavom dolnom políčku má až 5 čísel, kým v hornom strednom políčku nemá bodku žiadne číslo. Ak sa zameriate na prostredné políčko, zistíte, že presne polovica čísel v ňom bodku má (1, 3, 5) a druhá polovica nemá (2, 4, 6). Teda jednoduchým overením farby bodu v prostrednom políčku vieme vylúčiť polovicu prípadov. Ďalej hľadáme opäť takú vhodnú otázku, ktorá nám počet možností rozdelí približne na polovicu (keďže máme iba 3 prípady, počet prípadov rozdelíme otázkou na 1 a 2). V tom lepšom prípade sme už riešenie uhádli (ak ostala iba jedna prípustná možnosť), v horšom prípade nám ostali ešte dve prípustné čísla, ktoré poslednou vhodnou otázkou od seba odlíšime.

Teda nájsť konkrétne číslo vieme pomocou 2-3 otázok. Sériu otázok, ktoré sa môžeme pýtať, znázorňuje obrázok.

Ostáva zistiť, ako overíme, či v danom políčku je vykreslená bodka alebo nie. Môžeme to urobiť zistením farby bodu v strede políčka. Ak je farba bodu v strede políčka čierna, tak tam bodka nakreslená je, ak je biela, tak tam bodka nie je. Mriežka bola vykresľovaná tak, že jej stred je v bode [0, 0] a políčko má rozmery 100x100. Potom súradnice stredov políčok sú:

Samotný kód bude nasledovný:

viem vypisHod
   ph
  ;zistíme, či je bodka v strednom políčku:
  nechXYSur 0 0
  ak2 farbaBodu="cierna
    [nechXYSur -100 -100
    ;zistíme, či je bodka v ľavom dolnom rohu
    ak2 farbaBodu="cierna
      [nechXYSur 100 -100
      ak2 farbaBodu="cierna
        [pis "5]
        [pis "3]
      ]
      [pis "1]
    ]
    [;zistíme, či je bodka v pravom dolnom rohu
    nechXYSur 100 -100
    ak2 farbaBodu="cierna
      [;zistíme, či je bodka v strednom ľavom políčku
      nechXYSur -100 0
      ak2 farbaBodu="cierna
        [pis "6]
        [pis "4]
      ]
      [pis "2]
    ]
  nechXYSur 0 0
koniec

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

Úlohu riešilo iba 9 tímov. Niektorí z vás využili náš kód na vykresľovanie obrázka kocky pomocou záberov. Počas súťaže sme napísali oznámenie, aby ste túto vlastnosť nevyužívali, napriek tomu sa takéto riešenia objavili. Vzhľadom na to, že bolo našou chybou, že sme túto možnosť neošetrili v zadaní úlohy, títo riešitelia dostali za úlohu 2 body (inak by dostali 0) zato, že ste sa "vynašli". Väčšina ostatných riešiteľov riešili úlohu tak, že spočítali počet vykreslených bodiek a na základe tohto počtu vypísali príslušné číslo. V tomto prípade sme za najlepšie riešenie považovali také, ktoré kontrolovalo iba 7 z 9 políčok, v ktorých sa bodky môžu nachádzať, pretože v hornom a dolnom strednom políčku nemá bodku žiadne číslo (za takéto riešenie sme udelili 3 body, ak ste kontrolovali viac ako 7 políčok, tak 2 body). Najefektívnejšie riešenie pomocou 2-3 overení nenašiel nikto, aj keď nejaké pokusy o to sa objavili (čo oceňujeme).