Advent of code

28.12.2021

To mi tak Vláďa někdy 1. nebo 2. prosince poslal odkaz – že se mi to bude líbit, že to bude dobrá zábava a trénink. Takže to byl důvod, proč jsme doma neměli letos cukroví. Je to série „zábavných“ matematicko-programátorských úkolů, které se vám postupně, jak se blíží Štědrý večer, otevírají. Zpestřeno to je tím, že každý den jsou hnedle dvě – nejprve „jednodušší“, a pokud ji vyřešíte, otevře se vám i těžší verze. Další den se vám otevře zadání bez ohledu na to, jak jste předchozí den zvládli. Za každé vyřešené puzzle dostanete hvězdičku a cílem je, získat jich 50. Nechala jsem se nalákat „You don’t need a computer science background to participate – just a little programming knowledge and some problem solving skills will get you pretty far.“ (že není třeba nějakého extra počítačového vzdělání, …) … no s tím, jak jsme se prokousávali adventem, některé úkoly byly jednodušší (tzn. zabraly mi třeba jen pár hodin, rekord byl 30 minut, ale to byla fakt výjimka), následovaly stále těžší (že jsem je třeba dodělala až za pár dní), až po ty, kdy jsem ani nebyla schopná dočíst zadání. Zatímco někteří to řešili asi programátorsky elegantně na pár řádků, já, nezkušená, používala různé vnořené cykly, pomocné funkce, apod. a ne všechna řešení byla efektivní (ale nakonec jsem to vyřešila) – „Nor do you need a fancy computer; every problem has a solution that completes in at most 15 seconds on ten-year-old hardware.“ (že netřeba nadupaný počítač, i starý počítač to zvládne do 15 s) – tak jeden z těch těžších běžel 3 h :-D. Některé úkoly byly stylem „snažila, plakala, nezvládla“. K jiným jsem si musela něco rychle dostudovat (Dijkstra’s algorithm a přizpůsobit).

No, 26.12. mi stále chybí 12 hvězdiček. K některým „lehčím“, nedořešeným, úlohám se stále vracím, protože mi vrtají hlavou a nedají mi spát. Došlo to už tak daleko, že hledám řešení na internetu. Ne že bych to chtěla přímo opsat, ale u některých prostě vůbec nevím kudy. Ledacos jsem musela napsat úplně znovu, jinde vidím, že můj postup byl relativně ok, ale že i ostatní se, například u rekurzí, prostě zamotali stejně , jako já, a že to chce zvolit jiný přístup. Viz den 12, kdy mi první část vyšla, druhou část jsem musela přepracovat, ale pořád tam i tak něco hapruje. Jo, a jinde stačí si správně přečíst zadání.

Takže teď jdu nastudovat BFS (Breadth-first search) a plain depth-first search a uvidíme, jestli to k něčemu bude. Znalost teorie grafů se asi předpokládala sama sebou. Tak to mám jako další čtení (grafy v Pythonu, Programátorská kuchařka z MatFyzu).

Největší radost mám ze dne 21, kdy jsem si napsala pěkné vlastní třídy a funkce a fakt to fungovalo. Bohužel část 2 jsem (zatím) ani nezkusila – už jen přečíst zadání mi dalo zabrat.

Jo a vtipný byl den 23, kdy jsem si vystačila jen s tužkou a papírem a u pohádky jsem jen v telefonu zadala číselné řešení. A bylo to dobře.

Mezi kamarády jsem sháněla někoho, kdo by mi třeba k mému kódu něco řekl, ale jak šel čas, na nějaké konzultace stejně nebyl čas. Ale jeden kamarád se přeci jen „chytil“ a do řešení se pustil též, v jiném programovacím jazyce, ale i tak jsem se alespoň mohla občas ujistit, že to zadání chápu dobře. Ale s blížícím se Štědrým dnem, šel u něho AoC do pozadí a jal se spíš shánět dárky :-).

Na Redditu je k Advent of code prostor pro komentáře, sdílení řešení a rad. Odtamtud jsou také všechny následující (bohužel leckdy až moc pravdivé 🙂 ) obrázky.

Také jsem si leckdy říkala, že tohle nemůžu nikomu ukázat, ale jsem ráda, že daný kód vůbec (správně) běžel :-).
Metoda vedoucí občas neomylně ke správnému výsledku.
Takže ukázkový příklad vyšel … a pak přišla skutečná vstupní data a bylo to ztracené.
Klasika.
Ano, ano, většinou jsem to řešila „bez matematiky“.


Nejlepší na konec – když už s velkou pompou udělám první část, tak velikost vstupních dat pro část dva je jednoduše tak velká, že se prostě musí zvolit jiný přístup a vše. co jsem ten den udělala, můžu zahodit.

30.12.2021

Ten úkol z 12.12. mi prostě pořád vrtá hlavou. Jsem si na 99% jistá, že to mám dobře, ale nevychází to. No a musí se nechat, že sem tam objevím ještě nějakou nazaimplementovanou podmínku :D. Takže jdu nastudovat, jak to udělali jiní. Jsou tací, co na to jdou opravdu sofistikovaně, s vlastními třídami a funkcemi … Ale pak jsem konečně narazila na Anthonyho, který první část sfouknul na 20 řádkách kódu. Tak to jdu pročíst.


3 komentářů

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *