Le Puzzle de l'Avent 2023
Posté le 01/12/2023 23:05
Bienvenue, cette année encore, dans le Puzzle de l'Avent de Planète Casio.
Le Puzzle est presque une tradition maintenant, je n'en fais pas toutes les années (
2018,
2019,
2021) mais c'est un des événements que j'apprécie le plus. J'espère que c'est le cas pour vous aussi parce qu'il y a de quoi bien s'amuser !
Aux dernières éditions, on a exploré quelques problèmes d'informatique théorique — avec des graphes, des ensembles, de l'optimisation... cette année on va faire un peu différent : on va prendre un approche un peu plus pratique avec des problèmes que vous pouvez résoudre en
programmant. Parfois vous pourrez calculer la solution de tête, d'autres fois vous pourrez écrire un petit programme Python qui fera le calcul pour vous. On n'aura pas de problème très difficile cette année donc vous devriez vous en sortir même avec des programmes naïfs ou peu optimisés. Seul le tout dernier problème sera un peu dur, pour éviter que ce soit la course au premier connecté le 25 pour finir le puzzle. :3
Le but du jeu est de reconstituer un Puzzle dont les pièces seront données chaque jour. Le puzzle en lui-même est une image en pixel art de 198×112 pixels, juste ce qu'il faut pour tenir à l'écran d'une Graph 90+E. Comme dans la formule précédente, les pièces seront données chaque jour «brouillées» et pourront être débrouillées en calculant (ou faisant calculer à un programme) la solution d'un petit problème mathématico-informatique.
Conformément à la tradition, il y a un prix à gagner pour la première personne à reconstituer le puzzle : une
calculatrice Graph 90+E. Pour ceux d'entre vous qui n'ont pas le plaisir d'en posséder une, je ne peux que la recommander ; pour preuve depuis que j'ai commencé à jouer avec je suis pas revenu aux mono. :P
Ce lot provient de notre partenariat avec
CASIO Éducation.
Plus d'informations sur la Graph 90+E dans sa fiche « Tout sur ta CASIO ! ».
L'autre lot bien sûr c'est que toutes les personnes qui finissent le puzzle se voient attribuer le titre de
Maître du Puzzle.
Comme j'ai encore quelques détails à ajuster, le premier problème sera donné demain avec le premier ensemble de pièces. Préchauffez vos éditeurs d'images et de code Python !
---
Notes du futur :
Le puzzle a été résolu par :
Citer : Posté le 23/12/2023 22:24 | #
Tu as un script dans un des premiers posts ou tu rentre tes résultats et le script débrouille les pièces.
Petite question : on a combien de temps après le 25 pour résoudre le puzzle ?
Je confirme ce que SlyVTT a avancé. Vous avez le temps qu'il vous faudra. L'ultime puzzle le 25 sera certainement posté un peu plus tard dans la journée. Je vise que ce soit un problème un peu long, mais pas fondamentalement plus difficile que les précédents : le but est que ce ne soit pas la course à qui esquiverait les célébrations pour se jeter le premier sur l'énoncé.
L'image sera affichée dans l'article de Noël sans doute peu après que le gagnant ait été choisi, mais vous aurez le temps de résoudre au moins jusqu'au 1er Janvier (en donnant la liste des solutions du coup) pour faire valoir votre titre bien mérité.
A bon? Dans quel post ? et il reste combien de temps, je vais essayer de commencer
C'est serré mais il n'est pas fondamentalement trop tard haha, si tu coinces n'hésite pas à demander un indice !
Le puzzle est quand même pas facile à reconstituer, il y a pas mal de briques qui sont vraiment difficiles à positionner, entre le ciel, la neige et les sapins, c'est chaud patate
Oui j'ai réalisé ça après avoir fini l'image parce que c'est très chargé x) Je n'ai pas du tout essayé ce processus à la main. Si ça ajoute du challenge c'est bien !
L'image est en effet au top de mes capacités en pixel art, j'en suis très fier. :3
Citer : Posté le 23/12/2023 22:33 | #
ok, je voulais demander une question: comment on fait pour telecharger la bibliotheque PIL. Python ne le reconnait pas . En plus, je savais qu'il était trop tard pour moi
Citer : Posté le 23/12/2023 22:41 | #
Tu peux regarder les instructions sur Windows ici : https://pillow.readthedocs.io/en/stable/installation.html
(Contexte : PIL est une vieille lib, Pillow est une version plus moderne qui s'utilise de la même façon et la remplace, donc quand il te dit "Pillow est incompatible avec PIL" c'est pas un problème.)
Citer : Posté le 23/12/2023 22:43 | #
Donc he dois juste aller sur le terminal de VS code et je tape :
( oui, j'utilise VS Code )
Citer : Posté le 23/12/2023 22:47 | #
Si tu as pip ouais c'est easy.
Citer : Posté le 23/12/2023 22:48 | #
Ok, j'esserai demain: la je vais dormir
Salut
Citer : Posté le 23/12/2023 23:38 | #
Réinitialisation coriace
L'un des fours est tombé en panne. L'erreur semble assez sévère, et la plupart des fonctions ne marchent pas correctement. Le four est hautement technologisé avec plein de fonctions un peu obscures cachées derrière un système informatique. Essentiellement, il y a une combinaison de boutons physiques et de saisies sur un écran tactile ; les boutons physiques marchent très bien, l'écran tactile pas tant que ça.
De ce qui nous intéresse, le four possède 4 écrans possibles : éteint, écran principal, menu de paramètres, et menu de diagnostique. Initialement le four est vide et on vient de l'allumer ; on se situe donc sur l'écran principal avec la saisie tactile cassée. Le but est d'atteindre le menu de diagnostique avec la saisie tactile fonctionnelle pour pouvoir utiliser les fonctions avancées de la machine et comprendre la source de l'erreur.
Vos actions possibles sont les suivantes (toutes sont des actions physiques) :
Vous avez observé les comportements suivants :
Déterminer la plus courte séquence d'actions qui permette d'atteindre le menu de diagnostique avec la saisie tactile recalibrée.
Pièces du puzzle
Deux jeux (avec la même solution) parce que je vais pas poster un problème le 24 au soir. xD
Citer : Posté le 24/12/2023 15:00 | #
Quelques questions pour bien comprendre ce problème :
- quand on fait une action dans le menu paramètre (par exemple lancer la chauffe), une fois l'action finie, reste t on dans le menu paramètre ou sommes nous de retour au menu principal ?
- A partir de quand un four est il chaud ? Est-ce dès le lancement action chauffe ? Ainsi peut on avoir en consécutif les actions "Chauffer" et l'astuce pour accéder à la calibration "de force" (si on est dans le bon menu bien sûr).
Citer : Posté le 24/12/2023 15:03 | #
Question par rapport au problème "Travail manuel" : c'est quoi la distance euclidienne ?, j'ai regardé sur internet mais je n'ai pas compris
Citer : Posté le 24/12/2023 15:11 | #
C’est la vraie distance entre 2 points calculée avec le théorème de Pythagore.
Citer : Posté le 24/12/2023 15:30 | #
Réponse aux questions posées ici plus quelques-unes d'Afyu par MP.
- quand on fait une action dans le menu paramètre (par exemple lancer la chauffe), une fois l'action finie, reste t on dans le menu paramètre ou sommes nous de retour au menu principal ?
On reste dans le menu d'origine. Pour revenir au menu principal tu peux éteindre et rallumer le four éventuellement.
Dès que l'action #5 est finie le four est chaud et la plaque dedans est chaude aussi. On considère que tout est froid de nouveau une fois que as retiré la plaque (action #6). En pratique oui tu vas calibrer juste après ou peu après l'action #5.
Question par rapport au problème "Travail manuel" : c'est quoi la distance euclidienne ?, j'ai regardé sur internet mais je n'ai pas compris
Oups, j'aurais peut-être dû dire la "distance" tout court (dans ma tête y'a tant de distances différentes je me sens obligé de préciser !). Je confirme ce que Sly a répondu, la distance euclidienne entre (x1, y1) et (x2, y2) est √((x2-x1)² + (y2-y1)²). Il y a un exemple dans le sujet.
Lorsque tu dis que le four "autorise" la chauffe de la plaque lorsqu'il démarre en contenant une plaque vide, je le comprends comme : on peut lancer la chauffe de la plaque mais ça ne se fait pas automatiquement au démarrage. Ai-je bien compris ?
Pas tout à fait. Si tu démarres le four à vide alors le mode "panne, faites venir un technicien" s'engage et tu ne peux pas chauffer du tout. Si tu veux chauffer, tu es alors obligé d'éteindre le four et de le rallumer avec une plaque dedans. Auquel cas "tout est normal" et tu peux lancer la chauffe avec l'action #5 quand tu veux (pas forcément juste après avoir démarré).
Très bonne remarque. J'imaginais bien que j'aurais laissé passer quelque chose (faut voir l'heure haha xD). Tu ne peux pas démarrer le four tant qu'il reste de l'acier chaud dedans, c'est dangereux.
Ce sont des actions physiques. Aucune action dans tout l'exercice ne nécessite la saisie tactile, il faut juste que la saisie tactile soit fonctionnelle lorsque tu arrives dans le menu de diagnostique à la fin de la séquence.
Tout à fait, les déplacement de menus sont des actions physiques. Je l'avais indiqué à un moment mais après quelques éditions je réalise que c'est de nouveau ambigu. J'ai modifié pour éclaircir.
Merci pour vos retours rapides !
Citer : Posté le 24/12/2023 19:08 | #
Merci Lephé pour les détails supplémentaires, ça a bien aidé
Bon Réveillon à Toutes et Tous.
Citer : Posté le 25/12/2023 13:12 | #
J'ai des questions supplemantaire pour cette histoire de four.
- Est-ce que le four doit être eteind pour que l'on puisse retirer/mettre une plaque ?
- au démarage arrive t'on sur le menu principal ?
-peut-on eteindre le four peu importe le menu ?
Citer : Posté le 25/12/2023 13:23 | #
Non tu peux ajouter retirer des plaques four éteint, mais aussi four allumé.
Et oui tu arrives dans le menu principal.
Tu peux éteindre n’importe quand.
Citer : Posté le 25/12/2023 15:22 | #
Merci Sly, je confirme toutes les réponses.
* en fait non tu ne peux mettre/enlever les plaques que quand le four est éteint
Citer : Posté le 25/12/2023 15:46 | #
ya pas des sequence equivalente du coup ?si je peux mettre une plaque puis eteindre ou eteindre puis metre une plaque ?
Citer : Posté le 25/12/2023 15:48 | #
Hmm... c'est vrai, zut. Tu ne peux mettre ou enlever une plaque que quand le four est éteint.
Citer : Posté le 25/12/2023 15:51 | #
Effectivement et maintenant que tu le dis j’ai eu ce souci avec la solution juste avant de la trouver.
Désolé de t’avoir induit en erreur si c’est le cas.
Citer : Posté le 25/12/2023 16:01 | #
Sinon, fait marrant, j'ai tenté le bruteforce en parralel, et j'ai trouvé que le nombre 631085 donnait des piece décodé avec etonnament peu d'entropie
Citer : Posté le 25/12/2023 16:08 | #
Ton brute force est vraiment brute car il peut pas y avoir de « 0 » dans la solution.
Citer : Posté le 25/12/2023 17:45 | #
Et voici le dernier problème de ce puzzle ! J'espère que vous aurez pris autant de plaisir à le résoudre que moi à le construire.
Comment soumettre sa participation
En vous connectant à votre compte, envoyez-moi un message privé dans lequel vous indiquerez bien :
Il n'est pas nécessaire d'avoir absolument tout juste au pixel près sur le puzzle, surtout vu que l'image est chargée et les détails sont pas toujours faciles à distinguer. Pour éviter tout biais dans mon évaluation, les participations seront considérées valides s'il y a 6 pièces ou moins dont des pixels diffèrent de l'original, et les dates d'envoi des messages privés font foi. J'espère que ces conditions satisfont vos attentes d'équité pour la compétition.
Je contacterai plus tard le ou la gagnant·e pour planifier l'envoi du lot et en particulier demander vos coordonnées postales.
Travail manuel #3
Ce problème est la suite et fin du problème travail manuel du 14/15 Décembre. Dans Travail Manuel #1 et #2, on a cherché un circuit pour déplacer manuellement des plaques de métal entre des fours et coffres pré-positionnés de façon à minimiser le temps perdu durant lequel les fours attendaient qu'on vienne chercher les plaques.
Bien sûr, le positionnement proposé des fours et coffres n'était pas parfait : il suffisait de les rapprocher pour augmenter l'efficacité. Dans ce problème, on cherche à déterminer quel est le positionnement idéal. L'image et le code ci-dessous indiquent l'emprise au sol de chaque four ou coffre.
[" ###",
"#####",
" ##o#",
" ..."]
SHAPE_CHEST_1 = \
[" . ",
".o.",
"###"]
SHAPE_CHEST_2 = \
["###",
".o.",
" . "]
Il n'y a qu'une seule disposition possible pour les fours (SHAPE_FURNACE) mais il y a deux options pour les coffres (SHAPE_CHEST_1 et SHAPE_CHEST_2) selon si on met le tapis roulant au-dessus ou en-dessous. Dans chaque forme, les "#" représentent des cases occupées, le "o" représente le point où on interagit avec le four/coffre (i.e. les coordonnées dans le tableau STATIONS du 14/15 Décembre - c'est un type de case occupée), et les "." représentent des espaces qui doivent rester libres autour du point d'interaction.
On veut placer deux fours et deux coffres dans l'usine de taille 9x8, c'est-à-dire choisir la disposition qui était précédemment donnée sous la forme du tableau STATIONS (pour rappel l'ordre c'est un four, un coffre, un four, un coffre). Un placement est valide si les fours/coffres ne se superposent pas, c'est-à-dire s'il n'y a aucune case qui est utilisée en même temps par deux objets différents (sauf si c'est deux ".").
Une fois les objets placés, on se retrouve dans le formalisme du 14/15 Décembre. En particulier, on imagine qu'on se déplace en ligne droite entre les points d'interactions : on ignorera complètement tous les murs. Votre code pour Travail Manuel #1 et #2 doit être utilisable tel quel.
Votre mission est de déterminer quelles sont la meilleure disposition et la meilleure stratégie de parcours (circuit) de longueur au plus 8 sur 1000 minutes. Vous devez donc trouver toutes les dispositions valides de deux fours et deux coffres, pour chacune d'entre elles faire la résolution du 14/15 Décembre, et retenir la disposition qui maximise le nombre total de plaques collectées.
La solution de ce problème est la séquence formée des chiffres du nombre maximum de plaques collectées, des positions des fours/coffres (x puis y dans l'ordre du tableau STATIONS), et des chiffres du circuit. Par exemple, si les stations optimales sont [(0, 3), (1, 0), (4, 2), (7, 1)], le circuit optimal est [0, 1, 2, 3, 2, 0] et le total est 150, la solution sera 15003104271012320.
Quelques indices pour vous guider :
Bon courage !
Pièces finales du puzzle