NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Soutěž: Machr na algoritmy - Mastermind

Soutěž již skončila

Zadání

V dnešním machrovi si zkusíte napsat program, který vyřeší logickou hru Mastermind. Jedná se o logickou hru, v česku známou pod názvem Logik a určitě ji všichni znáte z dětství. Kdo ne, připomenu Logik.

My si ovšem hru trochu zobecníme. V původní verzi se vyskytovalo 6 barev a byly 4 pozice, do kterých bylo možné barvy umístit. Pro machra může být pozic i barev variabilní množství. Počet pozic a barev program dostane na standardním vstupu. Následně bude program vypisovat kombinace (opět na standardní výstup). Pro každou kombinaci program na standardním vstupu dostane počet barev, které program uhádl, ale neumístnil na správnou pozici. Následně dostane číslo udávající počet barev, které jsou uístěny na správné pozici. Protože by se z barvami špatně pracovalo, nahradíme je čísly indexovanými od nuly. Uvedu příklad.

Budeme předpokládat standardní pravidla, tedy 4 místa a 6 barev. Můj program si vymyslí kombinaci "2 0 3 4".

>4 6            #počet míst, počet barev
<0 1 2 3        #kombinace vypsaná programem
>3 0            #3 ze 4 barev správých barev použity, žádná z nich není na správním místě
<2 1 4 3
>2 1            #2 barvy nejsou na správním místě, 1 barva je na svém místě
<2 0 3 4
>0 4            #všechny 4 barvy jsou na svém místě

Použití operátor větší a menší (<,>) pouze symbolizuje vstup a výstup z programu.

Pravidla:

  • Nejlépe bude vyhodnocen program, který vyřeší zadané kombinace v nejmenším počtu kroků (pro 4 místa a 6 barev stačí 5 tahů)
  • Jedna barva může být v jedné kombinaci použita vícekrát (například kombinace "0 0 0 0" je také platná)
  • Program se musí po obdržení vstupu "0 k" kde k je počet míst (tedy ve chvíli, kdy program uhádne všechny barvy a jejich pozice) ukončit.

Ještě jednou opakuji, že se pracuje pouze ze standardním vstupem a výstupem (pro C++ cin/cout; pro C# třída Console, pro Javu System.out a System.in, atd.). Kromě zadaných hodnot nic jiného nevypisujte. Vstupy budou přesně ve formátu, jak je popsáno výše, není tedy potřeba ošetřovat vstupy.

Povolené jazyky jsou: C, C++, C#, Java, Python, JavaScript (pod NodeJS).

EDIT: Není přesně řečeno, jak se bude vyhodnocovat vzor, ve kterém se vyskytuje více stejných barev. Doporučuji přečíst komentáře, kde je to blíže popsáno.

Výhra

Vítěz dostane placku Machr, pár samolepek a ocenění do portfolia.

Výhra

Výsledky

Jméno bodů Řešení ( Stáhnout vše )
John Doe 100 Stáhnout řešení
Libor Šimo (libcosenior) 49 Stáhnout řešení
Aktivity
Avatar
Odpovědět
28.1.2017 12:03
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na Patrik Valkovič
Libor Šimo (libcosenior):28.1.2017 14:46

Sorry, ale kde si vzal tie vysokánske počty pokusov?
Námatkovo som vybral kódy a mám takéto počty pokusov:
0 0 0 0 - 1 pokus
0 5 0 5 - 8 pokusov
2 4 7 9 - 11 pokusov
5 4 0 12 - 18 pokusov
14 4 5 10 - 20 pokusov

Nahoru Odpovědět
28.1.2017 14:46
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):28.1.2017 14:48

Sorry, ty si ich spočítaval dokopy. OK.

Nahoru Odpovědět
28.1.2017 14:48
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Patrik Valkovič
Libor Šimo (libcosenior):28.1.2017 15:14

Dufam, ze stale plati pravidlo zverejnit vitazne riesenie. ;-)

Nahoru Odpovědět
28.1.2017 15:14
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Patrik Valkovič:28.1.2017 15:45

Všechny řešení jsou zveřejněny nahoře pod soutěží.

Nahoru Odpovědět
28.1.2017 15:45
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 55.