• 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
  • Privacy

Advent of Code 2020: serpenti marini e teoremi cinesi

31 Dicembre 2020 6 commenti

Verso la fine di novembre, sul solito socialino di nicchia dove già l'anno passato avevo scoperto l'esistenza di Advent of Code, abbiamo cominciato a parlare della possibilità di lanciarsi nell'impresa anche quest'anno. Inizialmente pensavo di non avere tempo di partecipare: troppo lavoro, e troppe ore passate davanti allo schermo a occuparsi del bosone di Higgs, mi avevano convinto che quest'anno non ce l'avrei fatta. Ovviamente sono bastati tre o quattro giorni passati a leggere degli altri amici immaginari che risolvevano i primi quesiti e che discutevano delle strategie scelte, a trascinarmi nel gorgo dei puzzle di programmazione di AOC. Non ci sono molte cose che danno più "dipendenza" di una serie di enigmi logico-matematici da risolvere in fretta, conditi con un pizzico di competizione tra amici, ma soprattutto dal supporto reciproco in caso di difficoltà, e dalla possibilità di comparare e discutere le rispettive soluzioni.

Sull'esperienza di Advent of Code ho già scritto parecchio l'anno passato, e molte delle considerazioni fatte in quell'occasione sono ancora valide oggi. Ne aggiungo qualcuna dopo l'esperienza di questo annus horribilis 2020, a completare quanto già detto un anno fa. Se non avete nessuna idea di che cosa sia Advent of Code, l'articolo sull'edizione del 2019 è un buon punto di partenza per capire di cosa io stia parlando.

  • Gli enigmi di quest'anno erano più facili di quelli dell'anno passato. Forse sono io ad essere migliorato, tanto nell'uso di Python che nella soluzione dei problemi, ma penso di poter dire senza sbagliare troppo che la difficoltà media dei problemi del 2020 era inferiore a quella di quelli del 2019. In parte la cosa è legata all'assenza di un filo conduttore, che invece c'era l'anno scorso: nessun problema richiedeva di aver risolto un problema dei giorni precedenti per avanzare, cosa che invece l'anno passato era un aspetto ben presente: questo ha certamente facilitato l'impresa.
  • Ho imparato meno che l'anno passato. In parte per l'oggettiva maggiore facilità degli enigmi del 2020 di cui sopra, in parte grazie all'esperienza accumulata duramente l'edizione dell'anno passato. Se nel 2019 mi ero dovuto confrontare con il fatto che, in quanto fisico, c'erano aspetti teorici dell'informatica o ambiti della matematica che non conoscevo per niente (penso per esempio agli algoritmi di ricerca e navigazione di grafi e alberi, essenziali per esempio per navigare un labirinto; o, per quanti riguarda la matematica, all'algebra modulare o alla teoria dei numeri), quest'anno non posso dire di avere imparato molti approcci veramente nuovi per risolvere i problemi. Provando a fare un elenco (probabilmente non completo) delle nuove conoscenze che mi porto a casa dopo aver completato AOC 2020, ci trovo queste cose:
    • Alcune tecniche di Python che non avevo mai usato prima: l'uso delle funzioni lambda, o come fare una matrice numpy di oggetti generici come una lista;
    • Il teorema cinese del resto, usato per risolvere il problema del tredicesimo giorno;
    • Le regular expression, la cui bieca ignoranza fino a un mese fa ammetto senza troppa vergogna, e che senza l'uso delle quali trovare la soluzione al problema del giorno 19 sarebbe stato impossibile;
    • Una cosa che ho poi scoperto a posteriori chiamarsi linked list, ovvero l'idea di una collezione "ricursiva" di oggetti, come in un anello, in cui quello che conta non è tanto la posizione assoluta di ogni membro, quanto quella relativa, ovvero chi segue chi, e come la catena cambi nel tempo.

    Non è male, ma non è nemmeno moltissimo.

  • L'assenza di un tema ricorrente, di cui mi ero un po' lamentato l'anno passato, mi è invece pesata un po'. A posteriori, la dipendenza di alcuni problemi del 2019 dalla soluzione dei problemi dei giorni precedenti dava all'avventura un senso di unità e continuità che nel 2020 non ho invece provato. Sebbene la cosa rendesse certe soluzioni del 2019 complesse e laboriose, nel completarle tutte avevo provato un senso di soddisfazione ben maggiore. La stessa considerazione vale per la presenza nel 2019 di enigmi la cui soluzione necessitava l'uso ricorrente di una stessa classe di algoritmi - nel 2019 c'erano per esempio spesso labirinti da risolvere - cosa che all'epoca per esempio mi aveva obbligato a imparare diversi modi di risolvere lo stesso problema in contesti diversi - nel caso specifico, approcci come come breadth-first search, o algoritmi di Dijkstra e A*, di cui prima non sapevo veramente nulla!
La tabella per decodificare i biglietti aerei del giorno 16 del 2020, uno dei pochi casi in cui lo stesso algoritmo poteva essere usato in maniera praticamente uguale anche per un problema di un giorno successivo, nello specifico per trovare la lista degli allergeni del giorno 21.
  • Ho giocato molto meno con l'aspetto visivo delle soluzioni. In parte non tutti i problemi del 2020 si prestavano a esperimenti di visualizzazione, ma è stata soprattutto la disponibilità limitata di tempo "libero" (ricordate? All'inizio nemmeno volevo partecipare...) a portarmi a "risolvere e basta" molti problemi, senza investire più tempo del dovuto nell'animare anche una visualizzazione della soluzione.
    Movimento in sala d'attesa, una delle poche animazioni che ho fatto nel 2020. Questa è la soluzione della prima parte del problema del giorno 11.

     

  • Insegnare a un computer a risolvere un problema apparentemente semplice (per un umano) può essere un'impresa complessa. La cosa è stata chiarissima per il problema del giorno 20, quello che quest'anno mi ha dato più filo da torcere, e che richiedeva per la sua seconda parte di risolvere un puzzle, inteso questa volta proprio nel senso più comune del dover ricomporre una figura fatta da tessere i cui lati combaciano. Che istruzioni si danno a un computer per dirgli di risolvere un puzzle? Cerca gli angoli e i bordi, e inizia dall'esterno? Prova tutte le tessere e le loro possibili orientazioni fino a che trovi quelle che combaciano? Una procedura che potrebbe sembrare banale persino per un bambino, si rivela invece una sequenza complessa di operazioni, verifiche e decisioni che modificano e influenzano quali altre operazioni eseguire in seguito. Molto spesso diamo per scontata la flessibilità del nostro cervello nel risolvere problemi complessi, adattando in maniera fluida le nostri azioni a quello che osserviamo. Programmare un comportamento simile in un computer, oltre a essere difficile, è stata per me una lezione di umiltà rispetto a quello che la nostra mente sa fare, o può facilmente imparare a fare.
Il puzzle del giorno 20 risolto. I pezzi quadrati andavano orientati e ribaltati in modo che i bordi gialli combaciassero perfettamente.
  • La persona dietro ad Advent of Code, Eric Wastl, fa un lavoro veramente impressionante, che è sorgente di divertimento e occasione di scambio e apprendimento per tanti. Per questo, quest'anno ho deciso di fargli una piccola donazione: mi è sembrato il minimo per ringraziarlo per le ore di di divertimento che AOC mi ha regalato. Se vi interessa sapere qualcosa di più su cosa sta dietro le quinte dell'evento, vi consiglio la visione di questo video: la storia della genesi di AOC è interessante, la comunità che si è formata intorno agli enigmi natalizi ancora di più.

  • La comunità, in effetti, è la cosa migliore di Advent of Code. Certamente quella della manciata di amici immaginari del socialino di nicchia, ma anche quella estesa su reddit, sempre pronta a dare un aiuto o un suggerimento, o anche solo a condividere soluzioni mille volte migliori delle mie, dalle quali imparare come si possa risolvere lo stesso problema in maniera molto più elegante di come io possa mai aver pensato. Se mai ce ne fosse bisogno, mi pare una bella dimostrazione che, perlomeno in certe nicchie, la rete può ancora essere qualcosa di simile a quello per cui è stato immaginata ai suoi albori.
  • La mia paura di non avere tempo si è rivelata infondata, e c'è una lezione da imparare. Ho affrontato praticamente tutti gli enigmi di AOC 2020, tranne gli ultimi a ridosso di Natale, tra le 8 e le 9 del mattino dei giorni di dicembre, dopo aver portato Giulia a scuola, ed essere tornato a casa per telelavorare in questi tempi di sconfinamento pandemico. Avrei potuto usare quel tempo mi modo diverso? Certo! Decine di email e messaggi Skype a cui rispondere mi aspettavano ogni giorno, e spesso la prima riunione (virtuale) era prevista per le 9. Ho lavorato meno o peggio a causa di quel tempo dedicato a risolvere enigmi? Non credo, anzi, sono praticamente certo che la cosa mi abbia fatto bene, e reso capace di lavorare meglio e di relazionarmi in modo più sereno con chi mi stava intorno, che fossero colleghi o la famiglia. La verità è che sentirci freneticamente occupati, privi della possibilità di dedicare un po' di tempo allo svago o a coltivare una passione che sia non legata a lavoro o famiglia, è spesso una scusa che ci fa magari sentire bene, utili e indispensabili nell'immediato, ma che non ci rende persone migliori. Come direbbe il capitano Picard:

Come già per l'edizione dell'anno passato, tutte le mie soluzioni sono raccolte in questa repository di GitHub, con qualche appunto raccolto in questo sommario, e delle note più estese in ognuno dei notebook. Non esitate a farmi sapere che cosa ne pensate!

Mostri marini!
Mostri marini infestano un mare agitato, dalla soluzione del giorno 20.

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

Un presepe riciclato per un Natale diverso. Quarta (e ultima) parte: gli angeli erano ormai lontani

19 Dicembre 2020 4 commenti

Nel corso della quarta settimana di questo avvento del 2020, finiamo la costruzione del nostro presepe riciclato. Il borgo è ormai stabilmente installato sulla libreria, con le sue luci e le statuine peruviane al loro posto. Ci piace molto, qui siamo … [Continua a leggere] infoUn presepe riciclato per un Natale diverso. Quarta (e ultima) parte: gli angeli erano ormai lontani

Archiviato in:Letture e riflessioni, Vita di frontiera Contrassegnato con: accoglienza, creatività, David Maria Turoldo, DIY, Famiglia, Giulia, incarnazione, migranti, Natale, natività, presepe, ricerca, riflessioni, umanità

Un presepe riciclato per un Natale diverso. Terza parte: legnetti, foglie, e aromi dalla cucina

15 Dicembre 2020 Lascia un commento

Se nel corso del weekend siamo riusciti a lavorare parecchio al progetto di presepe "riciclato", lunedì ha portato la consueta baraonda della settimana, con lavoro e scuola. Il lavoro di questi tempi è però soprattutto telelavoro da casa, cosa che mi … [Continua a leggere] infoUn presepe riciclato per un Natale diverso. Terza parte: legnetti, foglie, e aromi dalla cucina

Archiviato in:Vita di frontiera Contrassegnato con: creatività, DIY, Famiglia, Giulia, Natale, presepe

Un presepe riciclato per un Natale diverso. Seconda parte: biacca, dettagli, e un po' di luce

13 Dicembre 2020 2 commenti

È domenica mattina, Giulia studia l'Illuminismo in camera sua, io mi porto avanti con il presepe di materiale riciclato che abbiamo deciso di fare per questo Natale. L'idea è quella di dare una base di colore a tetti, pareti e terreno, alla quale poi … [Continua a leggere] infoUn presepe riciclato per un Natale diverso. Seconda parte: biacca, dettagli, e un po' di luce

Archiviato in:Letture e riflessioni, Vita di frontiera Contrassegnato con: creatività, DIY, Famiglia, Giulia, Leonard Cohen, luce, Natale, presepe

Un presepe riciclato per un Natale diverso. Prima parte: cartone, stucco e pazienza

12 Dicembre 2020 2 commenti

Quest’anno Natale sarà per la prima volta molto diverso dagli anni passati. A causa della pandemia e delle restrizioni dei movimenti, per la prima volta lo passeremo lontani dall'Italia, dove ogni anno siamo rientrati per ritrovare famiglia e amici. … [Continua a leggere] infoUn presepe riciclato per un Natale diverso. Prima parte: cartone, stucco e pazienza

Archiviato in:Vita di frontiera Contrassegnato con: creatività, DIY, Famiglia, Giulia, Natale, presepe

Quando la settimana inizia con qualcuno che ti ricorda che viviamo su un crinale precario della stabilità dell'universo

5 Ottobre 2020 6 commenti

La mia settimana è iniziata con un workshop di ATLAS dedicato alle misure delle proprietà di interazione tra il bosone di Higgs e il quark top. Per l'occasione, gli organizzatori hanno invitato una collega teorica a fare il punto di quello che … [Continua a leggere] infoQuando la settimana inizia con qualcuno che ti ricorda che viviamo su un crinale precario della stabilità dell'universo

Archiviato in:Fisica Contrassegnato con: bosone di Higgs, domande, fine tuning, metastabilità, multiverso, principio antropico, quark top, stabilità, universo

[Colonne sonore] Love hurts

25 Settembre 2020 2 commenti

https://www.youtube.com/watch?v=kmnAOu124g4 Da un po' di tempo ascolto molto più jazz di quanto non facessi nel passato. Sarà un segno dell'età, o forse è soltanto il maturato desiderio di espandere un po' i miei orizzonti musicali, tanto in … [Continua a leggere] info[Colonne sonore] Love hurts

Archiviato in:Vita di frontiera Contrassegnato con: autunno, chitarra, colonne sonore, jazz, Julian Lage, Love hurts, musica, Telecaster

[Colonne sonore] There should be laughter after pain

22 Settembre 2020 3 commenti

https://www.youtube.com/watch?v=Y0oeqL2uvFA Da quando è iniziata la scuola, a casa nostra la sveglia suona alle 6:45. Grazie a una fortunata desincronizzazione degli orologi, quella del mio telefono parte circa 30 secondi prima dell’orribile … [Continua a leggere] info[Colonne sonore] There should be laughter after pain

Archiviato in:Vita di frontiera Contrassegnato con: autunno, chitarra, colonne sonore, Dire Straits, Giulia, Mark Knopfler, musica, riflessioni, Romeo and Juliet, speranza, Why worry

[Colonne sonore] Si fa a strisce il cielo

20 Settembre 2020 6 commenti

https://www.youtube.com/watch?v=leZ6KEkgAl0 La vedi nel cielo quell' alta pressione, la senti una strana stagione? Ma a notte la nebbia ti dice d' un fiato che il dio dell' inverno è arrivato. Francesco Guccini, Quello che non Dall'inizio di … [Continua a leggere] info[Colonne sonore] Si fa a strisce il cielo

Archiviato in:Vita di frontiera Contrassegnato con: colonne sonore, entropia, estate, fine, Guccini, inizio, memoria, musica, Quello che non, settembre

  • Vai alla pagina 1
  • Vai alla pagina 2
  • Vai alla pagina 3
  • Pagine interim omesse …
  • Vai alla pagina 90
  • Vai alla pagina successiva »

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é. Da qualche tempo rispondo a domande di fisica (e non solo) sul podcast Tu che sei un fisico.

Archivi

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

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.
Necessario
Sempre attivato

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 necessario

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.