Pravidlá hry Logik:
- Hráč 1 si myslí štvorciferné číslo bez opakovania číslic
- Hráč 2 toto číslo háda tak, že povie štvorciferné číslo, bez opakovania číslic a hráč 1 odpovie koľko číslic je na správnom mieste a koľko číslíc do čísla patrí, ale nie sú na svojom mieste. Číslice na správnom mieste sú označené počtom A, číslice na nesprávnom mieste počtom B.
Za štvociferné číslo v Logiku pokladáme aj trojciferné čísla, tie začínajú nulou.
Ak si Hráč 1 myslí číslo 4790 a otázka bude 1234, odpoveď bude:
1234| 0A 1B
5678| 0A 1B
Z týchto odpovedí vyplýva, že určite sú v myslenom čísle číslice 0 a 9.
9015| 0A 2B
Z tejto odpovede vieme, že 1 a 5 tam nepatria a 9 ani 0 nie sú na svojom mieste.
0926| 0A 2B
2 ani 6 tam nepatria a 09 sú na posledných miestach.
3790| 3A 0B
9 a 0 sú na svojich miestach a buď tam patrí 3 alebo 7, a správna číslica je na svojom mieste.
3890| 2A 0B
3 a 8 tam nepatria, 7 a 4 tam patria a 7 bola v 3790 na správnom mieste, takže povieme
4790|4A 0B
K správnemu výsledku sme dospeli po siedmych otázkach.
Projekt Logik 1: Naprogramujeme v Pythone hru Logik tak, že počítač si bude myslieť číslo a človek ho háda.
Projekt Logik 2: Človek si myslí číslo a počítač ho háda.
Projekt Logik 3: Obaja si myslia číslo a súťažia, kto sķôr uhádne číslo súpera. Hra končí remízou, ak uhádnu čísla, po rovnakom počte otázok.
Logik Net: Po sieti hrajú Logik dvaja hráči – ľudia
Súťaž programov
Žiaci vytvoria programy na hádanie čísla a v projekte Logik Net, namiesto ľudí súťažia tieto programy na 5 víťazstiev.
Logik 1
Algoritmus
- Vygenerovanie čísla, pričom sa nesmú opakovať číslice
- Zadanie čísla hráčom
- Kontrola, či číslo zadané hráčom je v povolenom tvare: je štvorciferné, číslice sa neopakujú, sú v ňom len číslice. Ak nebolo v povolenom tvare návrat na bod 2.
- Vyhodnotenie zadaného čísla a vypísanie odpovede v tvare nA mB
- Ak odpoveď nebola 4A 0B, návrat na bod 2.
- Vypísanie počtu pokusov
- Otázka, či chce hráč hrať znova. Ak Áno, návrat na bod 1.
Vygenerovanie „náhodného“ čísla
Na prácu so pseudonáhodnými číslami slúži modul random. Na začiatok programu dáme príkaz: import random
a sprístupnia sa všetky funkcie tohto modulu. Voláme ich v tvare: random.funkcia(parametre)
kde random. symbolizuje, že voláme funkciu z modulu random.
Funcie modulu random
rnadom.random() – generuje pseudonáhodné číslo z intervalu <0;1). Perióda opakovania je