Suite de l'Avent du Code, jour 22.
Après s'être joué de nous, les singes nous filent un coup de main pour trouver le verger.
Et ils ont même de quoi nous aider à trouver le mot passe pour en ouvrir la porte.
Il faut se balader sur une carte et trouver les coordonnées du point d'arrivée.
# Mode triche on
Posté par Eric P. . Évalué à 4.
Ce coup ci j'ai ete paresseux, et pour la deuxieme partie mon code ne marche pas avec tous les inputs.
J'ai fait le cube correspondant a mon input en papier en inscrivant le numero des faces, pour voir quelle face transitionnait vers quelle face, et j'ai hardcode le passage d'une face a l'autre (methode wrap3D).
Excusez l'absence d'accents dans mes commentaires, j'habite en Australie et n'ai pas de clavier francais sous la main.
[^] # Re: Mode triche on
Posté par Yth (Mastodon) . Évalué à 5.
Ma grippe m'a rattrapé, le premier exo nickel, le second j'ai cédé comme toi sur les données des faces et rotations, et passé des heures à débugger un code bon à jeter !
Mon dernier code tombe enfin sur le bon résultat, mais je sais pas bien pourquoi par rapport aux précédents.
L'algo est bon depuis ce matin 9h30 environ…
C'est juste qu'il est mal écrit, et que j'arrive à rien :)
Dommage, si j'avais été plus vite, j'aurais peut-être essayé une représentation.
[^] # Re: Mode triche on
Posté par Yth (Mastodon) . Évalué à 4.
Un truc dans ce goût là mais mieux fait parce que là c'est pas raccord, j'ai dû me planter dans mes rotations ^
[^] # Re: Mode triche on
Posté par Eric P. . Évalué à 3.
Alors la je suis oblige de te demander plus de details sur cette visualisation qui est absolument sublime.
Meme les axes sont super jolis.
Quelle bibliotheque ou outil as-tu utilise pour ca?
Personnellement je n'ai paradoxalement pas trop galere pour ce probleme. A peu pres une heure pour chaque partie. Pour la partie 2 je n'ai meme pas ecrit la fonction de transition de faces pour les donnees de test pour gagner du temps. C'est la premiere fois que je zappe les donnees de test. Les mouvements avaient l'air corrects sur ma visualisation, et une fois n'est pas coutume c'est passe du premier coup.
Excusez l'absence d'accents dans mes commentaires, j'habite en Australie et n'ai pas de clavier francais sous la main.
[^] # Re: Mode triche on
Posté par steph1978 . Évalué à 5.
C'est de l'openscad. Évoqué jour 18.
[^] # Re: Mode triche on
Posté par Yth (Mastodon) . Évalué à 4.
Le switch de 1 à 6 applique les rotations, et déplacements en 3D pour poser la surface de la face du cube sur la face du cube 3D, j'ai dû inverser des trucs à des endroits.
C'est sous optimisé pour de l'openScad, mais j'ai fait ça rapidement, on génère tout de même 15000 objets (50x50x6), ça le perturbe pas beaucoup cela dit !
Le fichier scad est xzippé ici : aoc-2022-22-01.scad.xz
Et OpenScad se trouve dans toutes les bonnes crémeries de logiciels libres ;)
# Il était vraiment sympa celui-ci :-)
Posté par syj . Évalué à 1.
Environ 4h-4h30 effectif dessus.
La première partie est fastidieuse, mais çà se code bien (~2h)
La deuxième partie est encore plus fastidieuse.
J'ai opté pour une classe "Arrete" agrégeant 2 segments caractérisés par une direction.
Si on est dans un de ces 2 segments en matchant la direction de ce dernier, j'applique la transformation de changement d’arête.
J'ai donc pris le temps d'identifier manuellement les arêtes du jeu de test pour valider mon algo. Je me suis aidé d'un petit découpage papier
pour faciliter l'opération.
Puis, j'ai fait pareil pour mon jeu de données. C'est le plus long.
Par exemple pour le Jeu de test, elle donne ceci.
9,9->9,12L 8,8->5,8D
5,5->8,5U 9,1->9,4L
13,9->16,9U 12,8->12,5R
1,5->4,5U 12,1->9,1U
4,8->1,8D 9,12->12,12D
13,12->16,12D 1,8->1,5L
12,4->12,1R 16,9->16,12R
# papier, ciseaux, colle
Posté par steph1978 . Évalué à 5.
[^] # Re: papier, ciseaux, colle
Posté par Yth (Mastodon) . Évalué à 2.
Joli :)
# Trop pour moi
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 5.
Bon, aucun problème pour la première partie, en revanche pour la seconde, j'y renonce… pour le moment.
L'intérêt de Avent du Code est entre autres, pour moi, dans la satisfaction d'avoir implémenté des algorithmes originaux, astucieux, élégants, etc. Dans ce cas, en particulier, coder en dur la disposition particulière de mes données d'entrée serait très insatisfaisant. Quant à coder un algorithme qui implémente la modélisation des faces d'un cube à partir d'un patron arbitraire, je n'ai trouvé pour cela aucun moyen qui ne soit pas très, très fastidieux à écrire.
Donc, pour le moment, je laisse tomber. J'y reviendrai peut-être plus tard dans l'année.
[^] # Re: Trop pour moi
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 5.
C'est amusant, l'AoC regorge d'exemples de choses qui sont évidentes pour un humain, mais assez ou très difficiles à mettre en algorithme, qui sera d'ailleurs fort différent de la pensée humaine.
Deux beaux exemples cette année :
[^] # Re: Trop pour moi
Posté par Yth (Mastodon) . Évalué à 3.
Je pense que l'idée du patron peut fonctionner.
Tu as 12 liens à faire, les 12 arêtes, et déjà quelques-unes de posées : les faces adjacentes, il y en a 5 dans un patron.
Et là de proche en proche tu peux recontruire les liens manquants.
Avec les données d'exemple mais en modélisant un vrai dé, tu as ça:
__1_
453_
__62
Les liens sont : 1-3, 3-6, 3-5, 5-4, 6-2
À gauche de la face 1 et de la face 3 tu as la même face, ici on l'a à gauche de la face 3, c'est la 5, tu peux donc lier 1 et 5 avec une rotation de -1 de 1 vers 5 et de +1 de 5 vers 1.
Et tu cherches des faces adjacentes dont une des deux a un voisin, tu vas pouvoir faire :
Tu viens de passer à 8 arêtes, et tu sais qui te manque :
1-2, 1-4, 2-4, 4-6.
Là je suppose qu'il faut chercher des voisins virtuels, par exemple tu as le lien construit 3-2, 3 adjacent à 1, selon la première méthode :
Trois liens de premier niveau nous permettent de trouver trois liens de second niveau, il nous reste un dernier lien à trouver : 4-2, chacun à l'autre bout du bidule.
Mais avec 2', le 2 construit à côté de 3 avec une rotation de -1, on a un alignement de 4 faces : 4-5-3-2, qu'on aurait pu avoir sur un patron initial d'ailleurs. Et là 4-2' est lié directement parce que la terre est ronde (un truc du genre), donc on a notre lien 4-2 avec une rotation dont il faut bien calculer le sens avec une aspirine.
Bref, on doit pouvoir bricoler un algorithme en deux passe et un dernier lien, et tout reconstruire.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.