Den, ve kterém nenapíšete ani jednu řádku kódu v C/C++, Pythonu nebo alespoň Javascriptu, je zcela promarněný! Naštěstí se nám blíží Vánoce, které můžete opět odpočítávat v adventním kalendáři pro domácí i profesionální kodéry Advent of Code.
Namísto čokolády dostanete každý den dva úkoly, které musíte vyřešit. A jelikož hned ten první vyžaduje porovnání zhruba 2 000 hodnot, ručně a s kalkulačkou v ruce to dělat určitě nebudete. Napíšete si na to raději nějaký program.

První adventní kvíz
Po přihlášení skrze GitHub nebo jinou službu po vás dnes autoři chtějí, abyste spočítali, kolikrát se v řadě 2 000 různých čísel za sebou (po řádcích) zvýší hodnota oproti předchozím řádku.
Takže třeba v řadě:
1
3
8
2
5
By byla odpověď: 3
Jelikož musíme podobným způsobem přelouskat rovnou 2 000 hodnot, stačí si napsat skript třeba v Pythonu. Běhové prostředí ani nemusíte instalovat, dobře totiž poslouží některý z mnoha interpretů přímo na webu. Třeba ten na adrese programiz.com, který nevyžaduje registraci.
Každý přihlášený uživatel adventního kalendáře dostane vlastní vygenerovanou řadu čísel a za správné vyřešení získá první zlatou hvězdu.
Počítadlo v Pythonu
Narychlo zbastlený kód v Pythonu 3, který řadu projde a spočítá, kolikrát se hodnota zvýší oproti té předchozí, by mohl vypadat třeba takto:
# Uryvek ciselne rady po radcich
data = """188
192
196
198
199
8679
8687
8688
8676
8704
8711
8710"""
# Rozdelime hodnoty do pole podle radku
hodnoty = data.split("\n")
# Pomocna promenna pro pocitani hodnot, ktere se zvysi
pocitadlo = 0
# Projdeme pole polozku po polozce,
# ale zacneme az tou druhou v poradi (na 1. indexu)
for i in range(1, len(hodnoty)):
# Pokud je ciselna hodnota na indexu i vyssi nez na indexu i-1
# zvys hodnotu promenne pocitadlo
if int(hodnoty[i]) > int(hodnoty[i-1]):
pocitadlo += 1
# A nakonec napiseme vysledek
print(f"Hodnota se zvysila {pocitadlo}x")
A takhle bude spuštění kódu ve webovém běhovém prostředí Pythonu na adrese programiz.com vypadat v mém případě. Jak vidno, počítadlo dosáhlo hodnoty 1655.

Webové běhové prostředí Programiz.com bez potřeby registrace
Zadám jej tedy do políčka pro odpověď pro dnešní adventní otázku...

Vyplnění výsledku
A získám svůj první bod – tedy první zlatou vánoční hvězdičku!

Hurá, mám první bod
Druhý úkol dne je o kousíček složitější
Po úspěšném získání hvězdy čeká na hráče další úkol na podobném principu, který je už ale o něco složitější. Tentokrát musím porovnat velikost po sobě jdoucích součtů tří předchozích čísel:
Takže třeba v řadě:
1
3
8
2
5
Provedu tyto výpočty:
1+3+8 = 12
3+8+2 = 13
8+2+5 = 15
A opět spočítám, kolikrát je číslo (součet) vyšší než ten předchozí.
Správná odpověď je tedy: 2
Používá se stejná číselná řada jako u prvního rébusu, takže narychlo zbastlený kód v Pythonu 3 by mohl vypadat třeba takto:
data = """188
192
196
198
199
8704
8711
8710"""
hodnoty = data.split("\n")
pocitadlo = 0
stara = int(hodnoty[0]) + int(hodnoty[1]) + int(hodnoty[2])
for i in range(2, len(hodnoty)):
nova = int(hodnoty[i]) + int(hodnoty[i-1]) + int(hodnoty[i-2])
if nova > stara:
pocitadlo += 1
stara = nova
print(f"Hodnota se zvysila {pocitadlo}x")
V mém případě je tentokrát výsledek roven 1 683. Po vyplnění výsledku na webu adventního kalendáře získám i druhou zlatou hvězdu pro tento den:

Mise pro 1. prosinec splněna, mám dvě hvězdy
Co by to bylo za adventní soutěž, kdybychom neměli srovnání s ostatními. V sekci Stats se proto dozvíte, kolik hráčů v daný den splnilo obě úlohy (zlatá hvězda), anebo jen jednu (stříbrná hvězda). Jak vidno, okolo půl čtvrté odpolední splnilo kompletní zadání více než 45 tisíc hráčů z celého světa!

Statistika hráčů