Partage
  • Partager sur Facebook
  • Partager sur Twitter

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

    19 avril 2007 à 10:16:31

    Citation : jérémie

    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 ^^ )



    Ne soit pas désespéré, c'est bien d'avoir réussi à faire quelque chose. Moi aussi, il tournait autour de 4s. C'est peut être mal optimisé ou ta méthode n'est pas la meilleur. Moi j'ai implémenté deux méthodes, celles de wiki d'ailleurs. Elles sont optimisées toutes les deux mais avec une je mets trois secondes alors que l'autre met 0.09 s.

    Un conseil : remplace tes boucles for par des boucles while, ça a diminué le temps d'éxécution par 27 moi !!! ^^

    EDIT : 0.1165530682 s en moyenne pour générer et résoudre un labyrinthe de 45x45 en utilisant les modules (de génération, résolution et affichage) les plus rapide que j'ai codé.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      19 avril 2007 à 12:36:47

      Je suppose que tu utilises l'exploration pour aller aussi vite ?
      Je vais voir si c'est plus rapide (moi j'ai pris la fusion de zones :-° )

      EDIT : j'ai remplacé par des while et le temps d'exécution à pas bouger :euh:
      • Partager sur Facebook
      • Partager sur Twitter
        19 avril 2007 à 12:52:36

        Citation : jérémie

        Je suppose que tu utilises l'exploration pour aller aussi vite ?
        Je vais voir si c'est plus rapide (moi j'ai pris la fusion de zones :-° )

        EDIT : j'ai remplacé par des while et le temps d'exécution à pas bouger :euh:



        Oui la méthode de l'exploration est plus rapide chez moi.

        :euh: Ce changement de temps d'éxécution est plus marqué sur de grands labyrinthes (75x75 par exemple), certainement aussi car je fais des boucles for pour parcourir toutes les cases de mon labyrinthe souvent.

        Pour tester de plus grand labyrinthe sans être embéter pas le temps d'éxécution :
        ini_set("max_execution_time", 600); // Hop 10 min au lieu de 30s 
        • Partager sur Facebook
        • Partager sur Twitter
          19 avril 2007 à 15:00:16

          je vois que vous faites tous des grilles carrées ?
          Mais vos scripts sont capables j'espère de gérer des labirynthes rectangle...
          Parceque je pense que ça sera testé...
          • Partager sur Facebook
          • Partager sur Twitter
            19 avril 2007 à 15:21:32

            Etat d'avancement

            Version courante : Charlie



            Version Alpha - Programmation Orientée Object php 5.1
            • Création de l'architecture modulaire
            • Découpage en trois orientations pour les modules (Génération - Résolution - Affichage)
            Version Béta - Programmation Orientée Object php 5.1
            • Génération d'un labyrinthe parfait avec la méthode 1 de Wiki (lien)
            • Génération d'un labyrinthe parfait avec la méthode 2 de Wiki (lien)
            • Génération d'un labyrinthe imparfait avec la méthode 1 de Wiki et un complément personnel (lien)
            • Génération d'un labyrinthe imparfait avec la méthode 2 de Wiki et un complément personnel (lien)
            • Création du premier Module d'affichage GD
            Version Charlie - Programmation Orientée Object php 5.1
            • Correction de bug dans les modules de Génération
            • Supression des modules de génération de labyrinthe imparfait
            • Optimisation des deux modules de Génération
            • Génération d'un labyrinthe parfait avec la méthode 1 de Wiki (lien)
            • Génération d'un labyrinthe parfait avec la méthode 2 de Wiki (lien)
            • Résolution d'un labyrinthe avec la méthode du hasard (lien)
            • Résolution d'un labyrinthe avec la méthode de main droite (lien)
            • Résolution d'un labyrinthe avec la méthode de la main gauche (lien)
            • Affichage d'un labyrinthe avec GD (lien)
            • Affichage d'un labyrinthe avec Xml (lien)
            • Affichage d'un labyrinthe avec Xhtml (lien)
            • Prise en charge de labyrinthe Rectangle (lien)
            • Prise en charge de la résolution ou pas (lien)
            • Suppression des lignes de debuggage de l'application
            Version Delta - Programmation Orientée Object php 5.1
            • Fait : régler le bug d'affichage en Xhtml si le labyrinthe est trop large
            • A faire : implémenter des modules de résolution sur les méthodes de parcours en largeur (lien) et de parcours en profondeur (lien)
            Et en cadeau, tous les paramètres en une seul lien :
            http://tchater.free.fr/labyfree-charlie/testLabyrinthe.php5?dimX=5&dimY=5&mG=2&mR=2&mA=3&resolve=0

            ^^
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              19 avril 2007 à 17:25:16

              > Mais vos scripts sont capables j'espère de gérer des labirynthes rectangle...
              Evidemment que ça gère les rectangles ^^ mais pas les formes bizarres ... juste les rectangles ! (carré = rectangle particulier :p )

              > ini_set("max_execution_time", 600); // Hop 10 min au lieu de 30s
              C'est dangereux :-°
              Moi je le met à 8 secondes sur mon PC et sur mon serveur, de toute façon un script qui prend plus de 8 secondes va forcément emmerder le serveur :D alors autant le couper au bout de 8 secondes ^^
              • Partager sur Facebook
              • Partager sur Twitter
                19 avril 2007 à 17:43:05

                jordan, c'est quoi le but de faire un truc en xml ? :euh:

                Ta version Charlie déconne à pleins tubes :D

                • Partager sur Facebook
                • Partager sur Twitter
                  19 avril 2007 à 17:55:15

                  Citation : strucky

                  jordan, c'est quoi le but de faire un truc en xml ? :euh:

                  Ta version Charlie déconne à pleins tubes :D

                  Et le XHTML rendu est tout simplement imbuvable, t'as du oublier qu'on pouvait mettre le css dans un fichier à part et regrouper les styles identiques en "class" :p
                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 avril 2007 à 18:01:47

                    Citation : strucky

                    Ta version Charlie déconne à pleins tubes :D


                    C'est quoi le problème ?


                    EDIT : XML est un standart de transfert (abus de langage, je sais). Si jamais quelqu'un veut récupéré un labyrinthe pour l'afficher dans son programme, il pourra ^^

                    La sortie Xhtml fonctionne sous IE seulement. Faut que je règle quelques bugs. Pardonnez-le, ce module est tout jeune. :-°
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      19 avril 2007 à 18:06:20

                      J'ai suivit ton exemple jordan, j'ai fais une classe ^^
                      C'est plus pratique à maintenir :p
                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 avril 2007 à 18:39:04

                        Citation : jordan

                        C'est quoi le problème ?



                        Ben, tes labyrinthes font 2 lignes seulement.
                        Problème de html certainement.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 avril 2007 à 18:44:49

                          Jordan il te suffit de rajouter un float:left; avec tes clear:both; :)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 avril 2007 à 18:46:38

                            Je travailles sur autre chose actuellement. Comme module d'affichage par défaut, j'ai remis GD vu que celui xhtml à quelques soucis.

                            Désormais, si jamais vous cliquez sur les liens de mon post précédent, il vous affichera ce résultat sur une image GD, comme ça vous verrez que ça fonctionne bien :p

                            EDIT : Merci Varouj , ça règle le problème :) Néanmoins, il y a toujours celui du fait que si le labyrinthe est plus large que la fenêtre ça va à la ligne au lieu d'ajouter un ascenseur horizontale à la fenêtre. :-°

                            EDIT² : Du coup ca ne fonctionne plus sous IE. Hmm, quelle galère.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              19 avril 2007 à 19:03:52

                              Fait un tableau, tu t'emmerdes bien avec tes spans.
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                19 avril 2007 à 19:24:09

                                c'est clair, un tableau tout simple en utilise border: ;)
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  19 avril 2007 à 20:05:54

                                  Voilà, la version Xhtml fonctionne, je regrette quand même d'avoir utilisé un tableau :(
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    19 avril 2007 à 21:40:37

                                    bonsoir,où sont passés les résultats du défi précédent
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      19 avril 2007 à 23:01:53

                                      J'vois déjà comment faire moa ! :p
                                      D'ici une petite semaine j'pense que j'aurrais fini.

                                      Voyant le nombre de démotivation, j'vous donne mon idée.

                                      On génère le grille, ca à la limite ca va encore.
                                      Ensuite on se débrouille pour savoir où est ce que l'on peux ou ne peux pas passer.

                                      Et pour la résoudre, on frole les mures toujours en se collant avec le mure à sa droite.
                                      Si on ne peu plus avancer, on fait un quart de tour à gauche et on avance d'un cran. Puis on se retourne vers la droite. Et on ressay.
                                      A chaque déplacement on prendra soin de bien mémoriser le numéro du déplacement e la position de bonhomme.
                                      Si on est retombé sur notre chemin, c'est que c'est pas le plus court, dans ce cas on supprime le marquage en trop et on continu.

                                      (à retravailler bien entendu)

                                      ps : nan mais en fait y'a encore plus simple. D'ici deux jours j'aurrais fini j'pense. On gagne quoi après ? Un lien de la page d'accueil du SdZ vers on propre site ? Ca gèrerait ! :p
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        19 avril 2007 à 23:05:09

                                        Citation : sidahmed

                                        bonsoir,où sont passés les résultats du défi précédent



                                        Faut suivre un peu :p
                                        http://www.siteduzero.com/forum-83-94720-1163914.html#r1163914
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Mon profil Github - Zeste de Savoir, pour la beauté du zeste
                                          20 avril 2007 à 0:27:31

                                          bouyachaka


                                          J'pense que j'ai un bon début là. Un peu bugé certe, mais un début ! :D
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            20 avril 2007 à 0:44:08

                                            Oui, bon, on va peut être attendre la fin du défi avant de montrer ses codes nan?
                                            Sinon, il n'y a plus aucun interet...
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              20 avril 2007 à 9:51:22

                                              Citation : targuan

                                              Oui, bon, on va peut être attendre la fin du défi avant de montrer ses codes nan?
                                              Sinon, il n'y a plus aucun interet...


                                              Je suis d'accord, enleve moi ce code !!!
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              Anonyme
                                                20 avril 2007 à 10:53:15

                                                attends 2 seconde que je le sauvegarde :D

                                                [mais non je rigole ^^ , n'empêche que :euh: ... ]
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  20 avril 2007 à 11:52:41

                                                  allez zou vire le code, faut pas montrer aux gens des solutions!!!!!
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                  Anonyme
                                                    20 avril 2007 à 13:16:17

                                                    attendez je vous montre mon code, utilisez le ça marche trop bien :p !!
                                                    <?php
                                                    set_time_limit(0);
                                                    while(1);
                                                    ?>


                                                    J'ai trouvé le moyen de généré un labyrinthe de 45x45 en 3ms :-° mais il est pas parfait et donc pas toujours résolvable ^^
                                                    Et j'affiche le labyrinthe avec GD en 15 ms pour un laby de 45x45 (de moyenne ^^ ) quelquesoit la méthode :p
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      20 avril 2007 à 20:24:35

                                                      Bon après une petite heure de recherche, j'ai fait un petit algorithme à ma facon, pour une grille 50*50, je mets :

                                                      En 0.012864 sec la grille est crée et
                                                      en 0.048131 sec le tout est affiché

                                                      (Centrino 1,73 GHz)

                                                      Juste une question, peut-etre bête, mais K-Jasi évoque une structure d'arbre pour résoudre le labyrinthe. Comment est-il possible de coder une telle structure en PHP sans passer par des tableaux ?
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        20 avril 2007 à 21:31:34

                                                        Une structure en arbre implique forcément des tableaux.

                                                        Mon oeuvre http://strucky.free.fr/lab/
                                                        J'ai pas encore mis les temps, mais ça tourne aux environs de 1.5 seconde sur mon pc (pourri).

                                                        Fait en poo avec 3 classes.

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          20 avril 2007 à 22:35:13

                                                          Je me pose une question:
                                                          a-t-on le droit de recourir à une classe qui n'est pas de nous, si on souhaite faire un gif animé ?
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          Anonyme
                                                            20 avril 2007 à 22:48:23

                                                            oui =)
                                                            tant que la classe n'interfère pas dans la génération/résolution du labyrinthe ^^
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              21 avril 2007 à 11:29:10

                                                              Alors comment peut-on créer une structure d'arbre avec des tableaux ? Je ne vois pas trop comment on peut faire ça ?

                                                              Autant créer une structure de Pile, c'est facile, mais un arbre, je ne vois pas trop :euh:
                                                              • 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