Všechny bity hry:
00000001 - Jednoduchá kalkulačka
00000010 - Odebírání zápalek
00000100 - Gregoriánský kalendář
00001000 - Hádání kombinace
00010000 - Vigenérova šifra
00100000 - Hledání min
01000000 - Házení kostkou
10000000 - Conway's Game of Life
Přišla první neděle v měsíci, a s ní další kapitola téhle hry. V minulé jsme tvořili kalendář, ze kterého jsme se mohli dozvědět že hraběnka Ada Lovelace, první programátorka na světě, která bude mít 10. prosince 200. narozeniny, se narodila v neděli. A nebo že příští rok bude Štedrý den v sobotu. Jenže ten letošní nastane už přespříští čtvrtek, a tak některé z nás trápí mnohem aktuálnější otázka:
Kam jsem zamkl ty dárky?
A také kde mám zapsaný ten kód od číselného zámku, protože vyzkoušet všech deset tisíc kombinací mi bude trvat minimálně do Velikonoc...
Nebo nebude? Šlo by ten kód uhádnout rychleji podle nějaké nápovědy? Podíváme se zase trochu do historie...
V roce 1970 se objevila hra Mastermind. Je to variace na starší společenskou hru, trochu vylepšená a upravená. První hráč vymyslí náhodnou kombinaci několika barev, tu nastaví do skrytého pole hrací desky, a druhý hráč se pokouší jí uhádnout. Sestaví z barevných hříbků svou kombinaci, a první hráč jí ohodnotí - za každou barvu ve správné pozici černý kolíček, za každou barvu v nesprávné pozici bílý.
V první verzi hry se hádaly čtyři barvy ze šesti, a hádající měl deset pokusů. Existovala i kapesní verze, zmenšená na šest pokusů, což je pro dobrého hráče dostatečné množství. Jakákoliv kombinace se totiž dá zjistit maximálně pěti pokusy, jak dokázal programátorský bůh Don Knuth. V příštích letech vznikla řada verzí, pro nás nejzajímavější je Super Mastermind z roku 1975, rozšířený na hádání pěti barev z osmi, který se od roku 1979 vyráběl i v Československu pod názvem Logik, a vyrábí se dodnes. Třetí nejzajímavější verze je Electronic Mastermind z roku 1977, který vznikl přeprogramováním kapesní kalkulačky, a hádá se v něm číselný kód v různých obtížnostech, může mít tři až pět číslic. Hráčů pokus opět vyhodnotí zobrazením počtu správně a nesprávně umístěných číslic:
https://www.youtube.com/watch?v=WQfMzsxrQWk
Tím se dostáváme k dalšímu bitu, 00001000, a tentokrát je možné vybrat si právě ze tří uvedených her:
1. Hádají se čtyři barvy ze šesti - Mastermind.
2. Hádá se pět barev z osmi - Logic.
3. Hádají se čtyři číslice z deseti - kódový zámek.
Ve všech případech má hráč deset pokusů na to aby uhodl náhodnou kombinaci vygenerovanou počítačem, ten jeho výkony vyhodnotí, a sdělí mu jak dobře si vede.
Malá hra o velkého Bajta (3) - Hádání kombinace
Malá hra o velkého Bajta (3) - Hádání kombinace
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Malá hra o velkého Bajta (3) - Hádání kombinace
Udělal jsem ty čtyři číslice z deseti, řekl bych, že je to o dost lepší, než to, co jsem vyváděl v minulých bitech Lepší pozdě, než nikdy. exe
Kód: Vybrat vše
#include <iostream>
#include <ctime>
const int POCETCISEL = 4;
const int POCETPOKUSU = 10;
using namespace std;
int main()
{
cout << "Vita Vas Kodovy zamek, hadate ctyri cisla z deseti, mate deset pokusu." << endl;
char pokracovat;
unsigned int kod[POCETCISEL], tip[POCETCISEL], pokusy, sporadi, scisla, i;
bool pouzito[POCETCISEL];
srand(time(0));
do
{
pokusy = 0;
for (i = 0; i < POCETCISEL; i++)
{
kod[i] = rand() % 10;
}
cout << "Vygenerovan novy kod." << endl;
do
{
pokusy++;
sporadi = 0;
scisla = 0;
for (i = 0; i < POCETCISEL; i++)
{
pouzito[i] = false;
}
cout << "Zadejte vas tip (s mezerami): ";
while (!(cin >> tip[0] >> tip[1] >> tip[2] >> tip[3]) || tip[0] > 10 || tip[1] > 10 || tip[2] > 10 || tip[3] > 10)
{
cout << "Neplatny vstup, zkuste to znovu: ";
cin.clear();
while (cin.get() != '\n');
}
for (i = 0; i < POCETCISEL; i++)
{
if (kod[i] == tip[i])
{
if (pouzito[i] == true)
scisla--;
else
pouzito[i] = true;
sporadi++;
}
else
{
for (int a = 0; a < POCETCISEL; a++)
{
if (tip[i] == kod[a] && pouzito[a] == false)
{
scisla++;
pouzito[a] = true;
}
}
}
}
if (sporadi == 4)
{
break;
}
cout << "Pocet spravnych cisel ve spravne pozici: " << sporadi << endl;
cout << "Pocet spravnych cisel ve spatne pozici: " << scisla << endl << endl;
} while (pokusy < POCETPOKUSU);
if(pokusy == POCETPOKUSU)
cout << "Prohrali jste." << endl << "Napiste \"P\" pro pokracovani, jiny vstup hru ukonci: ";
else
cout << "Vyhrali jste na " << pokusy << " pokusu, gratulace." << endl << "Napiste \"P\" pro pokracovani, jiny vstup hru ukonci: ";
cin.get();
cin.get(pokracovat);
} while ((pokracovat == 'p' || pokracovat == 'P') && cin.get() == '\n');
return 0;
}
Re: Malá hra o velkého Bajta (3) - Hádání kombinace
Konečně aspoň někdo, ale hrát se dá celý život a klidně se můžou připojit i další, tahle hra je časově neomezená
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 2
- 1583
-
od mmmartin
Zobrazit poslední příspěvek
07 srp 2023 16:44
-
- 14
- 2185
-
od kupjec
Zobrazit poslední příspěvek
25 zář 2023 11:26
-
-
Výběr skříně (zakoupená je malá) Příloha(y)
od DaveMove » 09 čer 2023 15:35 » v Problémy s hardwarem - 8
- 791
-
od meda2016
Zobrazit poslední příspěvek
09 čer 2023 20:27
-
Zpět na “Programování a tvorba webu”
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti