Vlci a havrani v Core War: když osm instrukcí stačí na favority
Od Darwinu v Bell Labs po naše vlky a havrany. Jak funguje Core War, proč se v paměti střetávají různé strategie a co dokáže osm instrukcí navržených s pomocí AI.

Četl jsem knihu Počítačové viry: analýza útoku a obrana od Petera Szora a zastavil se u části o válkách o jádro. Představa je jednoduchá a pořád krásně podivná: co kdyby spolu nebojovali hráči, ale samotné programy? Každý by se snažil přežít tím, že přepíše kód toho druhého.
Právě na tom stojí Core War, programátorská hra, v níž je vaším bojovníkem krátký kus kódu. Napíšete ho, pustíte do společné paměti se soupeřem a pak už jen sledujete, čí nápad obstojí. Někdo střílí naslepo, jiný nejdřív pátrá, další se zachraňuje tím, že se množí. Vypadá to jako malý digitální ekosystém.
Chtěl jsem zjistit, co s touhle starou hrou dokážeme dnes, když do navrhování zapojíme AI. Výsledkem jsou naši vlci a havrani. (Názvy jsou i malou poctou mojí vlčici Raven.) Jeden z nich má pouhých osm instrukcí, a přesto se dostal mezi favority naší arény. Než ukážu výsledky, stojí za to vrátit se na začátek. Ten příběh je mnohem starší než dnešní jazykové modely.
Experiment z 10. října 2026. Konečné ověřovací výsledky jsme doplnili 11. října. Úvodní ilustrace vlka a havrana vznikla pomocí AI. Skutečné záběry arény a naměřené výsledky najdete níže.
Od Darwinu k vlkům: malá historie bojujících programů
1961: Darwin v Bell Labs. Victor A. Vyssotsky přišel s hrou, v níž se programy utkávají o přežití. Douglas McIlroy napsal rozhodčí program a Robert Morris starší se účastnil hledání úspěšných bojovníků. Hrálo se na IBM 7090. Programy zkoumaly okolí, vytlačovaly protivníky a zakládaly své kopie. Původní dokumenty uchoval McIlroy ve svém archivu.
1984: přichází Core War. A. K. Dewdney, který hru rozpracoval s Davidem Jonesem, ji v květnu představil čtenářům Scientific American. Darwin je její historický předchůdce, nikoli jen starší název stejné hry. Core War přinesl jazyk Redcode a simulátor MARS, tedy Memory Array Redcode Simulator. Slovo core připomíná někdejší paměti s magnetickými jádry. Bojuje se o paměť, ne o jádro operačního systému. Původní články jsou dostupné v archivu komunity.
1985 a další roky: z nápadu se stává soutěž. Vzniká International Core Wars Society. Následují pravidla ICWS ’86 a ’88, turnaje a komunita, která si vyměňuje bojovníky i postupy. Z malé hry postupně vyrostla disciplína, ve které záleží na každé instrukci. Historii shrnuje komunitní FAQ.
1986: první turnaj vyhrávají myši. V bostonském Computer Museum se utkalo 31 programů. Zvítězil MICE od Chipa Wendella, bojovník, který se šířil vytvářením dalších kopií. Autor dostal krásně příhodnou trofej: obsahovala desku s feritovou pamětí z počítače CDC 6600. Kus skutečného „jádra“ za vítězství ve válce o jádro. Dewdneyho dobová reportáž vyšla v lednu 1987 v Scientific American.
1994: bohatší jazyk, důmyslnější strategie. Návrh ICWS ’94 rozšiřuje možnosti práce s instrukcemi a adresováním. Ačkoli nebyl formálně přijat jako nový standard, stal se široce používaným základem dalších simulátorů a soutěží. Na jeho větvi ’94nop stojí i naše aréna. Návrh pravidel je dodnes zajímavou ukázkou toho, kolik taktiky může vyrůst z několika jednoduchých příkazů.
2026: do návrhu vstupují jazykové modely. Projekt Digital Red Queen od Sakana AI a MIT zkoumá, jak mohou modely vytvářet a vylepšovat bojovníky proti rostoucí historii soupeřů. A v říjnu zkouším vlastní, menší experiment: pevnou sestavu protivníků, návrhy s pomocí AI a hodně měření. Odtud pocházejí Vlčí havran (Wolf Raven), Osamělý vlk (Lone Wolf) a Havraní průzkumník (Raven Scout).

Takhle vypadá klasická aréna v pMARS. Barevná mapa ukazuje dění ve společné paměti. Tento snímek zveřejnil Ilmari Karonen v roce 2005; zachycuje pozdější simulátor původní hry. Zdroj a autor, licence GNU GPL 2.0 nebo novější.
Aréna, ve které se přepisuje soupeřův program
Představte si společné hřiště s 8 000 políčky. Tak velkou paměť používáme v našem experimentu. Je kruhová: za posledním políčkem se pokračuje zase prvním. V každém je jedna instrukce a dva malé programy se do ní nahrají na různá místa. Předem nevědí, kde soupeř začíná.
Rozhodčí simulátor střídavě vykonává jejich příkazy. Programy mohou číst a přepisovat celé hřiště, včetně protivníkova kódu. Instrukce je tu zároveň zbraň i zranitelné tělo bojovníka. Když soupeř začne vykonávat instrukci DAT, jeho právě běžící proces skončí. Jakmile přijde o všechny procesy, prohrál. Pokud oba vydrží do časového limitu, je remíza.
Program může také vytvářet další procesy nebo se kopírovat jinam. Proto nestačí zasáhnout jedno políčko a slavit. Často potřebujete soupeře nejdřív najít, zpomalit a potom vyčistit prostor, do kterého uniká.
Proces si můžete představit jako prst ukazující na příkaz, který se má vykonat. Více procesů neznamená více tahů pro celý program. Jen se o jeho tahy dělí více takových prstů. Právě to se dá využít: soupeře lze zahltit zbytečnou prací a jeho užitečné části tím zpomalit.
AI v průběhu souboje nic nevymýšlí. Pomáhala nám programy navrhovat a upravovat předem. V aréně pak běží samotný Redcode, malý jazyk podobný assembleru. Žádné další volání velkého jazykového modelu při každém tahu.
Skutečný záběr našeho simulátoru: Kompas v tomto jednotlivém souboji porazil Dwarfa. Modrá a oranžová označují posledního zapisujícího do dané buňky. Obrázek ukazuje průběh hry, sám o sobě nenahrazuje turnajové výsledky.
Kámen, nůžky, papír. Jen trochu záludnější
Zkusme si představit čtyři bojovníky ve stejné tmavé místnosti. Jeden rozhazuje nástrahy, druhý si nejdřív posvítí, třetí pošle do všech koutů své kopie a čtvrtý se pořád posouvá dál. V Core War mají tyhle přístupy konkrétní podobu.
Imp: celý bojovník v jediném příkazu
Začněme tím nejmenším. Imp, česky skřítek, má v tradičním zápisu jediný řádek:
MOV 0, 1
Nula znamená „tato instrukce“, jednička „políčko hned za ní“. Imp tedy zkopíruje sám sebe o místo dál. Tam se přesune vykonávání a všechno začne znovu. V novějším Redcode se plná kopie instrukce zapisuje výslovně jako MOV.I 0, 1.
Tahle malá vlna umí přepsat soupeřův kód. Jenže jeho proces může dál žít jako další Imp, takže z útoku často vznikne remíza. Protiopatřením je Imp gate, obrana opakovaně poškozující políčko v jeho cestě. Jeden řádek tak stačil k rozběhnutí celého závodu ve zbrojení.
Bombardér: zasáhnout dřív, než mě někdo najde
Klasický Dwarf, česky trpaslík, ukládá instrukci DAT do každého čtvrtého políčka. Nemusí vědět, kde soupeř je. Doufá, že některá bomba přepíše příkaz, který protivník brzy vykoná. V klasické podobě si vystačí se čtyřmi instrukcemi: posunout cíl, poslat bombu, skočit zpět a mít připravenou samotnou bombu. Jeho síla je v jednoduchosti, slabina v mezerách mezi zásahy. Drobný cíl může dlouho míjet. V žargonu této rodině říkáme stone, tedy kámen. Dwarf krok za krokem ukazuje, jak málo kódu k takovému útoku stačí.
Skener: nejdřív stopa, potom útok
Skener prochází paměť a hledá odchylky, které mohou prozradit cizí kód. Po nálezu soustředí útok do podezřelého místa. Představte si rozdíl mezi náhodným rozhazováním připínáčků a tím, že nejdřív zjistíte, kudy protivník chodí. Hledání ovšem stojí tahy a nalezená stopa může být jen návnada.
Takzvaný oneshot po prvním úspěšném nálezu přejde do čištění paměti. Často soupeře nejdřív zpomalí pastmi s SPL, které mu množí procesy, a pak dorazí instrukcemi DAT. Tady se pohybují i naši vlci. Pro jednoduchou představu je skener „nůžkami“, které se snaží rozstříhat soupeřovy kopie.
Replikátor: jednu kopii ztratím, další pokračují
Paper, tedy papír, sází na rozmnožování. Kopíruje kód do dalších částí paměti a spouští tam nové procesy. Jednotlivá bomba ho nemusí zastavit, protože jinde už pokračuje další kopie. Není to ale nekonečná nesmrtelnost: kopírování stojí čas a účinný čistič může potomky likvidovat rychleji, než vznikají. Právě sem patří vítězný MICE. Nevyhrál díky velikosti, ale díky tomu, že bylo těžké zlikvidovat všechny jeho potomky. Steven Morrell rozebírá tyto strategie i jejich kombinace.
SPL a Imp spirály: více životů, přesné načasování
Klíčová je instrukce SPL, tedy rozdělení vykonávání. Původní proces pokračuje následujícím příkazem a nový začne na určené adrese. Samotný kód se tím nekopíruje a bojovník nedostane více tahů. O svůj čas se teď dělí více procesů. Je to způsob, jak spustit potomka replikátoru, ale také jak soupeře zahltit zbytečnou prací.
Imp prstence a spirály z toho dělají něco důmyslnějšího: více spolupracujících procesů rozložených po kruhové paměti. Například ve třech ramenech může kopírování přeskakovat o 2 667 políček v paměti velikosti 8 000. Správné pořadí tahů zajistí, že jeden proces připraví instrukci pro další. Není to jen houf nezávislých skřítků. Záleží na rozmístění i načasování.
Velký posun přišel v roce 1992 s programem The IMPire strikes back Anderse Ivnera. Dan Nabutovsky pak v Impressive spojil Imp spirálu s bombardérem. Jedna část pomáhala přežít, druhá ničila soupeře. Morrellův výklad ukazuje i zdrojové kódy. Podobné kombinace vysvětlují, proč pozdější bojovníci přestali zapadat do jediné škatulky.
Upír: místo zničení pošlu soupeře do pasti
Vampire, česky upír, je zvláštní bombardér. Rozhazuje příkazy JMP, tedy skoky, které vedou do připravené pasti. Pokud některý přepíše právě vykonávanou část protivníka, soupeřův proces se nechá odvést jinam.
V pasti může čekat smyčka s SPL, která množí neužitečné procesy. Protivník pak plýtvá vlastními tahy a upír může paměť postupně dočistit. Je to únos řízení programu: nálož nemusí hned zabít, stačí přesměrovat. Ani tato lest není všemocná. Nezasažené kopie mohou pokračovat a soupeř může poškodit samotnou past. Dobové FAQ tuto rodinu popisuje také jako pit-trapper.
Pro orientaci při čtení dalších výsledků:
| Strategie | Co dělá | Kde obvykle narazí |
|---|---|---|
| Bombardér | Rozhazuje ničivé instrukce do paměti. | Může dlouho míjet malý nebo přesunutý cíl. |
| Skener | Hledá stopy a útočí až po nálezu. | Pátrání stojí čas a návnady mohou svést útok jinam. |
| Replikátor | Zakládá další kopie a rozptyluje riziko. | Účinný čistič dokáže kopie postupně likvidovat. |
| Imp | Kopíruje jednu instrukci pořád dopředu. | Umí přežívat, ale časté remízy nestačí na špičku žebříčku. |
| Imp spirála | Koordinuje více pohyblivých procesů. | Je citlivá na správné spuštění a obrany proti Impům. |
| Upír | Skokovými náložemi odvádí cizí procesy do pasti. | Musí udržet past a zachytit i unikající kopie. |
Přirovnání ke kameni, nůžkám a papíru vystihuje hlavně to, že neexistuje strategie nejlepší za všech okolností. Malý bombardér může zasáhnout hledající skener, skener s čističem může pronásledovat kopie a replikátor může přežít rozptýlené bombardování. Konkrétní programy ale tyto role kombinují a výsledek závisí i na rozmístění. V naší původní sestavě se dařilo hlavně skenerům. Je to také prostředí, na které jsme nové bojovníky ladili.
Od knížky k naší aréně
Nechal jsem pracovat agenty v Codexu i Claude Code. Zadání bylo konkrétní: navrhnout bojovníky, změřit je proti pevné sestavě a odevzdat kód i výsledky. Pravidla ani soupeři se během výzvy neměli měnit. Zajímalo mě, jestli AI dokáže nejen napsat přesvědčivě vypadající program, ale také ho poctivě vylepšovat podle toho, co se děje v soubojích.
Osm instrukcí. Tolik má Osamělý vlk (Lone Wolf), který se v našem velkém ověření dostal těsně za stoinstrukčního Vlčího havrana (Wolf Raven) a před původního favorita Kompas. Tohle mě na celém experimentu baví: dobrý nápad se někdy vejde do několika řádků.
Co se nám podařilo:
- Vlčí havran (Wolf Raven) a Osamělý vlk (Lone Wolf) skončili na prvních dvou místech mezi pěti porovnávanými programy proti stejným 25 soupeřům. Každý absolvoval 50 000 zápasů.
- Osamělý vlk (Lone Wolf) potřebuje jen osm instrukcí. Délka programu sama o sobě o jeho síle moc neříká.
- Havraní průzkumník (Raven Scout) porazil Vlčího havrana (Wolf Raven) v 71 ze 100 vzájemných zápasů v jiném, odevzdávacím testu. Nejlepší průměr tedy neznamená vítězství proti každému.
První žebříček: koho bylo potřeba překonat
Nejdřív proběhl úplný turnaj 26 bojovníků, každý s každým. Celkem 32 500 zápasů, na každého bojovníka 2 500. Tady je první desítka:
| Pořadí | Bojovník | Skóre / 100 |
|---|---|---|
| 1 | Kompas | 230,00 |
| 2 | Scanny Boy | 229,12 |
| 3 | Žnec | 211,72 |
| 4 | Rave | 207,48 |
| 5 | Aeka | 197,24 |
| 6 | Fénix | 190,24 |
| 7 | Core Explorer Paper | 180,24 |
| 8 | Hydra | 177,04 |
| 9 | Flash Paper 3.7 | 169,04 |
| 10 | Bastion | 161,84 |
Skóre není procento výher. Za výhru jsou 3 body, za remízu 1 a za prohru 0. Tabulky uvádějí body přepočtené na 100 zápasů, takže maximum je 300. Sto remíz znamená 100 bodů, sto vítězství 300. Právě proto může opatrný přeživší skončit pod bojovníkem, který častěji vyhrává i prohrává.
Vlci a havrani mají různé úkoly
Vlčí havran (Wolf Raven): průzkumník a lovec v jednom. Nejprve rychle prohlédne několik míst, pak přesune bojovou část do jiného úkrytu a hledá stopy soupeře. Po nálezu přepne do útoku: instrukcemi SPL rozmnožuje soupeřovy procesy a zahlcuje ho, následné DAT je ukončují. Má i záložního Impa. Havran a vlk jsou naše přirovnání k částem jednoho programu, nikoli dva jazykové modely, které si při boji povídají.
Vlčí havran (Wolf Raven) vychází z historického programu King Cobra od autora inversed. Naše varianta ladí jeho parametry. Je to důležité přiznat: navazujeme na chytrou konstrukci, neprohlašujeme ji za vlastní vynález.
Osamělý vlk (Lone Wolf): osm instrukcí a málo místa k zásahu. Jeho rodokmen vede od Scanny Boye Davida van Dama přes Kompas vytvořený při práci s Codexem k dalším úpravám v Claude Code. Nepotřebuje složitý úvod. Hledá, najde a čistí. Malý cíl a práce se směrem útoku mu v tomto měření pomáhají zejména proti Impovi a Dwarfovi. Není ale stejně silný proti všem kombinovaným strategiím.
Havraní průzkumník (Raven Scout): udeřit a hledat dál. Vychází z programu CLRSRC autorů Stefana Kammanna a Forge-AI, který navazuje na Eternal Exile od inversed. Po omezeném útoku pokračuje v pátrání. Má 89 instrukcí a odlišné silné soupeře než vlci. Všichni tři ale patří do širší rodiny skenerů. Není to trojice zcela nezávisle vynalezených herních tříd.
Práci jsem zadával v obou programovacích prostředích, ale tohle není kontrolovaný benchmark Codexu proti Claude Code. Lišil se postup, návaznost práce i dostupné podklady. Z výsledků bojovníků nejde odvodit obecného vítěze mezi AI modely.
Druhý žebříček: stejní soupeři pro všechny
Po zmrazení kódu následovalo větší ověření na 1 000 rozmístěních a obou pořadích tahů. Pro hlavní srovnání jsem z uložených výsledků vybral stejných 25 soupeřů pro všech pět programů. Každý tak má 50 000 zápasů:
Graf přibližuje pásmo 225 až 232 bodů, aby byly malé rozdíly vidět. Body označují skutečné skóre, spojnice a pravý sloupec ukazují rozdíl proti Kompasu. Nejde o násobky výkonu; plný rozsah skóre je 0 až 300.
| Pořadí | Bojovník | Skóre / 100 |
|---|---|---|
| 1 | Vlčí havran (Wolf Raven) | 231,17 |
| 2 | Osamělý vlk (Lone Wolf) | 230,85 |
| 3 | King Cobra | 230,32 |
| 4 | Kompas | 226,76 |
| 5 | Havraní průzkumník (Raven Scout) | 226,55 |
Oba vlci se dostali před Kompas i původní King Cobru. Z toho mám radost. Zároveň Vlčí havran (Wolf Raven) vede před Osamělým vlkem (Lone Wolf) jen o 0,314 bodu na 100 zápasů. Tak malý rozdíl bych neprodával jako nezpochybnitelnou nadvládu. Havraní průzkumník (Raven Scout) je v tomto srovnání těsně za Kompasem.
Proč 25 a ne 26 soupeřů? Původní sada obsahuje i Kompas. Pokud bych ho v ní ponechal, náš srovnávací Kompas by hrál také proti vlastní kopii. Odebral jsem proto tohoto soupeře u všech pěti programů stejně. Zbývající souboje ani jejich výsledky se nemění. Původní data pro 26 soupeřů jsou ke stažení níže.
Celkové skóre schová překvapivě hodně
Každé políčko shrnuje 2 000 zápasů. Opět jde o body na 100 zápasů, nikoli procenta výher. Vybral jsem šest soupeřů pro názornost; hlavní žebříček používá všech společných 25.
Vlčí havran (Wolf Raven) například s Impem ani jednou neprohrál, ale 1 607 z 2 000 soubojů skončilo remízou. Přežít umí, jen z toho nedostane tolik bodů jako Osamělý vlk (Lone Wolf). Ten zase ztrácí proti Aece. Tohle je pro ladění užitečnější než samotná informace, kdo skončil první.
Třetí žebříček: když do hry vstoupí i sourozenci
V odděleném odevzdávacím testu hrál každý nováček proti 26 referenčním bojovníkům i dvěma ostatním nováčkům. Na každého připadlo 2 800 zápasů:
| Bojovník | Výhry | Remízy | Prohry | Skóre / 100 |
|---|---|---|---|---|
| Vlčí havran (Wolf Raven) | 1971 | 468 | 361 | 227,89 |
| Havraní průzkumník (Raven Scout) | 2045 | 186 | 569 | 225,75 |
| Osamělý vlk (Lone Wolf) | 1953 | 294 | 553 | 219,75 |
A teď ta hezká zrada: Havraní průzkumník (Raven Scout) porazil Vlčího havrana (Wolf Raven) 71:26, třikrát remizovali. Osamělého vlka (Lone Wolf) porazil 74:26. Vlčí havran (Wolf Raven) zase porazil Osamělého vlka (Lone Wolf) 83:16 s jednou remízou. Havraní průzkumník (Raven Scout) tedy umí lovit naše vlky, ale proti zbytku sestavy to nestačí na nejlepší průměr.
Tento test zahrnuje pouze dvojice s alespoň jedním nováčkem. Není to nový úplný turnaj všech 29 bojovníků. Také proto z těchto čísel nedělám vyhlášení celkového šampiona.
Co nám nevyšlo a proč mě to zajímá
Lákalo nás spojit další části do větší smečky. Jenže programy sdílejí jednu paměť: mohou si přepisovat vlastní úkryty a navzájem se ničit. Více lovců automaticky neznamenalo lepší lov.
Další past byla v testování. Varianta, která vypadala skvěle na malé sadě rozmístění, mohla na jiné ztratit náskok. A pravidelný krok prohledávání se může nešťastně potkat s pravidelně vybranými startovními pozicemi. Pro mě je proto nejcennější celý postup: nápad, měření, hledání slabin, nový návrh a další ověření. Přesvědčivý komentář AI u kódu není náhradou za zápasy.
Hydra a Core Explorer Paper zaplnily arénu svými kopiemi. Barva políčka znamená poslední zápis, nikoli trvalé vlastnictví území. Tisíce procesů vysvětlují, proč jediný zásah nemusí rozhodnout.
Podobnou otázku řeší i výzkum
Core War používá také projekt Digital Red Queen od Sakana AI a MIT: jazykové modely navrhují bojovníky proti rostoucí historii soupeřů. Náš pokus zkoumá příbuznou otázku v menším měřítku: jak se mění dobrá strategie podle prostředí, ve kterém musí uspět?
Naše skóre ale nesrovnávám přímo s výsledky jejich studie. Liší se sestavy, způsob evoluce i hodnocení. Test několika souborů z veřejného repozitáře by také sám o sobě nebyl replikací publikovaného experimentu. Technické podrobnosti jsou v práci Digital Red Queen.
Kam chci pustit smečku příště
Nejdřív do úplného turnaje rozšířené sestavy. Potom proti silným soupeřům, na kterých jsme vůbec neladili. Rád bych zkusil i výběr několika vzájemně se doplňujících bojovníků: třeba se vyplatí mít vedle nejlepšího univerzála specialistu na jeho nejslabší protivníky.
Na tomhle malém světě mě baví velká otázka. Dokážeme s AI nejen rychle vyrábět další kód, ale také poznat, který nápad opravdu funguje a proč? Naši vlci jsou zatím povedená odpověď pro jednu konkrétní arénu. Teď je zajímavé zjistit, co z ní obstojí i za jejími hranicemi.
Výsledky, kód a podmínky testu
- Hlavní srovnání a všechny souboje proti referenční sestavě (JSON)
- Žebříček společných 25 soupeřů (CSV)
- Původní turnaj 26 bojovníků (JSON)
- Odevzdávací test: souhrn (JSON)
- Jednotlivé výsledky odevzdávacího testu (JSON)
- Protokol velkého ověření (TXT)
- Celý balíček dat a našich tří bojovníků (ZIP)
- Redcode: Vlčí havran (Wolf Raven), Osamělý vlk (Lone Wolf), Havraní průzkumník (Raven Scout).
Podrobnější metodika pro zájemce
Používáme vlastní JavaScriptovou implementaci pravidel ICWS ’94nop, nikoli původní binární pMARS. Paměť má 8 000 buněk, limit je 8 000 procesů na bojovníka a 80 000 kol. V souboji dvou programů to znamená nejvýše 160 000 vykonaných instrukcí. Program smí mít nejvýše 100 instrukcí. Body počítáme jako (3 × výhry + remízy) / počet zápasů × 100.
Původní úplný turnaj: seed 6101003, 50 rozmístění, obě pořadí tahů. Odevzdávací test: seed 20261011, stejný počet rozmístění a pořadí. Velké ověření používá zrychlený engine, seed 161803 a 1 000 rozmístění; podle vývojového protokolu byl zrychlený engine porovnán s referenčním na 1 900 zápasech se shodným výsledkem i počtem kroků. Taková kontrola není formální důkaz ekvivalence.
Nová rozmístění omezují přeučení na konkrétní starty. Soupeři ale zůstávají známí, proto nejde o test zobecnění na neviděné strategie. Neuvádíme intervaly spolehlivosti a malé rozdíly nepovažujeme za prokázanou statistickou převahu. Balíček níže obsahuje zdrojové kódy tří variant a výsledky, nikoli kompletní spustitelné prostředí všech soupeřů.



