Zadanie

Keď sa vedúci KMSka konečne vrátili na chatu, už sa im nechcelo variť. Namiesto toho si zahrali hru OhNoStroje. Lukáš a Teri si občas čítajú myšlienky, čím v hre OhNoStroje občasne vynikajú. V tento večer sa rozhodli staviť na svoje šťastie a vyzvali Jožka na súboj. Balíček kariet hry OhNoStroje pozostáva z \(50\) kariet. Každá karta je jednej z piatich farieb (červená, žltá, zelená, modrá alebo biela) a má celočíselnú hodnotu od \(1\) do \(5\). Z každej farby je v balíčku \(10\) kariet: \(3\) jednotky, \(2\) dvojky, \(2\) trojky, \(2\) štvorky a \(1\) päťka. Farba a číslo sa nachádzajú na lícovej strane karty. Všetky karty majú rovnakú rubovú stranu.

Na začiatku Jožko vyberie z balíku \(4\) karty (podľa svojej voľby) a dá ich Lukášovi do ruky tak, aby Lukáš videl z nich len rubovú stranu a aby Teri videla lícovú stranu (zoradenie Lukášových kariet si tiež zvolí Jožko). Potom Jožko napíše na papier jednu z kariet, ktoré dal Lukášovi, a papier ukáže Teri tak, aby ho Lukáš nevidel. Následne Teri dá Lukášovi nápovedu o jeho kartách nasledovne: vyberie si buď hodnotu alebo farbu, povie ju Lukášovi a ukáže na všetky jeho karty vybranej hodnoty alebo farby. Teri pri tom musí ukázať na aspoň jednu kartu. Na záver Lukáš vyberie jednu kartu z ruky a vyloží ju pred seba.

Pokiaľ Lukáš vyloží kartu, ktorá bola napísaná na papieri, tak Teri s Lukášom vyhrávajú. V opačnom prípade vyhráva Jožko. V prípade, že má Lukáš na ruke dve alebo tri totožné karty (teda s rovnakou farbou aj hodnotou), môže vyložiť ľubovoľnú z nich. Rozhodnite, či si Teri s Lukášom vie dohodnúť stratégiu, ktorá im zaručí výhru nad Jožkom.

Označme si pozície kariet na Lukášovej ruke z Lukášovho pohľadu zľava doprava indexami \(1\)\(4\). Teda, keď povieme, že Lukáš zahral kartu na pozícii \(2\), myslíme tým, že zahral druhú zľava.

Ukážeme, že Lukáš s Teri nemajú proti Jožkovi žiadnu šancu. Pôjdeme na to sporom. Budeme teda predpokladať, že Lukáš s Teri majú víťaznú stratégiu, ktorá im umožní vyhrať bez ohľadu na to, aké karty dá Jožko Lukášovi na ruku a taktiež bez ohľadu na to, akú kartu napíše na papier pre Teri.

Nech má Lukáš na ruke zľava doprava postupne červenú jednotku, červenú dvojku, žltú jednotku a žltú dvojku (ďalej to budeme značiť symbolicky ako \(\text Č1 \mid \text Č2 \mid \text Ž1 \mid \text Ž2\)). V takom prípade mu Teri môže dať štyri rôzne nápovede1:

  • na indexoch 1, 2 máš červenú kartu

  • na indexoch 3, 4 máš zelenú kartu

  • na indexoch 1, 3 máš jednotky

  • na indexoch 2, 4 máš dvojky

Nápovede budeme odteraz značiť symbolicky ako \((\text Č, 12)\), \((\text Ž, 34)\), \((1, 13)\), \((2, 24)\). Keďže pre spor predpokladáme, že Lukáš s Teri majú víťaznú stratégiu, musí Lukáš vedieť vyložiť ktorúkoľvek z kariet (keďže všetky štyri sú rôzne). Keďže mu však Teri vie dať iba štyri nápovede, každou z nich musí cieliť na iný index karty, ktorú vyložiť.

Nech teda \(i_1\) označuje index karty, ktorú má Lukáš vyložiť po nápovede \((\text Č, 12)\). Toto budeme odteraz symbolicky značiť \((\text Č, 12) \Rightarrow i_1\). Analogicky si označme \((\text Ž, 34) \Rightarrow i_2\), \((1, 13) \Rightarrow i_3\) a \((2, 24) \Rightarrow i_4\). Aby išlo o víťaznú stratégiu, očividne musí platiť \(\{i_1,i_2,i_3,i_4\}=\{1,2,3,4\}\), a teda indexy \(i_1\)\(i_4\) musia byť po dvoch rôzne.

Predpokladajme teraz, že Lukáš má na ruke \(\text Č1 \mid \text Č2 \mid \text Z1 \mid \text Z2\). Teri mu vie dať nápovede \((\text Č, 12)\), \((\text Z, 34)\), \((1, 13)\), \((2, 24)\). My už však vieme, že pri troch z nich už Lukáš vie, čo vykladať – konkrétne \((\text{Č}, 12) \Rightarrow i_1\), \((1, 13) \Rightarrow i_3\) a \((2, 24) \Rightarrow i_4\). Lukáš však musí vedieť vyložiť aj kartu na indexe \(i_2\), a preto nutne \((\text Z, 34)\Rightarrow i_2\). Nie je náročné si domyslieť, že podobne ukážeme aj \((\text M, 34)\Rightarrow i_2\), \((\text B, 34)\Rightarrow i_2\) a \((\text Z, 12)\Rightarrow i_1\), \((\text M, 12)\Rightarrow i_1\), \((\text B, 12)\Rightarrow i_1\).

Začína sa to javiť, že \((\text{farba},34)\stackrel ? \Rightarrow i_2\) platí bez ohľadu na to, na akú farbu ukážeme. Už to aj skoro máme ukázané, ešte by sme potrebovali \((\text Č, 34)\stackrel ? \Rightarrow i_2\). To sa však dá ľahko nahliadnuť z kariet \(\text Z1 \mid \text Z2 \mid \text Č1 \mid \text Č2\). Máme teda, že \((\text{farba},34)\Rightarrow i_2\) bez ohľadu na farbu a analogicky vieme ukázať aj \((\text{farba},12)\Rightarrow i_1\), \((\text{číslo},13)\Rightarrow i_3\) a \((\text{číslo},24)\Rightarrow i_4\).

Toto však ešte vieme rozšíriť. Totiž, pri ruke \(f_11 \mid f_22 \mid f_21 \mid f_12\) pre farby \(f_1\neq f_2\) vidíme, že \((1,13)\Rightarrow i_3\), \((2,24)\Rightarrow i_4\), a teda \((f_1,14)\), \((f_2,23)\) musia v nejakom poradí napovedať pozície \(i_1,i_2\). Potom ale z ruky \(f_11 \mid f_21 \mid f_22 \mid f_12\) vidíme, že keďže \((f_1,14)\), \((f_2,23)\) napovedajú v nejakom poradí \(i_1,i_2\), tak nápovede \((1, 12), (2, 34)\) musia v nejakom poradí napovedať \(i_3,i_4\). Nakoniec sa ešte pozrime na ruku \(f_11 \mid f_21 \mid f_12 \mid f_22\). Nápovede \((1, 12), (2, 34)\) v nejakom poradí napovedajú \(i_3,i_4\), čo ale znamená, že \((f_1,13),(f_2,24)\) musia v nejakom poradí napovedať \(i_1, i_2\). Všimnime si, že nech dávame farebnú nápoveď na dve karty na akýchkoľvek pozíciách, vždy napovedá na kartu buď na pozícii \(i_1\) alebo na pozícii \(i_2\). Symbolicky, \((\text{farba}, \text{dve karty})\Rightarrow i_1/i_2\). Analogicky vieme ukázať, že \((\text{číslo}, \text{dve karty})\Rightarrow i_3/i_4\).

V tomto momente by nám už intuícia mohla začať hovoriť, že víťazná stratégia existovať nebude. Totiž, ukázali sme, že keď Teri ukáže na dve karty, tak nezáleží, akú farbu (ak povie farbu), resp. číslo (ak povie číslo) k nim povie – tým pádom by akákoľvek víťazná stratégia bola dosť oklieštená.

Pozrime si teraz ruku, kde na pozíciách \(i_1, i_2\) sú karty \(F1\) a na pozíciách \(i_3, i_4\) sú karty \(F2\) pre farbu \(F\). Už vieme, že \((1, i_1i_2)\), \((2, i_3i_4)\) napovedajú v nejakom poradí karty na pozíciách \(i_3,i_4\). Znamená to, že obe číselné nápovede napovedajú kartu \(F2\). Lukáš však musí vedieť zahrať aj kartu \(F1\), čiže nápoveď \((F, 1234)\) musí napovedať niektorú z pozícii \(i_1,i_2\). Analogicky vieme ukázať, že \((\text{číslo}\neq5,1234)\Rightarrow i_3/i_4\)2.

Označme \(j\) pozíciu, ktorú napovedá nápoveď \((\text Č, 1234)\). Vieme, že \(j=i_1\) alebo \(j=i_2\). Označme ďalej druhú z týchto pozícii \(j'\).

Nech teraz máme ruku, kde na pozíciách \(j,i_3,i_4\) je karta \(\text Č1\) a na pozícii \(j'\) zas karta \(\text Č2\). Vieme, že \((\text Č,1234)\Rightarrow j\). Potom ale aspoň jedna z nápovedí \((1, ji_3i_4)\), \((2,j')\) napovedá pozíciu \(j'\).

Zoberme ďalej ruku, kde na \(j,i_4\) je karta \(\text Č1\), na \(j'\) je karta \(\text Z2\) a na \(i_3\) je karta \(\text Z1\). Vieme, že \((\text Č, ji_4)\Rightarrow j/j'\), \((\text Z,j'i_3)\Rightarrow j/j'\) a aspoň jedna z nápovedí \((1,ji_3i_4),(2,j')\) napovedá pozíciu \(j'\). Keďže ale Lukáš musí byť schopný zahrať aj \(\text Z1\) na \(i_3\), musí ju napovedať druhá z tých nápovedí – a teda \((1,ji_3i_4),(2,j')\) napovedajú v nejakom poradí pozície \(j',i_3\).

Nakoniec už vyskúšajme iba takú ruku, kde vymeníme \(\text Č1\) so Z1 – a teda \(\text Č1\) je na \(j,i_3\), \(\text Z1\) na \(i_4\) a \(\text Z2\) na \(j'\). Vieme, že \((\text Č,ji_3)\Rightarrow j/j'\), \((\text Z,j'i_4)\Rightarrow j/j'\) a nápovede \((1,ji_3i_4), (2,j')\) napovedajú v nejakom poradí pozície \(j',i_3\). Všimnime si, že Teri nevie Lukášovi napovedať pozíciu \(i_4\), a teda Lukáš nie je schopný z tejto ruky zahrať kartu \(\text Z1\). To je však očividne spor s tým, že Lukáš a Teri majú víťaznú stratégiu.

Zaujímavosť na záver

Hra OhNoStroje nie je tak úplne vymyslená. Totiž, rovnaký balíček kariet má aj kooperatívna hra Hanabi, v ktorej je cieľom tímu korektne vyložiť čo najviac farebných ohňostrojov. Ak teda hľadáte tip na vianočný darček, tu jeden máte.


  1. Ak vám to znie divne, vedzte, že nápoveda je čechizmus a správne slovenské slovo je nápoveď (ktoré má mimo iného rovnaký koreň slova ako slová odpoveď, spoveď, predpoveď, výpoveď, … .

  2. Totiž, pre číslo \(=5\) nemáme v balíčku dve päťky rovnakej farby, a teda by sme takú ruku zostaviť nevedeli.

Diskusia

Tu môžte voľne diskutovať o riešení, deliť sa o svoje kusy kódu a podobne.

Pre pridávanie komentárov sa musíš prihlásiť.