Calendrier de l'avent 🎄 (mais sans chocolats)

Hey, on est en décembre!
Reprise en douceur avec le jour 1, pas trop prise de tĂȘte.

4 « J'aime »

Eh, eh
 a la vue du board privé: Leaderboard - Advent of Code 2024
Y’a dĂ©jĂ  2-3 candidats :smiley:

Je monte dans le train mais cette annĂ©e j’ai un autre calendrier de l’avant au boulot qui va sĂ»rement me bouffer mon temps de cerveau disponible
 je vais probablement ĂȘtre en touriste quand ça se complexifiera! Wait’n see :santa: :christmas_tree:

La heat map du leader board https://aoc.xhyrom.dev/ :grinning:

1 « J'aime »

Et donc Day 1 en Python:
Je redécouvre les joies du map!

Résumé
def resolve_part1():
    return sum(list(map(lambda left,right: abs(right-left), sorted(data.left), sorted(data.right))))

def resolve_part2():
    return sum(list(map(lambda left: left * data.right.count(left), data.left)))

Day 2: Un soluce sur le net avec des set. Brilliant!

Résumé
def is_safe(row):
    inc = {row[i + 1] - row[i] for i in range(len(row) - 1)}
    return inc <= {1, 2, 3} or inc <= {-1, -2, -3}

print(sum(is_safe(report) for report in data.fields))

Bon pas grand chose Ă  dire pour l’instant. MĂȘme ce week-end c’était pas plus dur que les autres jours, tout se fait directement et en brute force ça peut passer. Il y a juste le jour 4 oĂč je trouvais la partie 2 plus facile que la partie 1 (moins prise de tĂȘte d’extraire les diagonales).

Je sens venir la grosse douille trĂšs bientĂŽt.

Tout pareil, mĂ©lange d’anticipation et d’apprĂ©hension, le week-end Ă©tait beaucoup trop tranquille, y’avait qu’à dĂ©rouler un algo sans trop mettre en marche les neurones.

À noter que du coup, il semblerait que le top 100 soit bien squattĂ© par les utilisateurs de code gĂ©nĂ©rĂ© par A.I. , malgrĂ© l’interdiction de son utilisation dans les rĂšgles officielles. Faudrait mettre en place un classement dĂ©diĂ©, ça n’empĂȘcherait pas les tricheurs mais je pense que la plupart des participants font juste ça pour voir jusqu’à oĂč ça peut passer, sans volontĂ© de tricher en prĂ©tendant ne pas utiliser l’AI.

TrÚs intéressant pour ce jour 12 de voir que presque personne dans le top 100 premiÚre partie (avec des temps de 14s à 2 minutes) ne se retrouve dans le top 100 deuxiÚme partie (temps entre 7 et 17 minutes).

Les choses sérieuses commencent, les LLMs ne suffisent plus !

Amusez-vous bien pour le Jour 14 partie 2.

Ce n’est pas fonciĂšrement dur mais ça oblige Ă  essayer tout un tas d’hypothĂšses sur ce qu’il faut chercher
 honnĂȘtement j’ai un peu galĂ©rĂ© mais j’ai vraiment apprĂ©ciĂ© !

1 « J'aime »

Effectivement bien sympa aujourd’hui, je commençais Ă  trouver les puzzles de cette annĂ©e ennuyeux.

J’ai perdu pas mal de temps sur cette partie 2 parce que je pensais que tous les robots aller former le sapin et que du coup on aurait des symĂ©tries ou des absences de robots dans les coins.
C’est sur que si on sait à l’avance quoi chercher, ça facilite les choses.

1 « J'aime »

Jour 17 partie 2 pas évidente pour moi.
J’ai bien compris ce que faisait le programme exemple de la partie 2.
Pour mon input Ă  moi, j’ai dĂ©codĂ© ce que faisait le programme, mais la solution est pas encore mature dans mon cerveau pour construire la solution. Je sens qu’on peut construire la solution « Ă  la main Â».
Dans mon programme, les 3 derniers bits (inversĂ©s) de A permettent de dire quels oĂč se trouvent les 3 bits dans A qui constituent la sortie (une fois inversĂ©). On vire les 3 derniers bits de A et on recommence


Tout pareil. J’ai essayĂ© de dĂ©rouler mon algo sur le papier pour voir comment les bits des diffĂ©rents registres interagissent, je pensais avoir trouvĂ© un truc, mais en fait non.

J’ai aussi essayĂ© de partir de la fin de l’algo et le remonter en sens inverse (sur le papier), mais sans rĂ©sultat probant.

La prochaine Ă©tape c’est un debugging plus poussĂ© pour voir si mes connaissances thĂ©oriques en binaire ne sont pas toutes moisies.

Bon j’avais mal decodĂ© mon programme, je trouvais bizarre de ne pas utiliser C. :sweat_smile:

Du coup j’ai fait un algo pour construire toutes les solutions possibles normalement. Il ne m’en sort qu’une
 Mais ma solution est trop grand apparemment! Pourtant pour chaque chiffre Ă  produire j’essaie chaque combinaison de 3 bits qui peuvent terminer A, j’en deduit la valeur minimal que A peut avoir. Et pour chaque nombre Ă  produire je decale de 3 bit et fait un OU puis vĂ©rifie que ma solution est toujours bonne. Je dois avoir un subtil bug qqart


Je viens de finir le jour 17, ENFIN. J’ai essayĂ© longtemps de comprendre ce que l’algo faisait et comment pouvoir remonter le fil, mais j’ai laissĂ© tomber.

J’ai quand mĂȘme mis longtemps pour trouver cette solution dĂ©gueulasse:

  • Je commence par executer le programme sur toutes les valeurs possibles ayant 10 bits (j’avais essayĂ© avec juste 7 bits au dĂ©but mais ça ne marche pas).
  • Je ne garde que les valeurs candidates pour lesquelles le programme output le bon premier chiffre
  • Pour chacune de ces valeurs candidates, je rajoute toutes les combinaisons de 3 bits possible au dĂ©but de la valeur, et j’execute mon programme sur chacune et ne garde que celles pour lesquelles le programme retourne les 2 premiers chiffres corrects.
  • Je continue comme ça pour chaque chiffre du programme en ajoutant toutes les combinaisons de 3 bits au dĂ©but des valeurs encore en lice, jusqu’à avoir toutes les valeurs possibles Ă  la fin (j’en avais 220), et je ne garde que la plus petite.

Tant que ça marche
 :slight_smile:

Je m’en suis sorti aussi, mais beaucoup beaucoup plus simple :grin:

Il faut reconstruire le programme en partant de la fin : je teste les 8 valeurs à 3 bits, et je garde que celles qui me retournent le dernier chiffre du programme. Pour les solutions possibles, je shift de 3 bits vers la gauche, et de nouveau j’ajoute les 8 nombres possibles et je ne garde que les solutions qui me retournent le 2 derniers chiffres du programme. Puis je reshift les solutions de 3 bits, etc etc.
Au final j’avais 12 valeurs possibles.

Bah lĂ  avec le jour 21 je suis en train de regretter les puzzles 2D
 J’aime bien les puzzles 2D, tu utilises Dijkstra et puis en gĂ©nĂ©ral ça marche, je gĂšre Ă  peu prĂšs :slight_smile:

Ça fait 2 jours de suite ou j’arrive Ă  passer la partie 2 en force, et je n’arrive mĂȘme pas Ă  ĂȘtre un tout petit peu honteux de faire chauffer le CPU plutĂŽt que les neurones.

Mais je bloque toujours sur la partie 2 du jour 21. C’est pĂ©nible parce que je m’interdis d’aller sur le Reddit d’Advent of Code pour ne pas me spoiler, mais du coup je suis sĂ»r que je loupe plein de memes sympas :slight_smile:

Oui ces derniers jours la partie 2 met dans les 5 secondes Ă  s’exĂ©cuter mais ça suffit.
pour le jour 21 j’ai mis un peu de temps, mais ça se fait bien si on a le chemin optimal pour chaque couple de touches avec un peu de recursion + memoization.

Courage, je pense qu’on a passĂ© le plus dur.

En ce qui me concerne, tu as parlé trop vite :smiley:

AprĂšs avoir galĂ©rĂ© avec le code, j’ai finalement pris un papier et un crayon, et lĂ  ça commence plutĂŽt bien, mais je sens que ça ne va pas durer


Effectivement, pas encore eu le temps d attaquer la partie 2 mais j ai une petite idée pour attaquer ça