Tuesday, December 29, 2020

Rattaga lumes

Käisime lastega Lahemaal, kõigepealt Nõmmeveski - Vasaristi lõigul ja pärast Pärlijõe sillalt Kalmeojani (st Viru raba põhjapoolse parklani). Kõikjal olid rattajäljed. Mul hakkas kade, võtsin järgmisel päeval aega ja käisin ise ka metsas.

Kadriorule köige lähem "korraliku reljeefiga päris mets" ongi vist Kodasoo ja Ruu vahel. Maastikul sõita saab muidugi ka Pirital ja Randveres. Aga ma tahtsin puutumatut lund. Ja reljeef on seal tõesti korralik. 

Lund oli küll, aga mets oli rattajälgi täis. Iga saja meetri tagant uus värskelt sõidetud rada. Kes seal nii tiirutab? Jõelähtme rattaklubi ("Jõelähtme singel") vist? Müratud oli korralikult. Tore, et rahvas lund ei karda ja metsas käib! Need rajad seal on mulle natuke liiga tehnilised, aga lõbus oli ikka.

Minu ratas. Canyon hardtail.
Imelik tume pulk downtube peal on rattalukk (korralik, lülidega, raske).

Jäljed - jänes ja mina.

Tänane maastik.
Ratta jäljed on kellegi teise tehtud, mitte minu.
Reljeef Kaberla oja ümber - mitte kõrge, aga järsk ja mügerik

Uusaastaöö oli väga tore, aga läks pikale.
1. jaanuaril oli ülejäänud pere koomas ja ei tahtnud midagi ette võtta. 

Mina aga käisin Kaberla - Kaberneeme kandis sõitmas, ja samuti metsas.
Eesmärke oli mitu:
1) sõita mõni eelmise õhtu kalor maha,
2) teha natuke asjalikum rattatrenn,
3) proovida Endomondo asemel Stravat.

Linnamäelt (Jägala jõe ääres) kuni Haapseni (mere ääres) läheb järsk ja kitsas, oositaoline pinnavorm, mille harjal ja ümber on toredad rattarajad. Sõitsin nende peal, Kaberla oja ääres, Ubari panga serval ja Kaberneeme männimetsa radadel. See kõik on imetore ratta-maastik. Ainus häda oli kruusatee - täiesti jääs (sest autod) ja märgades kohtades nii libe, et isegi käia ei saanud, ammugi tavalise rehviga sõita. 

Kuid Stravas pettusin. See on hirmus ratta-spordi poole kaldu. Proovin mõned korrad veel, aga matkamise jaoks vist ikka ei sobi mitte. 



Monday, December 28, 2020

Jalgratas 2020

Jeerum, milline oivaline hooaeg!!!!!!!!!

Kuusalu kandis, 5. jaanuar

Tahtsin oma 2020 pikemad rattasõidud ja matkad kaardile kanda. Nii suures plaanis. Jõudsin maikuuni, rohkem ei jaksanud. Kaardil on 33 sõitu, ja sealt on välja jäetud mitmed kordused - ümber Ülemiste ringid ja mitmed Sõrves käimised. Lühemad sõidud (tööle-tagasi, lastega jne) veel niikuinii. 

Tulemus-kaart on siin.

Rattasõidud jaanuar - mai

Ehk siis - sõitsin sel aastal rattaga rohkem kui iial varem ja mõnusamalt kui iial varem. 
Panen kirja, mis kõige rohkem meeldis. 

Läti rattamatk. Ise korraldasin - teiste abiga, aga rada & vaatamisväärsused olid minu teha. Neli päeva, 300 km, super seltskond ja imemõnus.

Sõidud sõpradega. Pakri poolsaar, Endla raba ring, Malla-Letipea-Mahu, Nõva-Dirhami, Vasalemma-Klooga, Ojasoo-Triigi-Habaja ja veel palju teisi. Aitäh kõigile, kes kaasas olid!

Maastiku-matkad. Mulle meeldib sõita igal pool, kuid süda kisub ikkagi raba, muda ja juurikate poole. Sõidan hea meelega radadel, kuhu tavaline inimene rattaga ei roni, ja saan läbi igalt poolt. Looduses matkamiseks on see mõtteviis väga sobilik. Viitna-Tapa, Lahemaa, Kaberla, Suurupi, Pahkla, Viljandimaa, Läsna, Vainupea - iga sõit on meeles kui mõnus, mõnus, mõnus. 

Kevadised õhtused maantee-sõidud. Imeilus valgus, tühjad teed, rõõm näha looduse muutumist nädalast nädalasse. Tallinna ümbruses on palju palju sisuliselt autovabasid teid.

Ratta-orienteerumine. Kevad-suvel oli koroonarogainide sari. Käisin rattaga, nii sõbraga kui ilma. See formaat sobib mulle väga ja võitsin mitu etappi suisa ära. Sügisel olid Tallinna Xdream ja Bike Xdream.

Jägala / Linnamäe HEJ sild, Kaberneeme rogain, juuli

Sõidud lastega. Nii poisid kui Iida on nii suured, et nendega saab täiesti asjalikult rattaga sõita. Valin rajad, kus on neile midagi uut, jutustan ja on tore.

Militaar-pärand. Harjumaal on seda tohutult, eriti Tallinnast läänes. Enamik sest on metsa varjus (raketibaasid ja varjendid jne) ja suurel alal laiali, nii et rattaga on seda kõige mugavam avastada. Kõige ägedam üksik matk oli Harku valla militaarpärandi avastamine Heinart Puhkimiga. Käisime Humala maa-alused tunnelid ja ehitised läbi. Suurupi militaar-pärandi peale tegin ise SSK jaoks matka. Lisaks Astangu, Nõva, Pahkla, Saku jne jne baasid ja muud objektid. Ma ei ole päris ajaloo-fänn, ja sõda on jäle. Aga teiselt poolt on Eesti riik olnud sadu aastaid Vene impeeriumi piiriala, ja meie ajaloost suur osa on sõja vormitud. Ka maastik on sõja-ajalugu täis, me ainult ei tea või ei märka seda.

Rändrahnud. Ma tahan igale rattasõidule panna mingi sihi, ja kui muud ideed pole, siis Põhja-Eestis on selleks alati võtta rändranhnud. Need on nii ägedad ja tihti maastikul täiesti ootamatud! Panin osad neist kaardile.

Tehniline pool:

Mul on kaks jalgratast. Canyoni hardtail MTB - kerge, lihtne, ühe amordiga, hästi krobelise rehviga, asfaldil nagu tigu, aga maastikul mõnus. Ja linna-ratas - Merida 500, üle 10 aasta vana, kah MTB, aga ilma amordita ja kitsa sileda rehviga. Sõitsin mõlemaga umbes pooleks. 

Mul on palju lisavarustust. See on väärt eraldi sissekannet. Kõige rohkem on rõõmu olnud kaardihoidjast, kuhu läheb nii paber-kaart kui telefon. 

Mitte ühtegi tõsisemat õnnetust ega kukkumist. (Kergeid kukkumisi juhtub tehnilisel maastikul sõites ikka, see käib MTB kui ala sisse, aga need on üldiselt valutud.) 

Linnas ja liikluses sõitmine

Olen rattaga tööl käinud palju vähem kui võiks.

Lühemaid sõite - kinno, kõrtsi, raamatukokku, poodi - olen teinud aga kogu aeg. Kogu talve käisin rattaga trennis (kesklinnas ujumas). Ma ei saa üldse aru inimestest, kes linnas jala käivad, teil on igav ja aega üle või misasja? :) 

Üsna mitu ohtlikku olukorda liikluses. Kõige hellem - kevadel öösel Vana-Tartu maanteel. Ise olin loll ja süüdi. Linnas on tüütuid olukordi üsna tihti, kuid midagi pole päriselt juhtunud. Vist on vedanud. Liikluses ratta abil luumurde saand sõpru oli sel aastal mitu, nende ühine nimetaja - "ettevaatlik sõit kõnniteel". Plussi kirjutan ka selle, et pole sel aastal kohanud ühtegi meelega agressiivset autojuhti - välja arvatud Läti rattamatka ajal, seal oli neid palju. 

Parandus: siiski! tuli meelde tüüp, kes mulle vanalinnas signaali andis ja hõikas "kas sa oled enda meelest sõiduk või". Täiesti lambist. 

Venejärv ja jalgratas, august

Sunday, December 27, 2020

Matemaatika ja elu

Kommenteerin ühte teist blogi (A), mis kommenteerib ühte teist blogi (B), kus kommenteeritakse seda, et matemaatikat peaks rohkem siduma päris eluga. (A) ütleb, et matas on tekstiülesanded ja see ju on side päris eluga.

Mu seisukoht siis:


“Tekstiülesanded” ja “seos päris eluga” ei ole üks ja sama asi!
Tekstiülesanded on kindlasti abiks, aga need on vaid üks ja üsna kitsas võimalus.

Mina mõtlen tolle “seose” all umbes seda, et kui jutt on ruutsõltuvusest (-funktsioonist, -võrrandist), siis võiks olla vahemalt pool akadeemilist tundi sellest, kus sihukest elukat päriselus näha saab. Mis nähtused niiviisi käituvad? MIKS me seda asja üldse õpime? Järgmised paar kuud ja hea hulk närve kuluvad lastel selles ruut-asjanduse peale. See üks tund oleks hea ajakulutus. Aga seda ei võeta.

Sama – trigonomeetria. Võetagu tunnike ja räägitagu. Näete, siin on klaver, vajutan klahvi, mis juhtub? Juhtub siinus. Vajutan klahv üks oktav üleval? Samasugune siinus, aga poole tihedam. Panen klassis tule põlema? Siinus tuleb juhet pidi laelampi. Teen silmad lahti – siinus Päikeselt jõuab mu silmisse ja ma näen klassiruumi, lampi, teid, … Ja et kui te, lapsed, lähete oma elus õppima või tegema midagi, mis on ükskõik kuidas seotud elektriga, heliga, valgusega, siis on trigonomeetria teie parim sõber, sest kõik signaalid on lained ja kõik normaalsed lained on trigonomeetrilised funktsioonid ja umbes seda me nüüd kohe õppima hakkamegi.

Ja nii edasi.

Aga õpetajad ei võta seda akadeemilist tundi, ega ka poolt ega veerandit. Esiteks ei jäta ainekava neile selleks aega. Ja teiseks nad ise ilmselt ei tea neid asju. Sest tähtsad tädid, kes mata ainekava kokku panid, ka ei tea. Ja seepärast ei jäeta neile ka aega ja ei kirjutata õpikutesse… Ja kardetavasti samal põhjusel ei õpi mata õpsid seda ka ise ülikoolis.

Matat võetakse koolis kui abstraktset, väga eluvõõrast distsipliini. "Tee läbi need ja need trikid, siis saad hea hinde". Notsu ütleb selle kohta "loitsude õppimine" ja see on jube hea väljend. Ning ei,  tekstiülesanded ei muuda seda kuigivõrd.

Paar viita lõdvalt seotud teemadel:

Targo Tennisberg, "Miks mulle seda matemaatikat tarvis on", 
"Keegi ei tohiks õpetada ühtki matemaatilist kontseptsiooni, kui ta ei oska nimetada mõnda selle praktilist kasutusvaldkonda."

"Origami ja elegantne matemaatika",

EPL juhtkiri matemaatika õpetamisest,

Gümnaasiumi matemaatika ainekava rakendumise uuring, HTM, 2018

Lusti-matemaatika,

Friday, December 11, 2020

Ratas: Soodla veehoidla ja Koitjärve raba

Tahad Tallinna lähedal metsas rattaga sõita, metsateid pidi, ja eemal Harku-Pirita massidest? Ring ümber Soodla on siis hea variant. Kõige lühemat teed pidi 22 km. Parkida saab suletud Raudoja kõrtsi juures. Üle Soodla jõe saab veehoidla tammi pidi ja Mähuste silla kaudu. Maastik on lauge, ja kogu ring on metsatee - liivane või kruusane. Muidugi saab ringi kuitahes pikaks ja keeruliseks venitada, suvel järvedes ujumas käia, sügise poole marju korjata. Ja mõnikord on imeilus!

Tegin seal täna siis ringi, ligi 30 km rahulikku ja mõnusat sõitu. Tahtsin sõita külmunud maastikul, proovida uut lampi, vaadata paaripäevast lumevaba jääd järvedel ja laugastel.

Soodla veehoidlas tegid päästjad jääõppust ja sulistasid vees. Jää oli umbes 4-5 cm paks ja "vingus" nagu saeleht.
Käisin Koitjärve rabas laukaid vaatamas ja Mähuste järve ääres. 

Kogu tagasitee alates Koitjärvest sõitsin pimedas. Uus lamp on natuke liiast, pimedas metsas tuleb panna neljast režiimist peale teine (600 lm), kolmas ja neljas on liiga heledad :) 

Tõrvatilk kah. Kogu ala Soodla veehoidla, maantee ja Koitjärve raba vahel on mootorratastest laastatud. See on endine Tõrrepõhja tankodroomi ala. Maapind on liivane, motikas rebib kõik pinnase ära ja järgi jäävad sügavad rajad - ja neid on seal lõpmata palju. Või on hea, et las sõidavad seal, mitte mujal? Et see on niikuinii "sõjaväe" piirkond ja las siis minna...?




Advent of Code 2020

Ametlik: https://adventofcode.com/2020/

Reddit: https://www.reddit.com/r/adventofcode/

Esimene päev: Report Repair

Leia arvude reast 1) paar 2) kolmik, mille summa on 2020.
Tegime koos Iidaga.

Teine päev: Password Philosophy
Leia stringide / paroolide reast need, mis vastavad mustrile.
Õppisin ära ebavajaliku re.split() ja kasuliku *.count() funktsiooni.

Kolmas päev: Toboggan Trajectory
Leia korduvast mustrist üles puud, millega kelk põrkub.

Neljas päev: Passport Processing
Kontrolli passi atribuutide vastavust etteantud reeglitele.
Esimese osaga (kas passil on kõik atribuudid olemas?) sain kergesti maha, aga teisega jäin hätta.
Vale vastus! Liiga suur! S.t. ma lugesin mõne vale passi õigeks.
Programmi loogikat läbi mõeldes viga ei leidnud.
Trükkisin kõik atribuudid välja, lugesin Excelisse, sortisin ära, vaatasin üle - nagu oleks? 
Aastad on lubatud vahemikes, kõik muu ka.
Ainus kahtlane väli oli passi ID number, kus Excel näitas ka seitsme- ja kaheksakohalisi numbreid. 
Miks? -- sest ta sõi algsed nullid ära, ehkki sisendfailis olid need kujul "00345678". 
Lasin programmil endal kõik õigeks loetud PID atribuudid välja trükkida ja oligi viga käes.
"pid" väljale tegin ainult regexp matchi üheksakohalisele arvule, aga pikkuse kontrolli unustasin.
Seega klappis ka iga kümnekohaline (ja pikem) "arv" 0123456789, lisaks ka a0123456789 jne. 
See oligi ainus viga.
Õppisin: tuletasin meelde re.match() regexp süntaksit.
Moraal 1: Excel EI OLE andmete analüüsiks okei vahend - ta interpreteerib ise väärtusi ja teeb trikke. 
Moraal 2: Sisendi kontroll algab alati pikkuse ja formaadi kontrollist. 

Viies päev: Binary Boarding
Stringi (pardakaardi vöötkood) teisendus kümnendsüsteemi.
Väga lihtne ülesanne, tegin ise ja siis koos Aloga uuesti.
Lõpuks tuli kolm rida normaalset kood.
AoC redditis on mingid mega-lahendused, loe ja imesta.

Kuues päev: Custom Customs
Tolli-küsimuste grupeerimine, hulkade koostamine ja intersection(), lihtne.

Seitsmes päev: Handy Haversacks
Üksteise sisse paigutatud värviline pagas.
Tuli tekstist puu ehitada ja seda siis kahte pidi "läbida".
Õppisin: re.match(), collections.defaultdict().
Puu lugemine õnnestus mõlemas pooles esimese korraga õigesti.

Kaheksas päev: Handheld Halting
Mängukonsooli koodi parandamine.
Assembler :) 
Lõpuks :)
Fännid ägisevad masohhistlikult.
Tänu eelmise aasta intcode praktikumile läks tänane väga lihtsalt.
Sõin progemise kõrvale saia ja sõimlesin facebookis ja olin ikkagi global leaderboardil nr 5260.
Edit: hiljem õppisin ära collections.namedtuple() kasutamise. 

Üheksas päev: Encoding Error
"Šiftist" ehk arvude jadast kombinatsioonide leidmine.
Õppisin kasutama itertools.combinations()-it ka * operaarorit, lisaks ja harjutasin (mittevajalik) deque kasutamist. 

Kümnes päev: Adapter Array
Arvude järjestamine ja järjestuste arvu leidmine.
Counter'i kasutus ja walrus operator.
Pidin juba hakkama atsüklilise suunatud graafi topograafiliste sorteerituste arvu leidmist õppima, a õnneks polnud vaja :)

11. päev: Seating System
Inimesed istuvad reeglite järgi, sisuliselt "game of life".
Vajab tähelepanu detailidele, muidu lihtne.
Teises pooles kulutasin palju aega väikeveale - võrdlesin X indeksit Y maksimumiga.
Test-andmed olid 10x10, töötas.
Päris-sisend 94x92, töötas - peaaegu.
 
12. päev - Rain Risk
Laeva liikumine läbi "N4, L4" sisendite.
Alguses tegin ilma.

13. päev - Shuttle Search
Tegin jõu-lahenduse, kus sammuks kõige pikema tsükliga buss.
Testisin test-andmete peal ära ja panin käima. Ei lõpetanud :)
Ise võtsin matemaatika ette.
Jõudsin diofantiliste võrranditeni, lugesin natuke ja andsin alla.
Siis tegin veidi algajalikku aritmeetikat, aga ka see ei viinud mind kuhugi.
Arvutasin CRT jaoks jäägid välja ja söötsin https://www.dcode.fr/chinese-remainder sisse.
Kogu modulaararitmeetika on minu jaoks mingi hägu (ja krüptograafia ka, nii piinlik kui see ka pole).
Hiljem tegin Fazzu suurepärase selgituse järgi õige, kiire, mitte-CRT lahenduse.
 
Jube hea ülesanne:
- sai lahendada puhta jõuga (õige keel ja kõva arvuti),
- sai lahendada puhta matemaatikaga - diofantiliste võrrandite või Hiina jäägiteoreemiga,
- sai lahendada puhta loogikaga,
kindlasti kuidagi veel.
Vaatasin Youtubest kaks videot ära, Robert Xiao ja  Jonathan Paulson. RX kulutas ülesande peale 6:40, leidis kettalt oma vana CRT koodi :), JP luges Wikipediat ja juurutas nullist.

AoC Redditis on väga humoorikad kirjeldused selle ülesande jõuga lahendamisest :)

14. päev: Docking Data
Bittide ja stringidega ja regexpidega nikerdamine. Mul pole praktikat ja läks aeglaselt. Nt tekkis selline kaunis rida nagu location = '{:0>36}'.format(str( bin(int(y.group(1))))[2:]). Aga osa 2 sisuline pool läks nagu niuh. Rekursioon ja sum(dict.values()), laksust õige tulemus.

15. päev: mingi arvudega mäng
Tuli arvutada 2020 ja 3000000. liige van Eck'i täisarvude jadast - https://oeis.org/A181391

16. päev: Ticket Translation
Osa-1: eemalda valed piletid (väärtused reeglitest väljas). Hästi lihtne, ainult lugemine võttis aega. Tegin kiiresti koodi, ei testinud ja plaks - õige tulemus.
Osa-2: OOO ÕUDU. Tuli leida, mis väli on piletil mis kohal. Seda saab (vist) lahendada kahel viisil. a) arvutada, mis väljad mis reeglile vastavad. b) arvutada, mis väljale mis reeglid vastavad. Ilmselt saab ka 20x20 tabeli joonistada. Igatahes valisin ma vale viisi, jooksin vastu seina ja nägin hullult aega, et asjast asja saada. Lõpu tegin Excelis, mida sõiman taaskord, tramuse tehisintellekt selline, aga täna aitas ta mind ikkagi hädast välja. Lõpuks tegin puhta Pythoniga ka. Kõige pikem kood seni, 80 rida, lõpuosa on küll täiesti lambikas. 
Lahe ülesanne!!!
Õppisin: 
map() kasutamist -- x = map(int,blah.split(","))
re.match ja üldse regexp'ide kordus  -- sisendi hekseldamine on sellega mõnusalt lihtne
math.prod -- listi korrutis (Python 8+)
set'ist ainsa (või suvalise) elemendi võtmist -- list(setx)[0]

17. päev, Conway Cubes
3D / 4D rakuautomaadid, cellular automata. 
Panin kõik rakud set()'. Selles sisalduvuse kontroll on lihtne, ei pea massiivi ääretingimustega jamama ja maailm on automaatselt lõpmatu. 
Küll oli siis rõõm, kui neljas dimensioon juurde tuli! Üks ring tsüklit juurde, paari kohta üks argument lisaks - x,y,z asemel x,y,z,w - ja oligi valmis. 
Õppisin: hea andmemudel on kõige alus ja teeb elu mõnusaks :)
Edit: lugesin Reddit'i ja häbenen.
- numpy / scipy abil tehakse hämmastavaid lahendusi, tasub õppida
- itertools.product() annab kõik võimalused (-1,-1,-1,-1 ... 1,1,1,1) vahel: set(product([-1,0,1], repeat=4)), vt ka how to avoid nested loops
- programmi töö ajad on millisekundites
A vähemalt sai mul hästi lihtne ja kohe esimesel katsel veavaba lahendus :)

18. päev, Operation Order
Aritmeetiliste avaldiste lugemine ja arvutamine. Ma tean, et selleks on mingid puud ja algoritmid, kuid ei oska neid üldse. Tegin täiesti lollilt. Lugesin avaldise järjest sisse, rekurseerisin sulgudesse ja arvutasin. Teise osa jaoks ümbritsesin + tehted enne sulgudega. Palju indeksite loogikat (sulgude leidmine), aga töötas.
Lahenduste lõimest ei saa ma täna midagi aru - CS taust on puudu. Ühtegi nii rumalat lahendust kui mul ei paista. Inimesed defineerivad & implementeerivad grammatikaid jne. Operaatorite ülelaadimine + eval on muidugi hea trikk :)

19. - 21. jäid vahele, sest kiire nädalavahetus ja olid vist ka rasked ülesanded. Ehk teen järele?

19. päev, Monster Messages, ababbb... sõnumite valideerimine isetehtud grammatikaga
Esimene osa - vaatasin, ei osanud üldse. Ma peaks hakkama grammatikat juurutama? Ei. Siis võtsin netist vihje "build regexp". Esimene osa lahendus sellega suht lihtsalt, natuke rekursiooni ja valmis. 
Teine osa - jätan tegemata. Või siis teen millalgi, kui olen palju targem.

20. päev, Jurassic Jigsaw, pusle kokkupanek kaardi tükkidest
Esimene osa - nurkade leidmine. Läks lihtsalt, lugesin kokku omavahel "klappivad" küljed ja leidsin need ruudud, millel neid oli kõige vähem. 
Teine osa... teen, millalgi, võib-olla :) Tundub jube. Ma saan aru, kuidas seda teha - tuleb hakata kaarti ühest nurgast kokku joonistama. Ja on abiks teada, et pusle tükkide servad klapivad 1:1. Aga hirmus palju tööd on. Redditis on hädaldused "mitusada rida koodi" ja "kümneid tunde progemise aega". 

21. päev, Allergen Assessment 
Retseptide ja allergeenide vastavus. Läks tohutult aega ja sada ülesande läbi lugemist, enne kui aru sain, KUIDAS seda loogilisel tasemel lahendada. (Tuli kõik retseptid, milles sisaldus allergeen X, omavahel ära ristata. Tulemus oligi allergeeni X sisaldav komponent.) 
Progemise mõttes oli 1. osa väga lihtne - Pythoni set, dict ja sisalduvuse kontrollid on imemugavad. Teise osa tegin lihtsalt käsitsi (vaja 8 sõna järjestada).
Redditis sama ülesande jaoks kasutusel: Hopcroft-Karpi algoritmZ3 solver ja muu hai-tekk.

22. päev: Crab Combat
Kaardimäng. Esimene osa lihtne, teine osa keskmine - tavaline rekursioon. Mida õppida nagu ei ole.
Tegin ära ja läksin Redditit lugema.
Pythoni kood. 15x kiirem kui mul. Loogika ja andmestruktuur (deque) on täpselt samad. Wtf? Hakkasin optimeerima ja:
- debug-printimise kustutamine koos vastavate kontroll-tingimustega andis 1.5 x võitu.
- veel paari if'i tsüklist välja viimine veel 1.5x.
- deque'st stringi vs tuple ehitamine veel 1.5x.
Nüüd on mul näivalt täpselt sama kood mis tundmatul sõbral, aga 4x aeglasem (1.5 vs 6 sekundit).
Ja trikk või süüdlane on... parampampaa... nested tuples.

Ja siis on paar sissekannet allpool puhas loogiline... mõttekäik, mis kiirendab programmi tööd veel KAKSSADA korda. Oh jah. 

23. päev, Crab Cups
Topside liigutamise mäng. Nagu kõik, tegin esimese osa lollakate listidega. Teise (miljon topsi, 10 miljonit ringi) dictionary peale ehitatud ühesuunalise listiga. Tegelikult piisas ka ka teise osa jaoks lihtsast listist ja oli 25% kiirem kui dict.
Redditis on näha, et enamik mõtlesid üle ja uurisid kõigepealt mingeid ring_buffer ja deque sorti struktuure. 

24. päev, Lobby Layout, kuusnurkne plaadistik ja "game of life". 
Ooo needust.
Kõigepealt lugesin läbi kogu https://www.redblobgames.com/grids/hexagons/. Tundus jube segane. Siis joonistasin kõik paberi peale üles - sai päris lihtne. Esimene osa saigi kärmelt valmis ja õige. Ka teine osa tundus lihtne. Kirjutasin valmis ja...
.. ei tööta. Annab test-andmete peal vale tulemuse.
Wtf.
Kulutasin tunde debugimise peale. Lõpuks tegeles suurem osa koodist kuusnurkse struktuuri eri viisil väljatrükkimisega. 
Lõin käega, tegin pausi, seejärel kirjutasin esimese osa nullist uuesti. 
Ja see lahendas probleemi. Mul oli juurutusviga - kaks rida omavahel vahetuses. 1. osa tulemus tuli sellega õige, aga 2. osa sisend vale. Kui see sai korda, läks ka 2. osa kood laksust käima ja oligi õige.

Õppisin: palju kuusnurkade kohta. Aga eeskätt seda, et uusi asju on raske õppida. Kõik 3D ja kompleksarvudega lahendused - ma ei saa neist aru. :(((( Ja ei saagi. 

25. päev, Combo Break ehk Diffie-Hellman murdmine
Veidi moodul-aritmeetikat. Ma ei saa sellest eriti aru, aga see lahendus puhta jõuga. Kuid nagu ikka, tehakse Redditis tõelist keemiat, vabandust, matemaatikat :) 

Üldine moraal

- Kontrolli alati, kas sisendi viimane rida loeti sisse ja läks ka korrektselt arvesse.
- Kui on täielik ummik, siis kirjuta programm nullist uuesti.
- Pythoni andmestruktuurid ja muud võimalused on täielik mõnu. 

Lugemist

"Kuidas nad nii kiired on???" -- Redditi lõim kiirest progemisest. Kaheksanda päeva ülesanne oli "loo virtuaalarvuti" ja esimene leaderboardi kirje tekkis 90 sekundiga. Pika jutu kirjutab xiaowuc1 ise - 8. päeva võitja ja praegune edetabeli esimene. 

betaveros, tänavune võtja, kirjutab programmeerimisest.

"Going fast in Advent of Code" - https://kevinyap.ca/2019/12/going-fast-in-advent-of-code/

AoC 2020 põhjalike selgitustega: 

Ülesannete lahendamise suhteline raskus / aeg, edetabeli täiumise aja alusel. Selle aasta ülesanded on võrdlemisi lihtsad. Eelmise aasta keskel oli leaderboard'i täitumise aeg (100 inimest on mõlemad osad ära lahendanud) umbes 45 minutit. Sel aastal on 15.

Mul on hetkel tehtud kõik ülesanded peale päevade 19, 20, 21. Ühe ülesande (busside ajagraafikute teine osa) jaoks kasutasin Mart Oruaasalt pärit selgitust. Muud on olnud aga tehtavad ja üsnagi lihtsad. 

Fazz selgitab (jube hästi): https://fazz.github.io/tags/aoc2020/

Wednesday, December 9, 2020

Ratas: Tuhala - Pahkla - Angerja

Käisin varasuvel Pahkla kandis sõitmas ja oli väga huvitav.

Nüüd tegime sarnase ringi sõpradega.
Rada sai selline:

  • Algus - Oru küla poe eest
  • Oru mõis ja park
  • Kata küla - kooli mälestuskivi ja tamm
  • Tuhala karstiala õpperada ja "augud" - Äiaauk Ämmaauk Kirikuauk, Nõiakaev, Veetõusme allikad
  • Tuhala kirik
  • Tuhala hiiekadakas
  • Tuhala mõis ja paisjärv
  • Tammiku mõisa müürid ja TAKKK kunstikeskus nende vahel
  • Pahkla raketibaas ja eriti selle tohutud angaarid
  • Pahla rändrahnude grupp: Ussipõllu suurkivi, Mari / Vaeslapse nutukivi, Määrakivi / Mägrakivi, Pahkla suurkivi ehk Eestimaa Kivide Kuningas
  • Angerja küla plats ja infopunkt
  • Angerja keskaegse kindluse varemed
  • Pahkla mõisasüdame varemed
  • tagasi Oru poodi
Muidu oli huvitav ring ja palju vaatamist, ainult Tuhala õpperada oli pettumus. Seda on maastikul raske jälgida ja pmst tulime poole pealt ära. Virulase koobast jälle ei näinud - aga see vist ongi talu õue peal ja ebaviisakalt kuhugi trügida me ei tahtnud.

Muidugi ilmestasid sõitu "eratee" sildid ja keelumärgid.




Fotosid ma eriti ei teinud, vaadake suviseid.

Rada tuli 40 km. Üldiselt kruusateed, natuke asfalti. Metsateed olid mudased ja "hübriidrattad" jäid neil kinni - pori kiilus rehvi ja porilaua vahele ja ratast tuli järele lohistada. Matkamiseks on ikka maastikuratas kõige parem asi.

Aega kulus üle 5 tunni - palju vaatamist ja rattalt maas olemist.