11 januari 2022 - av Pythonlabbet
Ännu en trevlig omgång av Advent of Code är avslutad. Jag tror det här var de svåraste problemen hittills.
En bra indikator på hur omständigt ett problem är att lösa är att titta på hur lång tid det tar för den 100:e bästa att få båda stjärnor. Förra året var dag 20 (leta sjömonster) nog den som tog längst tid och det tog över en timme för den 100:e personen. När det börjar närma sig en timme eller till och med gå över, då vet man att det kommer bli tufft.
I år var det dag 18 som var den första riktigt svåra uppgiften. Den följdes av en ännu svårare på dag 19. Den tog mer än en timme för 100:e bästa.
Dag 19 handlade om sonder i havet som mätte positionen på olika "fyrer". Sonderna visste inte sina egna positioner och därför behövde olika sonders data samköras för att räkna ut deras inbördes relativa positioner. Problemet var dessutom att sonden inte visste sin egen orientering så den kunde vara roterad på 24 olika sätt i relation till en annan sond. Uppgiften var att räkna ut hur många unika fyrer sonderna detekterat. Ja som ni hör, den var besvärlig.
Dag 20 var relativt enkel men sedan kom andra stjärnan på dag 21 som var ganska svår. Samma sak på dag 22, den andra stjärnan är svår. Eftersom jag var på semester och inte ville sitta och koda i flera timmar slutade jag här. Dag 23 och dag 24 är dock också svåra vad jag kan se. Ändå är det nästan 10 000 person i skrivande stund som har gjort alla stjärnor för 2021!
Hoppas ni kunde njuta av årets upplaga trots att det blev lite oväntat svårt.
7 december 2021 - av Pythonlabbet
Dag 7 är här och vi har hittat en svärm av krabbor som kör små ubåtar. Helt normalt i Advent of Code-världen!
Första veckan är härmed klar. Lycka till med resten av uppgifterna!
6 december 2021 - av Pythonlabbet
Vi har hittat massor av fiskar! Vi ska modellera deras tillväxt genom att anta att alla fiskar förökar sig exakt var sjunde dag. Idag är vi extra glada för Python. Svaret i del 2 är väldigt stort så det är skönt att Python inte har en övre gräns på talstorlekar.
Jag råkade spela in båda mina skärmar när jag gjorde videon så var tvungen att klippa till videon. Men det blev helt okej ändå.
Jag tänkte göra en video imorgon också, sen får jag se vad jag hinner.
5 december 2021 - av Pythonlabbet
I dagens problem ska vi räkna antalet gånger linjer korsar varandra. I första delen endast horisontella och vertikala linjer och i andra delen kan linjerna även vara diagonaler med 45 graders vinkel.
4 december 2021 - av Pythonlabbet
Idag spelar vi bingo med en jättestor bläckfisk. Nu på helgen nöjer jag mig med att bara visa koden. För dag 4 använde jag en del funktioner för bättre struktur.
För del 1 spelar jag bingo tills en vinnare är hittad och skriver då ut "final score". I del 2 spelas det på alla bräder som inte finns i mängden av bräde som exkluderas. Om en bräda är klar läggs till den exkluderade brädor.
Observera att bräderna egentligen borde nollställas mellan del 1 och 2. Men det blir ingen skillnad på resultatet, ser ni varför?
3 december 2021 - av Pythonlabbet
Igår hade jag visst ställt in videon på att publiceras 3 dec kl 21, det är fixat nu.
Idag tog svårighetsgraden ett hyfsat stort kliv till del 2. Det går också att se på statistiken, en större andel har bara en stjärna än vad det varit de två första dagarna. Videon nedan blev också mer än 15 minuter jämfört 5 min och 7 min tidigare.
Jag tror det blir svårt att hinna göra videolösningar nu till helgen så troligtvis är jag tillbaka med video på måndag. Får se om jag göra dag 4, 5, eller 6 då. Kanske tar den som är roligast.
Trevlig helg!
2 december 2021 - av Pythonlabbet
Ikväll publiceras min lösning för dag 2. Idag har jag använt repl.it.
Äventyret med ubåten fortsätter och idag ska ta reda på vart vi ska.
Jag kan tipsa om att titta på den globala topplistan, det går att se detaljer för varje dag. Idag hade en användare löst båda delarna på mindre än en och en halv minut. Men precis som skaparen Eric Wastl så rekommenderar jag starkt att inte försöka lösa problemen så fort som möjligt. Mycket mysigare att ta det lugnt och njuta av historien!
Jag erkänner att det var lite otaktiskt att kalla min variabel för hur långt farkosten kommit för x. Just eftersom X används i beskrivningen i texten.
1 december 2021 - av Pythonlabbet
Kl 21 ikväll finns följande video tillgänglig som visar lösningar på dagens äventyr.
Det verkar som att en klantig nisse tappat nycklarna till släden i havet och det är vår uppgift att leta rätt på dem.
I videon använder jag pythonlabbet.se/koda. Imorgon kommer jag visa hur man kan göra på Replit. Det gör jag för att jag tycker det är viktigt att visa hur man kan lösa de här problemen utan att behöva installera något på datorn.
För att förstå lösningen är det framförallt avsnitten listor och for-satsen som är bra att ha gått igenom.
Om du vill förenkla koden, prova att använda en listbyggare att skapa rows. Det finns också ett knep för att undvika att ta summan elementen, kan du komma på det?
Hoppas ni också ser fram emot dag 2!
30 november 2021 - av Pythonlabbet
Imorgon bitti kl 06 är det dags! Förra året gick jag upp kl 06 första dagen för att försöka ta en plats på den globala topplistan (svårt). Det gick att se problemtexten men inputdatan gick inte att ladda ner. Det var för många som ville komma åt första dagens problem samtidigt och alla servrar kraschade. Först efter sju minuter eller så gick det att ladda ner inputdatan. Då hade jag visserligen löst problemet men det finns ingen chans att komma på topplistan efter så lång tid första dagen.
Här på Pythonlabbet är lösningar på video utlovade för den första veckan. Tanken är att dessa videos publiceras på kvällen någon gång.
Jag brukar skriva koden i Sublime Text eller Visual Code och det kommer jag nog göra de flesta dagar. Men för att visa hur ni kan göra för att lösa problemen utan att installera något kommer jag första dagen att använda Pythonlabbet och andra dagen repl.it.
Lycka till imorgon!
1 november 2021 - av Pythonlabbet
Om en månad smäller det! Nedräkningen har börjat. Den 1:a december kl 06 på morgonen svensk tid släpps det första problemet.
Advent of Code (adventofcode.com) är en julkalender med en nytt problem varje dag i december fram till det sista problemet 25 december. Varje problem består av två delar, när det första delproblemet är löst får man tillgång till det andra. För varje delproblem som löses får man en guldstjärna och klarar man alla problem får man då ihop 50 guldstjärnor.
Den första veckan (minst) kommer Pythonlabbet varje dag att publicera en video på en lösning på dagens problem. Hoppas vi ses då!
De första problemen brukar vara relativt lätta och de bör gå att lösa för många elever som lärt sig grunderna i programmering. Speciellt det första delproblemet brukar vara lätt. Även om svårighetsgraden varierar något upp och ner blir det definitivt svårare efterhand. I den andra halvan av julkalendern föreställer jag mig att även många professionella programmerare blir utmanade.
Varje problem har sin egen indata. Denna indata finns i många versioner så olika användare har olika lösningar på problemen. En del indata är ganska stor och då kan det vara bra att spara indata i en egen fil. Pythonlabbet har inte stöd för att ladda in externa filer men det går bra på repl.it.
Advent of Code har varit igång sedan december 2015 och alla gamla problem finns kvar att lösa. Som uppvärmning inför årets upplaga har jag börjat lösa problem från just 2015 och igår löste jag dag 20. Fem kvar!
Dag 1 2020 - ta gärna en titt på förra årets första problem.
Bilden nedan visar statistik för Advent of Code 2020. En guldstjärna representerar ett par tusen användare som klarat båda delar och en silverstjärna representerar de som klarat första delen. Det är alltså över 170 000 användare som klarat minst första delproblemet. I skrivande stund har nästan 13 000 användare klarat alla problem.