AoC 2020, 16. päev
Ülesanne
Siin: https://adventofcode.com/2020/day/16
Practice what you preach ehk ärge käige mu tegude järgi
Ei ole väga keeruline ülesanne, eriti kui oled lapsena loogilisi elimineerimismänge piisavalt paberi peal teinud (teate küll, need mida praegu Facebookis ringi kedratakse kirjaga “ainult Einstein suudab lahendada” – vanasti tehti selliseid suvisel koolivaheajal ajaviiteks, kui paljakäsi huntide jahtimisest villand sai).
Sellest hoolimata suutsin esimest osa lahendades istutada teise osa jaoks sellise bugiseemne, et lõpuks vaatasin, kuidas andmed enne viimast korrutamist katki on, parandasin käsitsi ära, korrutasin õige tulemuse kokku ja siis hakkasin bugi otsima.
Bugi seisnes selles, et ma kontrollisin, kas vealoendur suurenes ning otsustasin selle järgi, kas konkreetne pilet on vigane või ei. Loomulikult arvasin ma sedasi õigete piletite hulka ka selle, kus ainus vigane väärtus oli $0$ ning kõik läkski kõik pipramaale.
Moraal on vana hea tõdemus, et kõik suured jamad tarkvaraarenduses tulevad sellest, et üht asja üritatakse kasutada kaheks otstarbeks. Päris tobe lugu, arvestades seda, kui tihti ma tööl koodiläbivaatust tehes sellist tähendusega ülekoormamist teistele ette heidan.
See on ka see põhjus, miks ma kirjutan kõik algsed lahendused hästi sõnaohtras Pythonis – GitHubi publitseeritud versioonid on enamasti juba lakoonilisemaks poleeritud.
Esimene osa valmis 7:15, teine osa 8:34.
Lahendus
Lahendus: https://github.com/fazz/aoc/blob/master/aoc2020/day16.py