Matematika za hrou Dobble aneb jak si vyrobit vlastní kartičky

Design Jan Janča

Ale stejně, největší radost udělá takový dárek, který člověk vyrobí sám z lásky pro toho druhého. Pokud s tím souhlasíte, nebo třeba jen sháníte super dárek na poslední chvíli, jste na správné adrese. Stačí když přetrpíte krátký úvod do krás projektivní geometrie, která stojí za populární karetní hrou Dobble i za její, plně personalizovatelnou, verzí z naší dílny ReCognable.

Dobble je karetní hra, kterou znají všichni rodiče o dětech samotných nemluvě. Jedno balení obsahuje 55 karet s osmi symboly, přičemž každé dvě karty spolu sdílí právě jeden symbol. Hráči se pak předhánějí v hledání společných symbolů. Hra je to zábavná a primitivní, tedy až do té doby, než začnete přemýšlet, jak si vyrobit vlastní sadu karet tak, aby platilo pravidlo, že každé dvě mají právě jeden společný symbol. Jako správný blb jsem dlouho a spokojeně žil v přesvědčení, že znám řešení, abych si pak během několika programovacích noci ověřil, že vím prd.

Pokud se vám nechce číst a přemýšlet, můžete skočit rovnou na:

Počátek mé cesty za tajemstvím Dobble se datuje ke konci letošního září, kdy jsme s rodinou vyrazili na Noc vědců a zastavili se na katedře matematiky Přírodovědecké fakulty Masarykovy univerzity. U jednoho ze stolů seděl mladík a měl před sebou vyskládané karty Dobble do rastru sedmi řad a osmi sloupců. Vypadal přalátelsky, a tak jsme si s dcerou přisedli a nechali si povyprávět, jak je Dobble fikaně konstruované s pomocí oblasti matematiky, které se říká projektivni geometrie. 

55 nebo 57 karet

Hned na začátku je potřeba konstatovat, že originální Dobble není z matematického hlediska dokonalá sada, protože má jen 55 karet a ne 57, zřejmě z výrobních důvodů. My budeme dále pracovat právě s 57 kartami, nebo jiným počtem karet, které odpovídají následujícímu vzorci, a k problému dvou odstraněných karet se vrátíme až na konci. 

n² + n + 1

kde n je takzvané „číslo řádu“ projektivní roviny. Pro komerční Dobble je n = 7, takže: 

7² + 7 + 1 = 49 + 7 + 1 = 57

A kolik symbolů je na každé kartě? Právě n + 1 = 8. Proč vysvětluje právě projektivní geometrie.

Tajemství: Projektivní rovina

Představte si zvláštní geometrický svět, kde platí neobvyklá pravidla. V běžné geometrii, tedy v té, se kterou jste do malička bojovali ve škole vyzbrojeni pravítkem a kružítkem, a které se říká po jednom chytrém 2400 let mrtvém pánovi Euklidovská, se dvě rovnoběžné přímky nikdy neprotnou. V projektivní geometrii se každé dvě přímky protnou v právě jednom bodě, ty „rovnoběžné“ se protínají v nekonečnu.

Představit si, že se rovnoběžky protínají v nekonečnu není zas tak těžké.

Jak je to možné? Trik spočívá v tom, že přidáme „body v nekonečnu“. Rovnoběžné přímky se protínají v bodě „nekonečně daleko“ ve směru, kterým míří. Všechny tyto body v nekonečnu leží na speciální „přímce v nekonečnu“. A jaká je souvislost mezi hrou Dobble a projektivní geometrií? 

V projektivní geometriiVe hře Dobble
PřímkaKarta
BodSymbol
„Bod leží na přímce"„Symbol je na kartě"

 

Pokud v projektivní geometrii platí pravidlo, že se  „Každé dvě přímky se protínají v právě jednom bodě.", pak musí pro hru Dobble platit podobné pravidlo, že „Každé dvě karty sdílejí právě jeden symbol.". Celá magie hry je tedy důsledkem základního axiomu projektivní geometrie.

Jak sestavit Dobble krok za krokem

Nyní si ukážeme, jak konkrétně sestrojit všech 57 karet. Budeme pracovat s projektivní rovinou řádu 7 (protože 7 je prvočíslo a to nám zjednodušuje aritmetiku).

Symboly: 57„bodů“

Naše symboly (body) rozdělíme do dvou skupin:

  1. Body v nekonečnu (symboly 1–8): Těchto 8 speciálních bodů představuje 8 různých směrů.  Jeden pro vertikální přímky a sedm pro přímky s různými sklony.
  2. Afinní body (symboly 9–57): Těchto 49 bodů tvoří mřížku 7×7. Každý bod má souřadnice (x, y), kde x i y nabývají hodnot 0 až 6.

Karty: 57 „přímek“

Karty (přímky) rozdělíme do tří skupin:

Karta 0: Přímka v nekonečnu

Tato jediná speciální karta obsahuje všech 8 bodů v nekonečnu (symboly 1–8). Je to přímka, na které leží všechny body v nekonečnu.

Karty 1–7: Vertikální přímky

Představte si 7 svislých čar v naší mřížce 7×7. Každá z těchto karet má 7 afinních bodů (celý sloupec) plus jeden bod v nekonečnu (symbol 8), ten reprezentuje „směr nahoru“, kterým všechny vertikální přímky míří. Každá prochází jedním sloupcem:

  • Karta 1 obsahuje všechny body ve sloupci x = 0
  • Karta 2 obsahuje všechny body ve sloupci x = 1
  • ...a tak dále až ke kartě 7 pro sloupec x = 6 

Karty 8–56: Šikmé přímky 

Zbývajících 49 karet odpovídá přímkám s rovnicí y = mx + b, kde:

  • m je sklon (směrnice) — hodnoty 0 až 6
  • b je „y-průsečík“ (kde přímka protíná osu y) — hodnoty 0 až 6

Kombinací 7 možných sklonů a 7 možných y-průsečíků dostaneme 7 × 7 = 49 přímek.

Každá taková karta obsahuje:

  • 7 afinních bodů (body na přímce v mřížce)
  • 1 bod v nekonečnu (symbol 1–7 podle sklonu)

Důležitý detail: Všechny výpočty děláme „modulo 7“ (na to upozorňuji proto, že mě to samotného pěkně vytrestalo). To znamená, že když vyjde číslo větší než 6, vezmeme zbytek po dělení sedmi. Takže 9 mod 7 = 2, 15 mod 7 = 1 atd. Díky tomu přímka nepřeteče z mřížky 7x7.

Simulátor konstrukce Dobble pro 57 karet

Vše výše uvedené demonstruje následujíc simulátor, který na 57 karet rozmístí po 8 symbolech, tak, aby každé dvě karty sdílely právě jeden symbol. Protože je prostor v článku prostorově omezený, můžete si ho otevřít v nové okně. Všechny principy nejlépe uvidíte, když si upravíte velikost okna prohlížeče tak, abyste měli vedle sebe 7 sloupců karet.

V simulátor si můžete prohlédnout:

  • Všechny karty se všemi umístěnými symboly.
  • Jednotlivé symboly a jejich výskyt na kartách.
  • 3 výše popsané vrstvy konstrukce hry.
 
 
 
b=0
b=1
b=2
b=3
b=4
b=5
b=6
 

Proč to zaručuje jeden společný symbol?

Vezměme dvě libovolné karty (přímky). Mohou nastat tři situace:

  1. Obě jsou „šikmé se stejným sklonem: V běžné geometrii by byly rovnoběžné a neprotínaly by se. Ale v projektivní geometrii se protnou v bodě v nekonečnu pro daný směr. Sdílejí tedy právě jeden symbol, bod v nekonečnu.
  2. Obě jsou „šikmé s různým sklonem: Přímky s různými sklony se v běžné mřížce protnou v jednom bodě. Díky modální aritmetice se protnou právě jednou i v naší „zabalené“ mřížce.
  3. Jedna je přímka v nekonečnu, druhá ne: Přímka v nekonečnu obsahuje všechny body v nekonečnu. Každá jiná přímka obsahuje právě jeden bod v nekonečnu (podle svého směru). Sdílejí tedy právě ten jeden.

Žádná situace nemůže vést k nule nebo více než jednomu průsečíku. To je krása projektivní geometrie!

Proč funguje Dobble i s 55 kartami?

Tady přichází zajímavá otázka: komerční Dobble má jen 55 karet, ne 57. Výrobci dvě karty odstranili. Proč to hru nerozbije?

Odpověď je jednoduchá: odstraněním karet vlastnost „právě jeden společný symbol“ neporušíme. Když vezmete dvě karty z původních 57, mají jeden společný symbol. Když některé karty odeberete, zbývající dvojice stále mají jeden společný symbol, ten se přece neztratil.

Co se ale změní:

  • Některé symboly se objevují na méně kartách: V dokonalé sadě je každý symbol na přesně 8 kartách. Po odebrání dvou karet budou symboly z těchto karet na méně kartách (7 nebo 6).
  • Hra je méně „symetrická": Hráč, který se naučí, které symboly jsou vzácnější, má teoreticky malou výhodu.

Pro běžné hraní je to ale zcela nepodstatné. Hra funguje perfektně i s 55 kartami nebo s 50, 40, či dokonce jen 10. Stále bude platit, že každé dvě karty ze zbývající sady sdílejí právě jeden symbol.

Proč to funguje matematicky?

Představte si to takto: máte skupinu lidí, kde každí dva sdílejí přesně jednoho společného kamaráda. Když někdo odejde, ostatní stále sdílejí své společné kamarády, ti nikam nezmizeli. Odchod jednoho člověka jen znamená, že někteří kamarádi mají o jednu vazbu méně, ale existující vazby zůstávají.

Stejně tak u Dobble: odebrání karty neovlivní vztahy mezi zbývajícími kartami. Jejich společné symboly zůstávají společné.

Jak si vyrobit vlastní sadu herních karet?

Ručně dost těžko, a proto jsem pro vás připravil vymazlený generátor, se kterým si můžete vygenerovat vlastní sadu karet ReCognable karet, a to rovnou hned v několika velikostech. Projektivní roviny totiž existují pro různé řády. Řád musí být mocninou prvočísla (2, 3, 4, 5, 7, 8, 9, 11, 13...). Pro každý řád n dostaneme:

Řád nKaretSymbolůNa kartě
2773
313134
421215
531316
757578
1113313312

 

Nejmenší možné „ReCognable“, které si můžete vygenerovat tedy má jen 7 karet se 3 symboly na každé (řád 2). Největší, který můj generátor zvládne bude obsahovat 57 karets 8 symboly na kartě odpovídá řádu 7.

Proč zrovna mocniny prvočísel?

Projektivní roviny konstruujeme pomocí konečných těles (finite fields). Konečné těleso řádu n existuje právě tehdy, když n je mocnina prvočísla. Pro prvočísla (jako 2, 3, 5, 7, 11) je konstrukce přímočará, prostě počítáme modulo n. Pro mocniny prvočísel (jako 4 = 2², 8 = 2³, 9 = 3²) je konstrukce složitější, ale stále možná. Zajímavost: Nikdo neví, jestli existuje projektivní rovina řádu 10 (10 není mocnina prvočísla). Matematici dokázali, že pro řád 6 projektivní rovina neexistuje, ale obecně je otázka existence projektivních rovin pro ne-mocniny prvočísel stále otevřeným problémem.

„Matematika je hrou, kterou hrajeme s nekonečnem.“
 
David Hilbert

Co si dále přečíst