• Passa alla navigazione primaria
  • Passa al contenuto principale
  • Passa alla barra laterale primaria
  • Passa alla barra laterale secondaria
  • Passa al piè di pagina
  • Home
  • Chi sono
  • Contatti
  • Tu che sei un fisico
  • Incontri e conferenze
  • Particelle familiari
  • Work

Dieci anni di Advent of Code

26 Dicembre 2024 4 commenti

È la mattina di Natale, sono le 8 e tutti dormono ancora. Per la prima volta arrivo al 25 con tutti i problemi di Advent of Code dei 24 giorni precedenti completati (incredibile!), e si sa che il problema del 25 è di solito facilotto e consiste in una parte sola. Caffè nel silenzio della casa dei miei, ritmato solo dal vario russare di genitori, moglie e figlia che filtrano dalle porte, e anche le ultime stellette sono conquistate.

È Santo Stefano, e, a ventiquattro ore dalla mia conclusione dell'edizione 2024 di Advent of Code (in seguito AOC), butto giù qualche considerazione.

  • Inizio col dire che, nonostante sia la decima edizione, e la sesta che faccio in diretta a dicembre, mi sono divertito. L’idea resta intrigante, ci sono sempre cose nuove da imparare, e il formato (incluse le discussioni sul socialino di nicchia) è proprio bello. Come sempre, complimenti a Eric Wastl per l’idea e lo sforzo organizzativo, e ai miei amici immaginari per aver giocato il gioco insieme, tastiere che fanno clickete-clackete comprese.

  • Ho trovato l’edizione di quest’anno più facile di quelle degli anni passati: non vuole necessariamente dire che lo fosse, forse sono migliorato io, forse certi trucchetti per rendere i puzzle difficili cominciano ad apparirmi chiari da subito grazie all’esperienza. Sta di fatto che è la prima volta dal 2019 che chiudo AOC nei tempi canonici ed entro la mattina di Natale, e non nei giorni successivi.

  • A posteriori, penso che chi si lamentava su Reddit del fatto che parecchia della difficoltà stesse nei testi a volte oscuri o arzigogolati dei problemi, e non tanto nella complessità della soluzione, non avesse del tutto torto. A me la cosa non è necessariamente spiaciuta: anche saper decodificare le informazioni in un testo oscuro è risolvere un enigma, ma posso capire che la cosa possa non piacere a tutti. Che la capacità di decodificare un testo scritto stia veramente diventando meno diffusa meriterebbe veramente un discorso a parte.

  • Mi pare che il tema ricorrente di quest’anno fosse la ricorsione. Una soluzione ricorsiva (spesso con qualche forma di backtracking) era l’unica strada per risolvere certi problemi, per cui una soluzione “greedy” non era proprio possibile. La ricorsione e il backtracking sono cose che ho imparato a conoscere e usare facendo AOC (chi mai le usa per risolvere questioni di fisica delle particelle?), ed è stato dunque un buon ripasso, a volte laborioso, ma mai impossibile.

  • Ho trovato la varietà dei puzzle meno stimolante degli anni passati. O meglio, ci sono state cose che saltavano spesso fuori nelle edizioni passate di AOC che mi sono mancate. Quest’anno niente automi cellulari, niente mappe infinite o tridimensionali, poca o niente matematica per aggirare problemi altrimenti insormontabili (i rari casi in cui serviva una soluzione matematica chiusa, questa era piuttosto elementare - tipo un sistema di due equazioni lineari). Peccato.

  • Non c’è stato quest’anno nessun puzzle per cui io abbia detto “non so assolutamente come risolverlo, devo andare a guardare una soluzione di qualcun altro”. Ci sono stati momenti in cui certi dettagli dell’implementazione pratica mi sfuggivano, ma mai l’idea di base. Una cosa che mi ha aiutato è stata forse il lasciare decantare i problemi: lettura del testo appena sveglio, ma attacco del problema solo a un certo punto nella giornata, con un po’ di tempo di riflessione - guidando in auto verso l’ufficio, camminando - che si è rivelato utile per iniziare a scartare soluzioni inefficienti nella mente prima ancora di iniziare a implementarle.
  • Ho risolto i problemi in Python, che è in questo momento il mio linguaggio di elezione per la maggior parte delle cose che faccio professionalmente. Dal 2019, quando ho veramente iniziato a usarlo, a oggi sono decisamente migliorato. Quest’anno ho cercato di usare qualche libreria esterna per impratichirmi di più (networkx per la soluzione dei grafi, e graphviz per disegnarli, che conoscevo solo di nome e che ho provato a usare per disegnare la rete del giorno 24).

  • I miei problemi preferiti dell’anno sono stati anche quelli che mi hanno dato più filo da torcere: il giorno 17 (risolto in aeroporto - e in aereo! - andando e tornando da Parigi per la discussione di una tesi di dottorato!), il 19 e il 21 (simili nella difficoltà imposta dalla seconda parte, e anche nello stile della soluzione), e il giorno 24. Tutti questi avevano in comune - manco a dirlo - la necessità di una soluzione ricorsiva, perché un algoritmo “greedy” non poteva funzionare (in certi casi per la forma della soluzione, nel giorno 17 o 24, o per la sua taglia, nel 19 o 21). Sono anche i giorni in cui la soluzione richiedeva un po’ di reverse engineering del problema (il giorno 24 ne è stato l’esempio più lampante: di fatto lo ho risolto “a mano”, cercando i nodi mal cablati nello schema della rete), che alla fine sono forse i problemi più stimolanti, che escono dalla sola necessità di individuare e scrivere un algoritmo, più o meno complesso che sia.
  • Per la prima volta da tanto tempo, non ho problemi di AOC da risolvere tra Natale e Capodanno. Potrei darmi a qualche visualizzazione, ma siccome ci sono in giro visualizzazioni molto più sofisticate di quelle che potrei mai fare io oggi con le mie scarse competenze (tipo queste), penso che semplicemente lascerò tutto a decantare, dedicandomi ad altro.
  • Infine, avrei voluto regalarmi una maglietta del decennale di AOC, ma costa 32$, che diventano circa 60 una volta considerate tasse e spedizione in Europa! Un po’ troppo, peccato...

Lascio qui le mie soluzioni, se qualcuno volesse dare un'occhiata all'orribSPLENDIDO codice che ho scritto... 😉

Condividi:

  • Fai clic per condividere su Facebook (Si apre in una nuova finestra) Facebook
  • Fai clic per condividere su X (Si apre in una nuova finestra) X
  • Fai clic per inviare un link a un amico via e-mail (Si apre in una nuova finestra) E-mail
  • Altro
  • Fai clic qui per stampare (Si apre in una nuova finestra) Stampa

Correlati

Archiviato in:Geeking & Hacking Contrassegnato con: 2024, AdventOfCode, algoritmi, computer, enigmi, matematica, programmazione, puzzle, python

Interazioni del lettore

Commenti

  1. Juhan dice

    27 Dicembre 2024 alle 14:38

    Bravo (come al solito) ma una domanda, probabilmente sciocca: visto che Python (e le sue librerie) lo conosci bene perché non provare (nel '25) qualche nuovo linguaggio? Per esempio Julia.
    Ssscancella se inappropriato ma per intanto buone feste!

    Rispondi
    • Marco dice

      27 Dicembre 2024 alle 14:58

      Due ragioni: anche in Python ho ancora parecchio da imparare (certe librerie esterne, per esempio), e poi a dire il vero il tempo che ho da dedicare a questo giochino è poco, per cui Python si presta benissimo a lavorare rapidamente nei ritagli di tempo.

      Rispondi
  2. Silvia dice

    28 Dicembre 2024 alle 03:09

    Bella scoperta !!!
    Grazie
    Sono accessibili le sfide passate ?
    Da cell non riesco a vedere ( sarà l’età ) e in mezzo al Thar il cell non prende proprio benissimo
    Auguri

    Rispondi
    • Marco dice

      28 Dicembre 2024 alle 11:22

      Tutte accessibili dal menù della pagina principale dal link “Events”. Buone sfide!

      Rispondi

Lascia un commento Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

Barra laterale primaria

Marco Delmastro Mi chiamo Marco Delmastro, sono un fisico delle particelle che lavora all'esperimento ATLAS al CERN di Ginevra. Su Borborigmi di un fisico renitente divago di vita all'estero lontani dall'Italia, fisica delle particelle e divulgazione scientifica, ricerca fondamentale, tecnologia e comunicazione nel mondo digitale, educazione, militanza quotidiana e altre amenità. Ho scritto un libro, Particelle familiari, che prova a raccontare cosa faccio di mestiere, e perché. Per qualche tempo ho risposto a domande di fisica (e non solo) sul podcast Tu che sei un fisico (e prima o poi potrei riprendere).

Barra laterale secondaria

Argomenti

  • Scienza
    • Fisica
    • Raccontare la scienza
    • Scienza e dintorni
  • Opinioni
    • Militanza
    • Mezzi e messaggi
    • Intenzioni educative
  • Sulla frontiera
    • Vita di frontiera
    • Letture e riflessioni
    • Geeking & Hacking
  • English posts
This blog is primarely written in Italian. On the other hand, physics is an international entrerprise, and its main language is English, so some of the posts have been translated: you can find them in the English post category. If you wish to read those posts that are still only in Italian, an automatic translation is a good a bet!

Footer

Iscriviti al blog tramite email

Non perderti neanche un aggiornamento! Inserisci il tuo indirizzo email per ricevere un messaggio ogni volta che un nuovo articolo viene pubblicato:

Trattamento dei dati, cookie e affiliate link

Questo sito fa uso di cookie: qui ti spiego quali sono e perché li uso, così puoi decidere se ti va bene. Uso anche Google Analytics per l'analisi delle visite e del traffico; per saperne di più, leggi la pagina sulla privacy, dove ti spiego anche come gestisco i tuoi dati se decidi di iscriverti al sito o di lasciare un commento. In certi post, alcuni dei link a prodotti venduti su Amazon sono affiliate link.

Qualche diritto riservato

I contenuti di Borborigmi di un fisico renitente sono rilasciati sotto licenza Creative Commons Attribuzione-Non Commerciale-Non opere derivate. Fatene buon uso.

Licenza Creative Commons

Copyright © by Marco Delmastro · Qualche diritto riservato

  • Facebook
  • Twitter
  • Instagram
  • Youtube
  • Linkedin
  • Github
Borborigmi di un fisico renitente usa alcuni cookie per funzionare al meglio. Se continui leggere o scorrere queste pagine dò per scontato che la cosa ti vada a genio. Ok! Dimmi di più
Politica dei cookie

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary
Sempre abilitato
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
ACCETTA E SALVA
 

Caricamento commenti...