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 08/12/2023 23:35 | #
Ordonnancement #1
L'usine a reçu pour les quelques jours à venir un nombre relativement élevé de commandes, plutôt variées : visserie, plaques, produits finis... et il faut maintenant choisir dans quel ordre on veut les exécuter (ie. les ordonnancer) sur les deux machines disponibles.
On suppose une situation simple dans laquelle chaque commande prend un temps fixe à produire peu importe la machine utilisée, il n'y a pas d'ordre imposé, et on peut enchaîner les tâches instantanément. L'idéal c'est donc de répartir les tâches entre les deux machines pour que les deux machines aient exactement la même quantité de travail et terminent en même temps.
Les 8 commandes ont les durées d'exécution en heures suivantes : 1, 2, 5, 1, 2, 3, 7, 3.
Déterminer de combien de façons on peut couper cet ensemble en deux part égales pour l'assigner aux machines. (On pensera à éviter les doublons. Les différentes tâches de même durée sont considérées différentes.)
Pièces du puzzle
Citer : Posté le 09/12/2023 08:33 | #
Celui-ci est facile, ça va me laisser du temps pour résoudre le précédent
Citer : Posté le 09/12/2023 08:39 | #
ah ah ! y'a un chat
J'adore les chats
Citer : Posté le 09/12/2023 09:34 | #
Il n'y a pas "un" chat. :P
Citer : Posté le 09/12/2023 16:45 | #
Y'a quelqu'un qui a résolu le problème "embouteillage mécanique" ?
Citer : Posté le 09/12/2023 17:05 | #
Pas encore, mais je pense que je ne suis pas loin
J'ai réussi à implémenter l'update des objets (avec des virages), la création des objets en fonction du temps et j'ai presque fini les jonctions avec les priorités.
Et après ça il me suffira de faire tester toute les combinaisons possibles de prioirités au programme et de faie la moyenne je pense.
Si je peux donner un conseil, c'est de commencer par créer une map plus simple. Ca simplifie énormément la création de l'algorithme je trouve.
Citer : Posté le 09/12/2023 20:21 | #
Bon visiblement y'a une espèce de sirène avec des cheveux bleus/verts ...
Pas facile de trouver des motifs avec les pièces dispos jusqu'à présent.
Quoique je pense avoir reconstitué un bout de ciel de 2x2 pièces.
Reconstituer le puzzle risque d'être tout aussi difficile que de résoudre les énigmes en fait
Citer : Posté le 09/12/2023 20:45 | #
Intéressant ton approche, Dimartino. Quand j'ai codé la version de référence la map fournie m'a suffi - j'espère que ça n'ajoute pas trop de complexité au problème.
En effet SlyVTT vous pouvez pas faire grand-chose pour l'instant. Pour info, la "sirène avec des cheveux bleus/verts" ça m'a fait beaucoup rire, tu verras pourquoi plus tard.
Sondage avant que je poste un autre problème ce soir...
Sondage rapide
J'aimerais évaluer le rythme et la difficulté des problèmes jusqu'à présent pour m'assurer que ça soit fun pour tout le monde. Si vous participez ou comptez participer :
Combien de problèmes avez-vous résolu à ce stade ?
Un avis sur la difficulté compte tenu du temps pour chaque problème : facile/lent, correct, difficile/rapide ?
Citer : Posté le 09/12/2023 20:54 | #
Hâte de comprendre pourquoi tu te marres avec la sirène.
Perso j'ai tout "décodé", les problèmes étaient globalement faciles sauf celui du 6/12 (avec les batteries) pour cause d'une petite incompréhension, mais avec la bonne compréhension du problème posé, ça allait bien au final.
Le problème du 7/12 me résistait donc comme j'ai pas trop le temps de pousser, je l'ai brute force "intelligemment", afin de me ramener à un nombre de combinaisons facilement testables et ensuite faire passer ma "moulinette" dessus.
Donc globalement je trouve que ça va.
Citer : Posté le 09/12/2023 21:29 | #
J'ai juste pas vraiment commencé, pour l'instant j'ai le premier jour. J'ai pas encore essayé de faire le second problème.
Citer : Posté le 09/12/2023 22:16 | #
Pour l'instant j'ai tous décodé sauf les deux derniers (je n'ai pas encore essayé le tout dernier).
Je trouve que le rythme est bien a part pour celui du 7/12 je pense qu'il aurait fallu laissé 3 jours il est vraiment dur, mais bon ce n'est que mon avis.
Incroyable boulot Lephe' c'est magnifique
Citer : Posté le 10/12/2023 00:28 | #
Merci pour les retour, pour les autres n'hésitez pas à ajouter les vôtres.
Ordonnancement #2
L'usine est enfin au propre avec les trois fourneaux correctement installés. Les trois fourneaux peuvent être utilisés simultanément, cependant, ils ne marchent pas tous à la même vitesse ; en simplifiant un peu, pour une tâche de taille t ils prennent respectivement 2t, 4t et 3t heures pour terminer le travail.
On a reçu 12 tâches de tailles 7, 5, 3, 4, 4, 3, 2, 6, 8, 3, 7, et 4 à produire pour la prochaine semaine. Déterminer combien d'heures au minimum il faudra pour toutes les compléter.
Pièces du puzzle
Citer : Posté le 10/12/2023 00:40 | #
Perso j'ai fais tout les problèmes à la main/ avec des petit script, à part celui des batteries panneau solaire, mais après les precision supplementaire j'ai reessayé et trouvé la solution.
Et celui du 6/12, je l'ai bruteforce mais je suis en train de faire un script pour resoudre automatiquement ce genre de problème.
Pour finir j'ai recup le puzzle de 2021 pour tester des algo qui font le puzzle a ma place (pour l'instant ça marche pas trop )
Pour l'instant c'est très amusant 💜
Citer : Posté le 10/12/2023 08:47 | #
Effectivement c'était pas une sirène, ça relève plus du mini-troll que de la sirène en fait
On a donc un chalet, ça c'est sûr car j'ai la moitié de la fenêtre et je pense qu'il y a quelques pingouins (ou manchots ...).
Car comme le dit le proverbe bourguignon : "Pingouins dans ton champ, hiver très méchant"
Citer : Posté le 11/12/2023 22:27 | #
Le problème d'aujourd'hui est finalement plus compliqué que je ne l'avais anticipé. Je baserai le problème de demain sur la même prémisse. Notez qu'on peut quand même le résoudre au papier sans coder (!).
Investissement intelligent
Les affaires sont en plein essor. Grâce à une allocation pour le développement durable des petites industries, une opportunité d'acquérir deux fours électriques se présente. Les fours électriques sont deux fois plus rapides que les fours en pierre et ils peuvent recevoir jusqu'à deux modules chacun pour améliorer leurs performances :
(Les effets sont additifs, pas multiplicatifs, donc par exemple avec deux modules Vitesse 3 la vitesse de production est 1+0.5+0.5 = 2× celle de base et l'énergie consommée est 1+0.7+0.7 = 2.4× celle de base.)
On souhaite choisir les modules qui rentabiliseront le mieux la production pendant le prochain mois, sachant que ça représente 24×30 heures de travail, avec chaque heure coûtant de base 40 € en énergie et produisant 50 € de bénéfices hors énergie. Les données sont résumées ci-dessous.
SPEED_EFFECT = [+0.2, +0.3, +0.5, 0, 0, 0]
ENERGY_EFFECT = [+0.5, +0.6, +0.7, -0.3, -0.4, -0.5]
PRODUCT_VALUE = 50 # € / hr / speed unit
ENERGY_COST = 40 # € / hr / energy unit
HOURS = 24 * 30 # hr
L'objectif à optimiser est donc le suivant : valeur totale des produits (50 fois le nombre d'heures fois le facteur de vitesse) moins le coût de l'énergie (40 fois le nombre d'heures fois le facteur d'énergie) moins le coût total des modules.
Déterminer la combinaison de 4 modules qui est la plus avantageuse. La réponse à ce problème est les numéros des modules (0 pour une absence de module) par ordre croissant ; par exemple, si l'optimal est de prendre deux modules Vitesse 2, un module Efficacé 3 et pas de quatrième module, la réponse sera 0226.
Pièces du puzzle
Youuh, je poste "tôt" aujourd'hui
Citer : Posté le 12/12/2023 07:53 | #
J'avais pas vu que le pingouin était en entier
Il mange bien à la cantine le bestiaux, il est un peu "grassouillait"
Le ciel risque d'être compliqué à rassembler il y a pas mal de pièces qui se ressemblent beaucoup avec juste 1 ou 2 pixels différents. Je sens que ça va être chaud.
Citer : Posté le 12/12/2023 08:36 | #
J'avoue être surpris par la solution au problème du jour, je ne m'attendais pas à cet optimum
(note pour plus tard : bien lire l'énoncé, notamment les parties en italique)
Citer : Posté le 12/12/2023 15:36 | #
Sly je sais pas à quel moment tu réalises que tout le beau monde sur l'image c'est des membres du forum
Pour les pièces avec des petits écarts j'ai pas fait attention mais ce sera pas compté dans la solution si c'est mineur. Sinon je répondrai aux soumission avec "telle pièce est pas à la bonne place" et ce sera valide aussi modulo un aller-retour en plus (il faudra donc réagir vite).
Pour le problème d'hier, si on regarde bien la prémisse droit dans les yeux on peut réaliser au papier que la solution doit avoir la forme que tu as observé. C'est pour ça qu'il est "facile" en principe.
Citer : Posté le 12/12/2023 15:46 | #
Sly je sais pas à quel moment tu réalises que tout le beau monde sur l'image c'est des membres du forum
Oui je me doutais un peu (sachant que tu as parlé d'un dinosaure, j'espère juste que c'est pas moi le dino XD).
J'ai identifié un chat (moi ?), un pingouin (Ptitjoz ?), ma "sirène" troll (Alice ?) ...
Je t'imagine en train de te marrer devant ce post
Pour les pièces avec des petits écarts j'ai pas fait attention mais ce sera pas compté dans la solution si c'est mineur. Sinon je répondrai aux soumission avec "telle pièce est pas à la bonne place" et ce sera valide aussi modulo un aller-retour en plus (il faudra donc réagir vite).
Tu es bien bon avec nous, merci Lephé
Pour le problème d'hier, si on regarde bien la prémisse droit dans les yeux on peut réaliser au papier que la solution doit avoir la forme que tu as observé. C'est pour ça qu'il est "facile" en principe.
Oui en fait le problème est extrêmement plus simple que ce qui parait au premier abord. Il y a de "l'enrobage" qui sert à noyer le poisson. Une fois ramené à l'os, effectivement la solution est hyper logique compte tenu de rapport bénéfice/cout des 3 options "utiles".
Citer : Posté le 12/12/2023 17:39 | #
Fiouh je me rapproche de la solution du problème embouteillage mécanique je pense. J'ai un programme qui arrive à updater toutes les grilles possibles je pense. Mais je n'arrive pas à trouver d'algo qui me permettent de tester toutes les possibilités des 7 priorités ... Quelqu'un aurait une piste ?
Citer : Posté le 12/12/2023 17:45 | #
Tu coinces sur quoi ?