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
Vypuklo nám jaro, kytkám vybuchují pupeny, pěstitelům senné rýmy alergické reakce, sem tam bouchne i nějaká ta bomba na letišti, příroda prostě hýří životem, a my bysme si mohli trochu zahýřit také. Základem pozemského života je DNA, nesoucí informace o všech našich předcích a jejich vlastnostech. Základem lidského vědění je znalost minulosti, takže se opět vrátíme do počítačového pravěku, ještě před vznik elektronkových dinosaurů, do doby mechanických trilobitů a reléových měkkýšů.
Ještě než vznikly první elektronické počítače, hledali vědci způsoby jak napodobit fungování přírodních mechanizmů. Alan Turing ve třicátých letech vymyslel svůj hypotetický stroj, který na základě zápisů a čtení nekonečné pásky měl simulovat konverzaci člověka tak, aby jeho lidský protějšek nedokázal poznat zda hovoří s člověkem nebo se strojem. A v roce 1940 John von Neumann (tvůrce dnes nejpoužívanější koncepce počítačů) navrhl buněčný automat, simulující dvourozměrnou plochu obydlenou jednoduchými tvory, a různé vztahy mezi nimi ovlivňující jejich životy.
Po počátečním zaujetí zájem o tuto vědní disciplínu trochu opadl, přišla válka a po ní jaderné zbrojení, hony na neexistující čarodějnice a konzumní boom, počítače stály miliony dolarů a sloužily hlavně armádě a bankám, a ty pro podobné hrátky neměly pochopení. Až když se rozšířily levné minipočítače umožňující hrát si se softwarem kdejakému studentíkovi, začaly vznikat podmínky pro rozvoj různých "nesmyslů". Jeden takový vznikl v roce 1970, kdy matematik John Horton Conway publikoval článek o jednoduchém buněčném, automatu, který nazval jednoduše - Život. Prakticky okamžitě vypukl větší poprask než kolem současné uprchlické krize, tisíce lidí se snažily a dodnes snaží najít nejrůznější životachopné vzory, vycházel dokonce specializovaný časopis věnovaný pouze této hře. Něco podobného později dokázala až Rubikova kostka. Takže letošní jaro přivítá:
Game of Life - Hra Život
Existuje řada různých variací této hry, ale ta nejzákladnější má úplně jednoduchá pravidla:
- Hraje se ve čtvercové síti, kde každá buňka má osm sousedních polí.
- Živá buňka, která má dva nebo tři sousedy, zůstává naživu.
- Živá buňka, která má méně než dva nebo více než tři sousedy, umírá.
- Mrtvá buňka, která má právě tři sousedy, oživne.
- Změna stavu nastává ve všech polích současně!
Milovníci této hry vymysleli a pojmenovali různé prvky, které mají různé chování. Netrvanlivější jsou zátiší, která si jen tak existují a nic nedělají. Nejjednodušší je Blok:
Zajímavější jsou oscilátory, které mění svůj stav pořád dokola s různou periodou. Ty začínají od prostého Blikače:
Pohybující se objekty se nazývají Hvězdné lodě. Ten nejslavnější je Kluzák (Glider). Stal se symbolem hackerské kultury, znakem pravých hackerů, těch v původním slova smyslu, kdy se tak označovali skuteční mistři hardwaru i softwaru, schopní vyždímat ze strojů, které znali do posledního bitu i tranzistoru, neuvěřitelné výkony přesahující jejich možnosti. Rozhodně ale mezi nositele tohoto označení nepatří nedoučenými pisálky chybně pojmenovaní dnešní "hackeři", kteří si svoje komplexy a malé pindíky kompenzují nabouráváním se do cizích počítačů a ničením dat v nich. Hacker tvoří, neničí! A Kluzák se pohybuje šikmo stále stejným směrem:
Některé oscilátory dokáží vytvářet pohybující se prvky, ty se nazývají Děla:
Některé hvězdné lodě se pohybují po ploše a zanechávají za sebou stopu jako parní lokomotiva, těm se říká Kuřáci. A další a další, je jich ještě hodně a koho to zajímá může nakouknout třeba na Wikipedii, odkud jsem si vypůjčil nějaké ty informace a obrázky.
Takže v tuhle chvíli je už asi zbytečné říkat že úkolem pro dnešní bit je naprogramovat vlastní implementaci hry Život podle výše uvedených pravidel. Je to ta nejjednodušší a nejzákladnější verze oblíbené hry matematiků a hackerů, a dá se naprogramovat na pár desítek řádků v jakémkoliv jazyce, včetně šílených obskurností jako je Brainfuck!
https://www.youtube.com/watch?v=kVQquhmJ7K0
Hrací plocha může být libovolně velká, ohraničená nebo nekonečná (toroid), jenom ještě zdůrazním pravidlo 5, které zní: "Změna stavu nastává ve všech polích současně!" To znamená že není možné hrací pole procházet postupně a měnit jednu buňku po druhé, protože tak by se jeho svět choval v různých směrech různě. Je potřeba na to jít jinak, možností je opět víc a každý si může vybrat tu, která mu bude připadat nejlepší.
+-------------------------------+
| Najde se tu opravdový hacker? |
+-------------------------------+