AoC 2020, 1. päev
Ülesanne
Siin: https://adventofcode.com/2020/day/1
Sissejuhatus
Esialgu läks pahasti, ma ei saanud oma sisendit kätte – 503 Gateway Timeout, aga kuna ma mõisa peale ei võistle, siis las ta olla. Teadaolevalt on ainult ühel eelmisel aastal ühe ülesandega olnud selliseid probleeme, mis nõudsid tolle konkreetse ülesande mittearvestamist.
EDIT: Because of an outage during the day 1 puzzle unlock, day 1 is worth no points. Naah.
Vihje
Nagu ikka, on esimesed ülesanded soojenduseks, ei midagi komplitseeritut. Ka sisendi suurus oli minu puhul selline, et ei pidanud mõtlema, kas toore jõuga saab lahendada või mitte – $ 200^3 $ iteratsiooni (teises osas) ei ole liiga palju. Samas on sedatüüpi ülesande lahendamiseks olemas ka paremad viisid, mille arvutuslik keerukus on madalam: https://www.geeksforgeeks.org/find-a-triplet-that-sum-to-a-given-value/ .
Lahendus
Lahenduskäik: https://github.com/fazz/aoc/blob/master/aoc2020/day01.py
Mida Fuglede teeks?
Søren Fuglede Jørgensen lõpetas Advent of Code 2020 üldtabelis 68. kohaga. Tema ametinimetus on LinkedIni andmetel Lead Numerical Specialist ja ilmselt ta seda ka on, sest tema lahendused on väga lakoonilised ja väga huvitavad.
1. päeva lahendus on tal väga sirgjooneline: Pythoni itertools
abil võetakse sisendist vastavalt kas kahe või kolme kaupa väärtusi ning Numpy product
abil korrutatakse neid omavahel läbi vastuse saamiseks. Pythoni standardteegis on olemas sum
, aga product
on puudu (ma suudan välja mõtelda paar head põhjust, miks see nii on, aga need oleks spekulatsioon).
Igal juhul on lahendus väga elegantne, ilmselt mitte üldse aeglasem kui hunnik for
-tsükleid ning kindlasti kiirem valmis kirjutada, kui tööriistu tunned.