Le Puzzle de l'Avent 2024
Posté le 01/12/2024 17:58
Décembre, c'est attendre les fêtes dans une ambiance cozy, un plaid sur le dos et une tasse de thé à la main, avec un puzzle sous les yeux et du Python pour se remuer les neurones. Et vous toutes et tous invité·es !
Pour le principe de l'événement et les lots qui sont à remporter (une Graph Math+ moddée et une coque ou housse), voyez
l'article d'annonce de l'événement. Je ne vous remets ici que les points principaux
- Presque chaque jour de Décembre, je posterai un problème à résoudre, qui prendra cette année la forme d'un programme Python ayant un souci de performance ou de fonctionnalité à corriger.
- Une fois corrigé le programme Python, lorsque lancé, affichera sa « solution », un gros nombre permettant de décoder les pièces de puzzle du jour.
- Réassemblez le puzzle pour gagner des lots et le titre de Maître du Puzzle !
Mon intention est d'alterner entre des problèmes « plutôt faciles » (avec 1 jour laissé pour trouver la solution) et des problèmes « plutôt difficiles » (avec 2 jours laissés pour trouver la solution) pour que ce ne soit pas trop la course pour vous.
Si vous trouvez des solutions créatives, mathématiques, algorithmiques qui vous permettent de trouver le résultat sans lancer le programme Python, c'est valide aussi ! Je vous invite à vous en vanter dans les commentaires si ça arrive. Si vous trouvez un moyen de cheese le puzzle entier (i.e. avec une astuce qui marche pour tous les problèmes), vous ne pourrez pas prétendre au lots principaux, mais ça comptera quand même comme une résolution.
En juste admin qui fait trop de choses en même temps, je n'ai pas fini d'apporter les touches finales au puzzle, donc je vous donnerai les pièces du puzzle d'aujourd'hui et le script de décodage demain.
Comme vous pouvez le voir à la bannière, le puzzle est pas moche !!
À vos calculatrices dans les commentaires, bon courage tout le monde ! o/
Liste des problèmes :
Citer : Posté le 01/12/2024 18:09 | #
Penguin Programming Party
Cette année toute la communauté de Planète Casio a été invitée à une fête dans le Sud. Très dans le Sud d'ailleurs, puisqu'il s'agit de la première édition de la Penguin Programming Party organisée en terre Adélie. 🐧
Les manchots ont fait appel à vous pour entraîner leur Python-fu et auront un certain nombre de questions, casse-têtes, et autres jeux marrants à vous soumettre. Ils ne sont pas encore très forts en Python mais ils ont l'esprit affûté donc attention à ne pas tomber dans leurs pièges !
Avant votre départ pour l'Antarctique vous avez reçu par pingouin voyageur une petite énigme pour vous échauffer. Déterminez ce que le programme suivant affiche.
if n == 0:
return 3
if n == 1:
return -7
return u(n-2) - u(n-1) + 1
print(u(80))
Comme indiqué dans le post principal, les pièces d'aujourd'hui sont délayées jusqu'à demain pour que je puisse aporter les touches finales au puzzle ! Elles arrivent bientôt !
Citer : Posté le 01/12/2024 19:29 | #
Besides the end of the event, is there an actual deadline on completion of each puzzle, or is it more of a recommendation so as to not fall too far behind?
“They call me the king of the spreadsheets, got 'em all printed out on my bedsheets.” — “Weird Al” Yankovic
Citer : Posté le 01/12/2024 19:54 | #
That's 100% a recommendation. You can solve all the problems on Dec. 24th if you're confident. As far as how late you can submit your solution, there's no hard limit. Latest I've had was January 2nd last year I think. I usually like to put the full puzzle on a front page article as soon as the prizes are claimed, so submissions after that should provide some scripts or evidence of solving.
Citer : Posté le 01/12/2024 21:43 | #
Puisque je vois que dans le chat il y a de la compétition sur ce premier problème, je propose de comparer. Pour tenir compte des écarts de puissance entre les machines, je suggère le benchmark suivant :
Pour correction, u(10000) commence par 3107 et se termine par 6253.
Sur ma machine #2 prend 12.5 secondes et avec la solution de référence #1 prend 8.9 secondes soit un score de 0.712. Plus c'est bas mieux c'est.
Citer : Posté le 01/12/2024 21:54 | #
Perso j’ai un score de 0,561, si mes calculs sont bons.
Citer : Posté le 01/12/2024 21:56 | #
Joli ! J'ai implémenté la solution que j'avais en tête en vous lisant dans #projets, je descends à 0.08.
Citer : Posté le 01/12/2024 22:02 | #
chez moi en python 3.12 sur un Core i5 9300HF @ 2.40GHz
u(40) originel prend 19.6709s
5000 itérations de u(10000) optimisée prennent 18.3169s
soit un ratio de 0.931
PS : édité car erreur de copier coller
Citer : Posté le 01/12/2024 22:48 | #
sur mon tel avec un proco hisilicon kirin 710:
u(40) ~ 81.6 secondes
et 5000 fois u(10000) optimisé pareil
pour un ratio de 1.02
update: second essaie et ratio de 0.55
Citer : Posté le 01/12/2024 22:52 | #
Sur mon R5 4500U :
#1 = 15.121s
#2 = 20.556s
Pour un ratio de 0.73560, pas mieux que les autres
Caltos : G35+EII, G90+E (briquée )