18. 1. 2016

Rubikova kostka


Byl to můj dávný sen, naučit se skládat Rubikovku. Jako malý jsem byl schopen jakž takž dát dohromady jednu stranu (a to ještě nesprávně) a od toho okamžiku jsem se příliš bál dalšího postupu, abych si tu jednu stranu "nerozbil". A protože kostka patřila mým bratřím, po přestěhování se do Čech jsem ztratil možnost si na kostku pořádně sáhnout. Abych byl ještě přesnější - nějak jsem si zkrátka vtloukl do hlavy, že pointou existence kostky je přijít na její pravidla a pomocí nich pak kostku složit. Protože na tu první vrstvu jsem přece přišel sám. Ale to byla mylná úvaha. Na to prostě nemám mozek.



Považuji to skoro za povinnost pro každého kluka, bez ohledu na fyzický věk, aby uměl složit kostku. A proto mne samozřejmě trápilo, že jsem se tomu dosud nenaučil. Je tomu asi tak rok, možná dva, co jsem si někde u vietnamců koupil svou vlastní kostku - poprvé v životě - v ceně 29 káčé. Umíte si doufám představit, že díky mechanické nekvalitě objektu se jakékoliv seriózní pokusy o složení nemohly zadařit, ale i tak - opět jsem skončil u jedné strany. A tak jsem napsal Ježíškovi.

A Ježíšek doručil krásnou kostku! Takřka závodní, s možností kalibrace tuhosti a s možností vyměnit pružinky uvnitř těla!

A tak jsem si den po Vánocích otevřel na internetu návod a začal jsem se učit krok za krokem jeden z těch jednodušších a zdlouhavějších návodů.

Rubikova kostka je uváděná jako příklad permutací, případně ji najdete jako vzor teorii grup (Group Theory). Jde o objekt, který se může nacházet vždy v jednom z 43x10^18 stavů, přičemž jenom jeden stav je považovaný za složený. Toto ohromující číslo je krásným kontrastem k faktu, že objekt v naší dlani má celkem pouze 20 pohyblivých prvků, rozložených v síti 3x3x3.


Kouzlo avšak spočívá v tom, že z jakékoliv konfigurace lze kostku složit na 20 tahů či méně, takže i laikovi musí být zřejmé, že existují "fígle", díky kterým lze kostku vždy složit, aniž bychom museli procházet veškeré permutace. Ony fígle v podstatě stojí jedině na tom, že kostka má svá pravidla, přes které nejede vlak. Třeba že jedním tahem měníte stav osmi kostek najednou a že třeba opakováním téhož tahu se nevyhnutelně vrátíte do stejné situace, ze které jste vyšli. Tato jednoduchá pravidla se dají nakombinovat tak, že se naučíte "ukládat" si již správně řazené kostičky do vrstev, kde jim nehrozí nebezpečí rozbití, následně prohodíte potřebné kostičky, a pak si z uložené vrstvy vyvoláte zpátky již dříve postavenou kombinaci.

Složit první vrstvu považuji za skutečně banální záležitost, protože nejste ničím moc omezeni - máte spousty místa, kde je vám naprosto fuk, jak kostičky v ostatních vrstvách micháte, protože se soustředíte právě na tu jednu svou vrstvu a nic jiného. Druhá vrstva - přestože má de facto jen 4 prvky - je už krapínek složitější, ale v zásadě jde o trochu delší variantu téhož, čím jsme dali dohromady vrstvu první.

Při třetí vrstvě ale narážíme na to, že musíme schovávat již hotové kombinace do vrstev, které jsou již rovněž složené. Aby se zabránilo jejich rozbití, jsou tyto pokročilé tahy designované zrcadlově. Nejprve provedete tahy ABCD, následně prohodíte ty kostky, co potřebujete, a jdete zpátky - DCBA - do předchozího stavu. Dojde vám taky, že nelze na kostce prohodit jenom jeden pohyblivý díl, vždy manipulujete se stavem tří dílků. A protože návodů je mnoho, najdete i složitější pohledy na tu samou věc, které vám ale umožní kostku složit nesrovnatelně rychleji. Začátečníkům ale doporučím jít rovnou sem, kde je všechno vysvětleno v šesti krocích a s obrázky.

Dobrá, to byla teorie, co ale praxe?

V praxi jsem se stal na kostce slušný závislák ;). Opsal jsem si na papírek všechny potřebné tahy a začal jsem je zkrátka opakovat. Po dvou týdnech se mi to všechno vrylo do paměti, ale co víc - začal jsem chápat, co zhruba tak s kostkou dělám! V té finální vrstvě je to hodně teoretické, nevím to jistě, co přesně dělá - ale je v tom jistá pravidelnost, díky které mám alespoň pocit, že mám situaci pod kontrolou.


Vřele doporučuji, pro rychlejší chápání pravidel, si jednotlivé kostičky nějak označit, třeba maličkatým lepíkem nebo prostě fixkou (která pak půjde posléze snadno prstem smazat z povrchu). Popište si rohy kostky 1234, proveďte tah R',F,R',B,B,R,F',R,B,B,R,R,U' a pak sledujte, jak se vám z toho udělala jiná kombinace, 3214 třeba.

Jedna věc je ale jasná - aby se to člověk naučil, musí to pořád opakovat. Jedině tak lze dostat do oka grif, díky kterému správně identifikujete, s jakou kostičkou je nyní nejvýhodnější manipulovat a jak ji vlastně rychle letmým pohledem najít. Toto nikterak nesouvisí s postupy, tohle je obecná dovednost, díky které se pak postupy naučíte rychleji. Prostě trénovat dokola, ono to člověku prostě dojde.

Nyní teda umím složit kostku zhruba za dvě minuty, ale rozhodně není mým cílem jít do ligy speedcubingu. Sice mi na jednu stranu přijde fascinující, že někdo umí za pár sekund složit všechno správně, ale popravdě mne ještě více fascinuje, že někdo svede napsat na papír správnou sekvenci tahů, aniž by kostku skládal (rekord je tuším 23 tahů) - v tom vidím hluboké chápání problematiky, které mne fascinuje mnohem více, než samotná rychlost.

Setkal jsem se s dotazem, zda-li mi nyní kostka nepřijde jako nuda, když už ji umím složit. No a tady je právě to kouzlo - kostka začne doopravdy bavit až po té, co se ji naučíte skládat. Protože teprve nyní se cítím dost silný v kramflecích na to, abych zkoumal další vztahy mezi jednotlivými vrstvami dílků a hledal zlepšováky a urychlovače k metodě, se kterou jsem začal. Samozřejmě mi je jasné, že dalším velkým krokem bude učení se pokročilých algoritmů, ale už nyní mám z kostky obrovskou radost.

Najednou se jí člověk nebojí, nepřijde mu nemožná! A dokonce mne baví, jak snadno lze na kostce vytvořit různé vzory, jako šachovnice, prohození středů, různé "grafy" a podobně. A je docela zábava to vysvětlovat dalším lidem, aby se naučili kostku skládat, protože i po těch desetiletích existence přijde lidem pořád fascinující, že se někdo naučil kostku skládat. A to bez ohledu na to, že existují mnohem komplikovanější a větší hlavolamy. Rubikovka je naprostým základem pro všechny.

A navíc je to vskutku nádherný objekt! Strašně se mi líbí volba materiálu, lesku, barvy a celková harmonie vzhledu, ať už se kostka nachází v jakémkoliv stavu. Dívám se na ni, když ji mám položenou na stole a jsem doslova fascinován její vnější i vnitřní krásou.

Superflip - kostka naruby. A na 20 tahů ji vrátíte zpátky, úžasná konfigurace!

Nyní jsem dospěl do fáze, kdy už musím žádat náhodné lidi, aby mi kostku zamíchali - protože když si kostku míchám sám, nevědomky dělám pohyby příliš symetricky, takže to pak připomíná karty rozdané v Mariáši. A navíc mám velkou radost, když při skládání udělám nějakou chybu, protože pak mám před sebou nečekanou situaci, ze které se snažím vybruslit nějak elegantně, aniž bych musel začít úplně od nuly, tj. od skládání bílého kříže (ale začít se dá libovolnou barvou, jistě).

Moje hlavní motivace je ale jinde. Velice se mi líbí práce komediálního matematika Matt Parkera, který používá Rubikovku jako pomocníka při prezentacích (Co dělat ve čtvrté dimenzi je praktická ukázka, ale hovoří o tom hezky i jinde) - skládá kostku během výkladu k tématu. Přijde mi to jako skvělý nápad, protože Rubikovka je natolik abstraktní, že k ní lze přirovnat snad jakýkoliv problém. Takže tohle je můj cíl jakbysmet - vzít libovolnou prezentaci a vložit do ní kostku, jako "důkazní materiál", že všechno jde, když se chce a tak dále. Cítím v tom velký prezentační potenciál a těším se na to, až někdy v půlce února vystoupím před publikum a pohovořím o DevOps a automatizaci ;).

Co říci závěrem? Rubikova kostka je vynikající způsob, jak si osvěžit tu část mozku, kterou jste už zatraceně dlouho nepoužili. Naučit se ji je mnohem jednodušší, než si myslíte a hlavně je zábavnější, než si myslíte. Pořád si myslím, že každý správný kluk i holka by měli alespoň jednou v životě Rubikovku složit. A já sám, když už umím základ, se těším na nové triky, jak této perfektní pomůcky využít k učení se nových věcí a nových směrů uvažování. To nám ten rok 2016 pěkně začíná!