Hey, on est en décembre!
Reprise en douceur avec le jour 1, pas trop prise de tĂȘte.
Eh, eh⊠a la vue du board privé: Leaderboard - Advent of Code 2024
Yâa dĂ©jĂ 2-3 candidats ![]()
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
![]()
La heat map du leader board https://aoc.xhyrom.dev/ ![]()
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Ă© !
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.
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. ![]()
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⊠![]()
Je mâen suis sorti aussi, mais beaucoup beaucoup plus simple ![]()
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 ![]()
Ă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 ![]()
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 ![]()
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
