Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Défi] Générateur et Solveur de Labyrinthes

Anonyme
    16 avril 2007 à 1:51:25

    bon ba voila un défi intéressant, je me lance :D
    • Partager sur Facebook
    • Partager sur Twitter
      16 avril 2007 à 16:36:18

      Espérons que ce défi n'aura pas le même sort que le dernier qui s'était achevé pendant un mois de juillet... C'est-à-dire une non correction ^^ (L'aide aux malvoyants)

      Ce défi pour les labyrinthes, je l'avais fait en cours (en Caml) c'était sympa à faire. Je pense qu'après mes concours, je m'y mettrais.

      Par contre, est-ce possible de définir un peu mieux la matrice de départ ? Ou alors on fait comme on veut ?

      Citation : K-jasi

      qui contiendra dans chacune de ses cases deux valeurs booléennes, pour déterminer si l'on peut ou non aller vers la droite ou vers le bas de cette case



      Ca ne me paraît pas bien clair, comment avec ceci, tu codes le fait que tu ne puisses pas aller en haut ou en bas :euh:
      • Partager sur Facebook
      • Partager sur Twitter
        16 avril 2007 à 16:47:41

        Dans la mesure où tu génères toi même ton Labyrinthe, libre à toi de définir ta matrice comme tu veux.
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          16 avril 2007 à 18:52:30

          On ne peut pas aller en haut si la case du dessus est fermé en bas :p
          • Partager sur Facebook
          • Partager sur Twitter
            16 avril 2007 à 20:25:22

            Je bloque sur ces trucs justement... Mais j'ai une petite idée :p
            (Je participe hors concours hein)
            • Partager sur Facebook
            • Partager sur Twitter
            Mon profil Github - Zeste de Savoir, pour la beauté du zeste
              16 avril 2007 à 20:32:03

              Pour vous mieux vaut privilégier l'optimisation ou la sécurité et sa gestion d'erreur ?
              • Partager sur Facebook
              • Partager sur Twitter
                16 avril 2007 à 21:05:15

                Si tu veux mon avis, quand tu génères un laby de 40*40 et que tu trouves sa solution, le temps d'éxécution pour la gestion d'erreurs et la sécurité est négligeable (le tout étant que tes algorithmes soient cohérents)
                • Partager sur Facebook
                • Partager sur Twitter
                  16 avril 2007 à 21:20:13

                  Interdiction totale de participer en "hors-concours". C'est trop bête, rendez votre script vous pourrez vous comparer aux autres et avoir une correction adaptée !

                  Par contre j'avais pas vu la date de fin, c'est beaucoup trop long. D'autres défis / concours / whatever attendent, surtout en été. Je rapproche l'échéance au 30 Juin. Si c'est vraiment trop court on verra (soyons flexible), mais pour l'instant c'est le 30 Juin :) Ca laisse 2 mois et demi c'est quand même pas mal.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 avril 2007 à 22:24:34

                    PAr hors concours, ca veut dire que je le rends pas :p
                    Car GD cay pas mon truc, et que là je galère rien que pour générer le labyrinthe. Je le rendrais si j'arrive à totu boucler à temps (ce qu m'etonnerait... Peut-être que vers mi juin, je m'y remettrais) :p
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Mon profil Github - Zeste de Savoir, pour la beauté du zeste
                    Anonyme
                      17 avril 2007 à 10:25:15

                      C'est pas très compliqué la génération mais moi ca prend un temps fou !
                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 avril 2007 à 11:06:16

                        Arnaud > Au vu du nom de ton fichier (bah j'observe ^^), tu as pris la première méthode via une un objet, non ? :p
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Mon profil Github - Zeste de Savoir, pour la beauté du zeste
                        Anonyme
                          17 avril 2007 à 16:35:22

                          Citation : Talus

                          Arnaud > Au vu du nom de ton fichier (bah j'observe ^^), tu as pris la première méthode via une un objet, non ? :p


                          Non il n'y a pas d'objet une simple fonction et une autre pour l'affichage.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 avril 2007 à 17:37:46

                            Allez je me lance dans ce défi.
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              17 avril 2007 à 21:00:46

                              Salut à tous amis des défis !

                              J'ai fini de coder la génération du labyrinthe...

                              Alors que je suis à environ 120ms pour un 10*10 sur intel P4 2,4gHz, je me retrouve à 10s sur un 30*30 et à 30s sur un 40*40...

                              Vous avez quoi sur les gros formats comme temps ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                17 avril 2007 à 21:18:52

                                Environ 0.8s pour la génération :)
                                L'affichage ca prend au moins 0.02s...
                                La résolution, pas tout à fait finie, mais il semblerait que ca prenne moins de 0.05s...
                                Conclusion : ce qui prend le plus de temps et ce sur quoi je vais travailler dur, c'est la génération :p


                                [edit] Pentium 4 C 2.4Ghz + Zend_optimiser
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  17 avril 2007 à 21:19:35

                                  Citation : flobard

                                  Vous avez quoi sur les gros formats comme temps ?


                                  Labyrinthe généré en 0.177948951721 seconde(s)
                                  Solution générée en 0.0341620445251 seconde(s)
                                  Image générée en 0.196769952774 seconde(s)

                                  Pour un 100*100 :D
                                  Seul l'algo de génération est optimisé.

                                  EDIT : Athlon 64 X2 3800+ 2 Ghz
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    18 avril 2007 à 15:16:11

                                    Ouf, j'ai analysé le problème en me douchant matin (oui, je pense à vous même tôt le matin)... J'ai fait une première vague d'optimisation qui me donne du 3s en 40*40, mais c'est vraiment qu'une rapide optimisation ! Je devrais passer en dessous de la seconde, si tout va bien :)

                                    Cette après midi je vais bien retoucher la génération, pour avoir un truc propre, commenté, rapide, et je me mettrais à la solution plus tard :)
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      18 avril 2007 à 16:20:05

                                      Vous vous êtes servi d'une fonction récursive pour générer le labyrinthe ?

                                      Car je viens de tester de cette façon, et à partir de 27 de côté, je n'ai plus d'affichage, je dois certainement dépassé la limite pour la pile d'appel...

                                      En 25*25 je suis à 0.3~

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Anonyme
                                        18 avril 2007 à 16:25:28

                                        Moi je n'utilise pas de pile d'appel... A vrai dire, je ne sais pas ce que c'est !

                                        Bonne nouvelle, des 90 secondes en 100*100 je suis passé à 0.8392720 secondes. La plus grosse partie de l'optimisation est terminée, maintenant on va piocher les milisecondes, mais c'est toujours bon de le faire :)
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          18 avril 2007 à 17:19:46

                                          Hmm, je code tous les algorithmes que je trouve et au final ça varie de 250s à 0.05s pour la génération de labyrinthe. C'est abbusé :lol:

                                          Moi j'ai fait une pile, car en générale, la récursivité, c'est pas super. En plus, php gère la mémoire à notre place, alors pourquoi pas s'en priver !!!
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Anonyme
                                            18 avril 2007 à 18:06:42

                                            Juste pour info... C'est quoi une pile (avec des mots simples) ?


                                            Je n'ai pas vraiment utilisé de récursivité dans mon script !

                                            Premier coup, je prend une case au hasard... Je regarde aux alentours les cases possibles (non-visitées et existantes), si il y en a plus de deux, j'enregistre pour revenir en arrière, j'en prend une dans celles possibles, et je continue comme ça... Je sais pas si on peut vraiment appeler ça de la récursivité !
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              18 avril 2007 à 18:25:58

                                              Une pile est une structure de donnée.
                                              Voit ça comme une pile de livre. Tu ajoutes des éléments au sommet, et tu récupére toujours celui en haut de la pile (le dernier ajouté donc).
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                18 avril 2007 à 18:49:33

                                                Tiens : http://www.siteduzero.com/tuto-3-16237-1-les-piles-les-files-en-langage-c.html . C'est un tuto pour du c, mais c'est grossièrement la même chose.
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                Anonyme
                                                  18 avril 2007 à 18:57:43

                                                  Vous avez pris de l'avance, moi je fait dans les 5 sec sur du 45*45

                                                  Je propose, pour les bench on se base sur du 45*45 ;)

                                                  J'ai pas optimisé..

                                                  Sinon un algo qui fait n'importe quoi (rarement des laby resolvable) donne moins de la seconde pour 100*100...

                                                  Je vais continuer.
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                  Anonyme
                                                    18 avril 2007 à 19:35:17

                                                    Le 45*45 ça me va aussi ! Voici mes temps sur un P4 2,4GHz, avec des cases de 10px de côté (pour gd) :
                                                    Generation du labyrinthe en 0.1010191 secondes
                                                    Génération de l'image en 0.0295510 secondes

                                                    Je pense être au maximum niveau optimisation sur mon script...



                                                    Par contre j'ai vraiment aucune idée pour trouver la solution ! Je sens que je vais me faire chier :p
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                    Anonyme
                                                      18 avril 2007 à 19:58:35

                                                      bin moi j'en suis encore à chercher comment organiser ma matrice :lol:
                                                      Pour ceux que ça intéresse, le nombre de portes interne au labyrinthe :
                                                      // n = points par côté (n + 1 = cases par côté)
                                                       nbPortesInternes = (2n - 4)(n - 1)

                                                      Voila, c'était le truc bien nul qui servait à rien :p mais ça ma fait marré de le calculer pour savoir à l'avance la taille de ma matrice ^^
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                      Anonyme
                                                        18 avril 2007 à 21:44:43

                                                        Moi ca me sert tes formules ;)
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          18 avril 2007 à 21:56:58

                                                          Citation : flobard

                                                          Par contre j'ai vraiment aucune idée pour trouver la solution ! Je sens que je vais me faire chier :p


                                                          Des pistes de réfléxions :
                                                          • Résolution par la méthode de A* (lien)
                                                          • Résolution par la méthode de Dijkstra (lien)
                                                          • Résolution par la méthode de Ford-Bellman (lien)
                                                          • Résolution par la méthode de Danteig-Ford (lien)
                                                          • Résolution par la méthode de la main droite
                                                          • Résolution par la méthode de la main gauche
                                                          • Résolution par le hasard totale
                                                          • EDIT² : Résolution par la méthode de parcours en largeur (lien)
                                                          • EDIT² : Résolution par la méthode de parcours en profondeur(lien)
                                                          EDIT : Bench avec les paramètres de flobard me donne au final : 0.0933380127 secondes pour la génération du labyrinthe + image
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          Anonyme
                                                            18 avril 2007 à 23:15:50

                                                            Moi je suis à la ramasse avec mes 4,434 secondes pour le 45x45
                                                            (AMD athlon 64 3500+ @ 2.2 GHz)

                                                            Si quelqu'un veut de l'aide pour optimiser son script je veux bien l'aider (mais je crois que je vais pas continuer mon script vu le temps qu'il prend ^^ )
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            [Défi] Générateur et Solveur de Labyrinthes

                                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                            • Editeur
                                                            • Markdown