Pátá série třicátého druhého ročníku KSP

Poslední letošní série tohoto jubilejního 25-tého ročníku KSPčka se vám právě dostává do rukou. I když venku stále řádí pandemická doba, tak doufáme, že se s mnohými z vás uvidíme na podzimním soustředění – pokud se tedy chcete účastnit, tak máte poslední šanci získat ještě nějaké body.

V této sérii namísto seriálu přibalujeme interaktivní úlohu, kde budete muset z našeho serveru získat správné informace. Zapojit se může každý, tak toho využijte! Mimo to série obsahuje další čtyři teoretické a jednu praktickou úlohu. Kuchařku tentokrát nepřibalujeme, ale můžete se podívat do kuchařky minulé série, mohla by se vám hodit i v této.

Připomínáme, že se z každé série stále započítává 5 nejlépe vyřešených úloh (tedy nemusíte vyřešit úplně všechny a i tak můžete dosáhnout na plný počet bodů). Také se vám body za úlohy přepočítávají podle vašeho služebního stáří – na přesnou definici se podívejte do pravidel na webu.

Díky řešení KSP se také můžete vyhnout přijímacím zkouškám na MFF UK! Stačí, když získáte alespoň polovinu bodů z ročníku (tedy 150 bodů), a my vám vystavíme osvědčení, díky kterému vás přijmou na MFF bez zkoušek. Také každému řešiteli, který v tomto ročníku z každé série dostane alespoň 5 bodů, darujeme KSP propisku, blok a placku.

Termín odeslání Vašich řešení této série je neděle 21. června 2020 ve 32:00 (tedy další ráno v 8:00). Řešení můžete odevzdávat jak elektronicky, tak klasickou poštou na známou adresu.

Dotazy ohledně zadání můžete posílat na adresu ksp@mff.cuni.cz, nebo se ptát přímo na diskusním fóru KSP.

Odměna série: Sladkou odměnu si vyslouží každý, kdo získá z této série alespoň 42 bodů

Zadání úloh

Minulý díl skončil ve chvíli, kdy posádka servisní hlídkové lodi Hefaistos přemohla osazenstvo tajné základny, odkud se řídily iontové bouře, a vzali do zajetí zaměstnance nějaké korporace, která nezákonně prováděla tyto testy.

Bohužel Hefaistos byl těžce poškozen a havaroval, hlavní základna kolonie s druhým subprostorovým vysílačem byla smetena iontovou bouří a před posádkou stálo rozhodnutí, co dělat dál. V anketě jste rozhodli, že by se měli pokusit „opravit naší loď pomocí lepící pásky a kladiva.“

* * *

„Hefaistos už znovu nepoletí kapitáne, na to nemáme dost lepící pásky…“ oznámil hlavní inženýr McCormack po tříhodinovém průzkumu následků havárie. „V podstatě všechno, co je ze hangárem se skladištěm dál, je na odpis – fúzní reaktor jsme vystřelili sami, motorovou sekci nám prostřelili oni,“ kývl směrem k místnosti se zajatými vědci korporace, „a zbytek zničil výbuch fúzního reaktoru. Subprostorový vysílač je taky na maděru a jedeme ze záložního zdroje energie u můstku.“

„A co ta jejich loď v hangáru?“ zeptala se kapitánka Laren svého jediného mimozemského člena posádky.

„Hangár to schytal troskami z Hefaista, ale věřím, že na tohle dost lepící pásky mít budeme,“ řekl Zax. „Ale dostaneme se s ní nejdál na oběžnou dráhu, je to jenom podsvětelná loď krátkého dosahu… a navíc, když jsme se s Jasonem zkoušeli dostat do jejích systémů, tak jsme zjistili, že je jeden z místních stihl poškodit – asi nám nechtějí ulehčit práci a doufají, že sem přiletí jejich korporace dřív, než se tu po nás bude shánět nějaká loď koloniální flotily.“


Teoretická úloha32-5-1 Poničený zdrojový kód (10 bodů)


Posádka Hefaista by chtěla zprovoznit malou loď, kterou našli, aby měli alespoň nějaký dopravní prostředek na orbitu. Bohužel původní majitelé stihli poškodit programování lodi a to je potřeba opravit.

Poškození programování lodi je v podstatě jednoduché – ve zdrojovém kódu došlo k otočení některých složených závorek označujících bloky kódu na opačné složené závorky (z { se tak mohlo stát } a naopak).

Vaším úkolem je vymyslet algoritmus, který dostane na vstupu posloupnost závorek (třeba }}{{}{}}}}}}) a nalezne co nejmenší množinu závorek, kterou je potřeba otočit na opačné, aby byl celý „program“ správně uzávorkovaný.

Správně uzávorkovaný program vypadá tak, že každá otevírací závorka má párovou zavírací závorku napravo od ní, každá zavírací závorka má obdobně párovou otevírací závorku nalevo od ní a páry závorek se nekříží.

Například pro vstup }}{{}{}}}}}} je jednou z možností, která otočí co nejméně závorek, tato:

}}{{}{}}}}}}
           
}}{{}{{}}}}}
           
}}{{}{{}}}{}
           
{}{{}{{}}}{}

Zax snad už posté odklep kompilaci programu… a najednou se řídící program malého raketoplánu zkompiloval bez jediné chyby.

Zprovoznění raketoplánu byl první krok jejich plánu. Došli k tomu, že vzhledem k malému množství zásob mají šanci na přežití jen tehdy, pokud se jim povede vyslat volání o pomoc na Antarax – nejbližší velkou kolonii – kde by mohla být k dispozici nějaká další loď. K tomu ale potřebovali zprovoznit alespoň nějaký provizorní subprostorový vysílač.

Vzhledem k relativně nepoškozeným skladům a dílnám na jinak zničeném Hefaistu se rozhodli zřídit svoji hlavní základnu zde. Potřebovali ale nějaký dopravní prostředek, aby se pokusili zachránit alespoň nějaké vybavení a zásoby ze zničené kolonie.

Mezitím, co Zax s Jasonem napravovali řídící program cizího raketoplánu, tak hlavní inženýr s pár technicky zručnými kolonisty dávali alespoň trochu do kupy hlavní elektrickou síť Hefaista, která celá vyhořela při nouzovém přistání. Potřebovali dostat elektřinu ke všem strojům v dílně.


Teoretická úloha32-5-2 Propojovací kabely (11 bodů)


Hlavní inženýr a jeho pomocníci by potřebovali zapojit všechny elektrické spotřebiče v dílnách do elektrické sítě. Mají už naplánovaný plán zapojení, který tvoří strom. Co ale ještě nerozhodli je to, kde povede jaký typ kabelu.

Bedna s běžnými prodlužovacími kabely se jim bohužel ztratila při havárii, takže jim zbyly jenom propojovací kabely, tedy kabely, které mají na opačných koncích vždy rozdílné konektory (takže mají třeba kabely typu schuko-USB, RJ45-HDMI, jack-USB a podobně :-)). Kabelů pro libovolnou kombinaci různých konektorů máme neomezeně, jenom nemáme ani jeden kabel se stejnými konektory na obou koncích.

Do jednotlivých vrcholů stromu pak musíme umístit uzly pro propojení kabelů. Uzel má vždy konektory jenom jednoho typu (tedy je to třeba USB uzel, schuko uzel, RJ45 uzel, …). Uzlů je také neomezené množství, ale jednotlivé typy uzlů mají rozdílnou cenu.

Vaším úkolem bude vymyslet algoritmus, který dostane na vstupu ceny různých typů uzlů a naplánovaný strom zapojení, a nalezne nejlevnější rozmístění uzlů do jednotlivých vrcholů zadaného stromu.

Výstupem by tedy měla být informace, jaký typ propojovacího uzlu umístit do jakého vrcholu stromu tak, aby sousední uzly nikdy nebyly stejného typu (aby šly navzájem propojit dostupnými kabely), ale zároveň aby součet ceny všech použitých uzlů ve stromě byl co nejmenší.

Po celém dni těžké práce se další den vznesl malý raketoplán k obloze, aby přelétl k troskám hlavní základny kolonie na opačné straně planety. Na jeho palubu naložili nějaké základní opravárenské vybavení a robota na odklízení trosek. Cestou se ještě zastavili u malé tajné základny v horách (viz druhý díl příběhu) a vyložili zde počítačového specialistu Jasona spolu s jedním kolonistou, aby zkusili vytáhnout nějaké další věci ze zdejšího počítače.

Pak už se přiblížili k bývalé kolonii. Iontová bouře po zkolabování štítových emitorů udělala z celé základny a všech jejích budov pole trosek. Všichni ale doufali, že alespoň v podzemních prostorách se dochovalo něco použitelného. Mezitím, co se posádka raketoplánu dala do odklízení a prozkoumávání trosek na povrchu, tak automatický robot na odklízení trosek vjel skrz přístupovou rampu do podzemí základny. Bohužel zde byla spousta místa zavalená zříceným stropem, ale robot na odklízení trosek měl na tyto účely dostatečnou zásobu demoličních náloží.


Teoretická úloha32-5-3 Bomberman uklízí efektivně (12 bodů)


Robot na odklízení trosek vjel do podzemních prostor základny, které si můžeme představit jako mapku na čtverečkovém papíru. Prostory obsahují nosné zdi (ty nejdou rozbít), trosky (ty rozbít jdou) a volná políčka (po těch se dá jezdit). Odklízecí robot vždy dojede na nějaké políčko, položí na políčko bombu, poodjede někam dál a pak bombu odpálí. Bomba pak vybuchne ve čtyřech směrech (nahoru, dolů, doleva a doprava) a zasáhne nejbližší neprázdné políčko v tom směru – pokud to je nosná zeď, tak se nic nestane, pokud to jsou trosky, tak se z nich stává volné políčko (a pokud to je robot na odklízení trosek, tak právě spáchal sebevraždu).

Vaším úkolem bude vymyslet algoritmus, který pro zadanou mapu vyrobí posloupnost příkazů, kterými robot na odklízení trosek „odbouchne“ všechny trosky, ale sám přitom neumře (příkazy jsou pohyb doleva, doprava, nahoru nebo dolů o jedno políčko, pak příkaz pro položení bomby a příkaz pro odpálení bomby).

Tato úloha je teoretickou verzí právě běžící opendatové úlohy začátečnické kategorie Bomberman uklízí, u které stačí najít libovolnou posloupnost kroků. Zde po vás ale chceme vymyslet a popsat algoritmus, který nalezne řešení s řádově co nejméně kroky – tedy vaše řešení budeme hodnotit podle toho, kolik řádově musí udělat kroků pro vyčištění libovolné mapy velikosti N×N.

Mělo by jít dosáhnout až řešení, které udělá lineárně mnoho kroků vzhledem k velikosti mapy, ale nějaké body dostanete i za řešení s větším počtem kroků. Nezapomeňte ale dokázat, že vaše řešení odbouchne skutečně všechny trosky (můžete počítat s tím, že to vždy půjde) a pořádně zdůvodněte svůj odhad na počet vykonaných kroků – bez toho vám nemusíme řešení uznat.

Po vyklizení podzemí od trosek se povedlo zachránit nějaké zásoby, bohužel subprostorový vysílač na základně byl totálně zničen a nedalo se z něj zachránit v podstatě nic.

Na okraji základny pod troskami radioteleskopu však pod vyztuženou kopulí našli stále běžící automatický zapisovač, běžící na svoji interní baterii. Po krátkém průzkumu zjistili, že obsahuje stovky terabajtů naměřených dat. Jeden z kolonistů, Kevin, vědec pracující na nyní zničeném radioteleskopu, se dal do rychlé analýzy, jestli jim data k něčemu nebudou.

Zbytek týmu mezitím prohraboval další trosky, když v tom za nimi Kevin s nadšeným výrazem ve tváři doběhl: „Na orbitě něco je… anténa je sice zničená, ale i tak to za posledních pár dnů zachytávalo charakteristický otisk běžícího fúzního reaktoru. Ale vím jenom že tam někde je, musel bych zkorigovat data z více základen.“

Spojení se základnou u havarovaného Hefaista a s tajnou základnou v horách sice nebylo nejstabilnější, rozhodně ne na přenesení několika terabajtů dat, ale na výměnu několika zpráv to stačilo. Na obou zbylých základnách se povedlo objevit v paměti komunikačních systémů podobné skoro neznatelné vzory – teď jen zbývalo nad nimi na dálku provést několik distribuovaných výpočtů.


Teoretická úloha32-5-4 Distribuované počítání (10 bodů)


Každá ze tří základen má u sebe třetinu naměřených dat. Data jsou ale příliš velká na to, aby je bylo efektivní přenést do jednoho místa (jejich vysílání by trvalo několik dní).

Každá základna drží právě N naměřených hodnot. Všech 3N naměřených hodnot jsou navzájem různá čísla a my bychom z nich potřebovali rychle spočítat medián (tedy prvek, který bude v setříděné posloupnosti hodnot přesně uprostřed). Základny mohou mezi sebou vysílat krátké zprávy: do zprávy se vejde jedno číslo (Myšleno rozumně malé číslo, například jedna naměřená hodnota.). A když jedna základna vyšle zprávu, tak ji zachytí obě dvě zbývající.

Navrhněte komunikační protokol (neboli postup, co by měly základny vysílat za zprávy), abychom po co nejmenším počtu kroků mohli jednoznačně určit, jaká hodnota je mediánem všech 3N naměřených hodnot. Řešení budeme hodnotit podle počtu nutných zpráv k vyslání v průměrném a v nejhorším případě. Postup, kdy základny vyšlou všech 3N hodnot jako zprávy, je bohužel příliš neefektivní a nedostanete za něj žádné body.

Tým od místa bývalé kolonie se vydal na cestu zpátky a mezitím se kapitánka s několika zbylými členy posádky sešla nad hlavním displejem na můstku havarovaného Hefaista.

„Podle charakteristiky fúzního reaktoru to je určitě loď. A objevila se tady před 42 hodinami. Nicméně je v totálním rádiovém klidu a její pozici známe jen hodně přibližně.“

„Pokud chceme zjistit, co je to přesně zač, nebo pokud se na ní chceme dostat, tak potřebujeme její pozici znát přesněji. Nějaké návrhy?“ rozhlédla se kapitánka po své posádce.

„Ten jejich raketoplán prakticky žádnou senzorovou výbavu nemá… a naše senzory, tedy ty zbytky, co přežily havárii, na něj nedostaneme, to by bylo na tak měsíc kalibrování. V loděnici možná týden, ale loděnici tu nemáme.“

„A co ty družice na oběžné dráze, nemohly by nám s detekcí nějak pomoci?“ ozval se jeden z přihlížejících kolonistů.

Chvíli bylo ticho, ale pak hlavní inženýr McCormack udeřil do stolu: „Jasně, u družic známe jejich přesné pozice, a tak je použijeme jako majáky. Aby moc nerušily, tak po nich navážeme komunikační linky po minimální kostře a… to půjde kapitáne. Jenom budu potřebovat pro jejich nakalibrování spočítat několik dalších koster, ať víme, jak se to chová.“


Praktická opendata úloha32-5-5 Druhá kostra (14 bodů)


Hlavní inženýr McCormack je opět v nesnázích a potřeboval by vaši pomoc. Jeho úkolem je udělat kalibraci družicové sítě, aby ji mohli použít pro detekci neznámé lodě na orbitě.

Družice představují vrcholy grafu a komunikační linky mezi nimi pak hrany. Jednotlivé komunikační linky jsou navíc ohodnoceny množstvím energie potřebném pro jejich provozování.

Hlavní inženýr plánuje družice spojit do minimální kostry (tedy určit množinu komunikačních linek s co nejmenší energií spojující všechny družice), ale pro správnou kalibraci by zároveň potřeboval vědět, jak vypadá druhá nejlehčí kostra. A to bude úkol pro vás.

Druhá nejlehčí kostra je kostrou grafu (tedy stále spojuje všechny jeho vrcholy), která je nejlehčí ze všech koster, které se neshodují s minimální kostrou (tedy mohou mít nějaké hrany stejné jako minimální kostra, ale ne všechny). Jen pro úplnost doplňujeme, že váha kostry je součet ohodnocení všech jejích hran.

Abychom se vyhnuli krajním případům, tak v zadaném grafu družic a komunikačních linek budou všechna ohodnocení hran (komunikačních linek) navzájem různá a graf bude souvislý. Pokud i tak naleznete více druhých nejlehčích koster, můžete si vybrat libovolnou z nich.

Kuchařková úlohaPokud si potřebujete osvěžit techniky pro hledání minimálních koster, nahlédněte do kuchařky o minimálních kostrách, kterou jsme přibalili k minulé sérii. A dále by vám k řešení této úlohy mohl pomoci některý ze seriálů KSPčka z posledních pěti let – najdete je všechny na webu KSP v sekci Encyklopedie.

Toto je praktická open-data úloha. V odevzdávacím systému si necháte vygenerovat vstupy a odevzdáte příslušné výstupy. Záleží jen na vás, jak výstupy vyrobíte.

Formát vstupu: Na prvním řádku vstupu dostanete dvě čísla N a M oddělená mezerou udávající počet družic a počet komunikačních linek mezi nimi. Na dalších M řádcích pak dostanete vždy trojici čísel a, b a e oddělených mezerou, které říkají, že mezi družicemi a a b je obousměrná komunikační linka, na kterou je potřeba e energie (1≤ e≤ 109). Družice i hrany indexujeme od nuly a všechna e budou navzájem různá.

Formát výstupu: Na první řádek výstupu vypište váhu vámi nalezené druhé nejlehčí kostry. Na druhý řádek pak vypište indexy komunikačních linek, které jsou součástí vaší druhé nejlehčí kostry (indexujeme podle pořadí na vstupu od nuly). Upozorňujeme, že váha kostry se nemusí vejít do 32-bitového typu.

Ukázkový vstup:
4 5
0 1 1
1 2 2
2 3 3
3 0 4
0 2 8
Ukázkový výstup:
7
0 1 3
Situace z příkladu

Nejlehčí kostra obsahuje hrany s energiemi 1, 2 a 3. Druhá nejlehčí používá energie 1, 2 a 4. Hranu s energií 8 se určitě nevyplatí použít.

Zatímco se raketoplán vracel ze zbytků kolonie, byly družice na oběžné dráze spojeny do komunikační sítě a nakalibrovány i podle druhé nejlehčí kostry. Pak již zbývalo jen namontovat na raketoplán primitivní vysílač, kterému posádka začala přezdívat „sonar“, a všechno bylo připraveno.

Hlavní inženýr McCormack to všem přiblížil svou vzpomínkou na mládí: „Za mlada jsme v asteroidovém pásu u Nového Skotska hrávali takovou obdobu staré pozemské hry Geocaching. No a tam taky byly ukryté poklady, kde u některých jsme souřadnice věděli a u některých, u těch placených, jsme věděli jen, že existují. Ale pozice těch skrytých šlo získat i jinak…“


Praktická opendata úloha32-5-6 Geocaching s odhadem (13 bodů)


Mladý McCormack, tehdy ještě student fakulty Multidimenzionální Fyziky a Fúze, žil dobrodružným životem a velmi rád hledal ukryté poklady ve vesmírné obdobě staré hry Geocaching, kde se hledaly poklady – kešky – podle souřadnic. Část kešek byla přístupná veřejně a každý si mohl jejich pozice zobrazit na mapě hvězdné soustavy, část jich ale byla placená a jejich pozice byly dostupné jenom platícím uživatelům. McCormackovi se ale platit nechtělo.

Zjistil však, že API herní mapy při dotazu na obdélník souřadnic – výřez mapy – vrátí až 500 nejbližších kešek seřazených podle vzdálenosti od středu zadaného obdélníku. U běžných kešek odpověď obsahuje jejich souřadnice a vzdálenost od středu výřezu mapy, u placených ale tyto informace zatají. Pokud je ale placená keška vzdáleností mezi dvěma normálními, tak se dá její vzdálenost odhadnout vzdáleností těchto dvou normálních kešek, a posunutím výřezu mapy lze také přiblížit její souřadnice.

Pokud pak provedete více dotazů z různých míst, tak můžete pozici takové placené kešky celkem dobře určit.

Tato úloha je interaktivní – dostanete k dispozici server, na který můžete s vygenerovaným tokenem (detaily viz níže) posílat dotazy a on vám bude vracet odpovědi. S jedním tokenem budete moci poslat nejvýše 5000 dotazů a vaším úkolem bude nalézt co nejvíce placených kešek a odevzdat jejich souřadnice s odchylkou nejvýše 0.00001 v každé ze souřadnic od souřadnic reálných. Mapa je pro každý token unikátní, můžete to tedy zkoušet vícekrát, jen musíte vždy začít zjišťovat informace znovu.

Technické detaily

Toto je praktická open-data úloha. V odevzdávacím systému si necháte vygenerovat vstupy a odevzdáte příslušné výstupy. Záleží jen na vás, jak výstupy vyrobíte.

V souboru se vstupem dostanete výše zmiňovaný token. Jako výstup odevzdávejte soubor se seznamem lokalizovaných placených kešek, každou na jeden řádek ve formátu lon lat guid, kde lon je zeměpisná délka, lat je zeměpisná šířka a guid je identifikátor placené kešky.

Ukázkový vstup:

eyJ0eX..m6E
Ukázkový výstup:
8.242733 10.718694 3392aa2d-9ff4-4718-8168-caac341595cf
8.62143 3.50012 01969818-3e19-4004-a781-d5b7d3a82764

Server, s kterým budete komunikovat je webový a naleznete jej na adrese https://ksp.mff.cuni.cz/api/32-5-6/. Pro všechny požadavky specifikujte token query parametrem ?token=<token>.

K dispozici jsou dva endpointy, oba přístupné HTTP metodou GET. Odpovědi serveru jsou ve formátu JSON.

Prvním z endpointů je /token/status. Ten vypíše zbývající počet požadavků pro token.

Příklad požadavku (HTTP GET):

/token/status?token=eyJ0eX..m6E

Příklad odpovědi (JSON):

{"remaining_uses":12}

Druhým endpointem je /map/caches, který vypíše kešky ve výřezu mapy specifikovaném minimální a maximální zeměpisnou šířkou (lat) a délkou (lon). Maximální šířka i výška výřezu mapy je omezená na jeden stupeň. I v takovém jednostupňovém výřezu už se může nacházet tisíce kešek, což je více než limit kolik API vrací (API vrátí 500 kešek nejbližších středu výřezu).

Stejně tak jsou souřadnice (lat i lon) omezeny do rozsahu od -5000 do 5000, dále mapa nesahá. Doporučujeme se držet blízko středu. API vrací pro běžné kešky dist, jejich euklidovskou vzdálenost ve stupních. Vzdálenosti jsou tedy počítány v rovině, žádné zakřivení zde není.

Příklad požadavku (HTTP GET):

/map/caches?min_lon=8.5&max_lon=9&min_lat=3.2&max_lat=3.8&token=eyJ0eX..m6E

Příklad odpovědi (JSON):

[{
  "lon":8.612847283249843,
  "lat":3.502198688487054,
  "dist":0.013034067590925793,
  "guid":"ddf758a2-6e0c-497f-9b0c-66e8d37a3ef2"
},
{
  "lon":null,
  "lat":null,
  "dist":null,
  "guid":"01969818-3e19-4004-a781-d5b7d3a82764"
},
{
  "lon":8.630878819665622,
  "lat":3.4931887828703307,
  "dist":0.031621103439467516,
  "guid":"357428fb-037e-4adf-912c-f8bd59e43393"
}]

Všimněte si druhé kešky, která má null pro souřadnice a vzdálenost. Jde totiž o placenou kešku, a právě pro takové chceme odhadnout jejich pozice.

Pro získání plného počet bodů je potřeba zaměřit alespoň 100 placených kešek. Při menším počtu získáte poměrný počet bodů.

Disclaimer: Prosím nezkoušejte podobné postupy na oficiální Geocaching API – podobný postup by provozovatelé jistě neocenili a kdyby zjistili, že je masivně zneužívaný, mohlo by dojít ke zhoršení situace pro všechny. A to by nikdo nechtěl.

Raketoplán se „sonarem“ provedl několik manévrů na orbitě a na předem vytipovaných místech vyslal impuls, který se odrazil od všech objektů na oběžné dráze. Díky známé pozici družic kontrolovaných posádkou Hefaista se pak povedlo celkem rychle určit pozici neznámé lodě.

Ukázalo se, že je to pravděpodobně malá nákladní loď. Na volání nikdo neodpovídal. Po rychlé poradě se do raketoplánu nalodili oba mariňáci a několik dalších členů posádky Hefaista a připravili se k vniknutí na cizí loď. Museli se prořezat skrz vstupní dveře přechodové komory a pak už vstoupili do samotné lodě.

Systém podpory života byl deaktivovaný a podle všeho loď letěla na automatiku úplně bez posádky. Ve skladech pak objevili podivné zásoby.

„Kapitáne, vypadá to, že to měla být zásobovací loď pro tu tajnou základnu, proto nereagovala na žádné vysílání a má i deaktivovaný odpovídač. Našli jsme tu spoustu emitorů, které používali na řízení těch iontových bouří, a taky nějaké zásoby jídla,“ mariňák Drake se na chvíli odmlčel, tohle si chtěl užít. Pak dodal: „Mimo jiné asi dvě stě padesát kilo vanilkové zmrzliny.“

Další den se nesl v duchu oživování systémů podpory života a vykládání skladů kvůli uvolňování místa pro všechny kolonisty. Všichni spěchali, protože nikdo nevěděl, jestli náhodou nedorazí původní majitelé lodě a experimentů na planetě. Během 36 hodin upravili loď, naložili, co chtěli naložit, a vyrazili pryč.

Kapitánka Laren si oddechla až ve chvíli, kdy ukořistěná loď překročila bariéru přechodu do subprostoru na hranici soustavy. Třítýdenní cesta na Antarax bude sice drsná, ale zásoby jídla a kapacita systémů podpory života by jim snad měly vydržet…

Celým letošním příběhem vás provázel

Jirka Setnička