Accueil > Forum > > > > Probleme de récursivité
Probleme de récursivité
lundi 6 avril 2009 à 23:04:25 |
Probleme de récursivité

ketluts
|
Bonjour à tous, voilà je me suis amusé à créer un générateur de labyrinthe et ayant vu qu'un défi avait eu lieu justement sur ce forum il y a maintenant plusieurs mois je me suis dit qu'on pourrait peut-être m'aider0 Le probleme est le suivant, le code genere bien des labyrinthe et rapidement cependant au delà d'une taille de 60*60 environ (quelque fois même à partir de 58*58) mon serveur Apache redemarre. Dans le fichier Apache error log j'ai les messages suivants: [Mon Apr 06 19:38:05 2009] [notice] Parent: child process exited with status 3221225725 -- Restarting. [Mon Apr 06 19:38:10 2009] [notice] Apache/2.2.11 (Win32) PHP/5.2.8 configured -- resuming normal operations [Mon Apr 06 19:38:10 2009] [notice] Server built: Dec 10 2008 00:10:06 [Mon Apr 06 19:38:10 2009] [notice] Parent: Created child process 3244 [Mon Apr 06 19:38:11 2009] [notice] Child 3244: Child process is running [Mon Apr 06 19:38:11 2009] [notice] Child 3244: Acquired the start mutex. [Mon Apr 06 19:38:11 2009] [notice] Child 3244: Starting 64 worker threads. [Mon Apr 06 19:38:11 2009] [notice] Child 3244: Starting thread to listen on port 80. Il me semble que c'est un probleme de récursivité dans mon programme (comme si le serveur considérais que mes boucles etaient infinies et donc plante et redemarre) enfin c'est juste une supposition. Voila le code en question :
"; exit;}else{ $largeur=$_POST['largeur']; $hauteur=$_POST['hauteur']; echo"
";} $nbpi=$largeur*$hauteur; $liste=NULL; $coord=NULL; //PREPARATION DES BORDS DU PLAN : DEBUT for($i=0;$i <= $nbpi-1;$i++) { $check_pi[$i][0]=$i+1; $check_pi[$i][1]=0; $piece[$i][0]=$i+1; $piece[$i][1]=1; $piece[$i][2]=1; $piece[$i][3]=1; $piece[$i][4]=1; $liste[$i]=$piece[$i]; } for($i=0;$i <= $largeur-1;$i++) { $liste[$i][2]=2; $j=$nbpi-$i-1; $liste[$j][1]=2; } for($i=0;$i <= $hauteur-1;$i++) { $k=$largeur*$i; $liste[$k][4]=2; $j=$largeur-1+$largeur*$i; $liste[$j][3]=2; } //PREPARATION DES BORDS DU PLAN : FIN //FONCTION POUR MELANGER UNE LISTE : DEBUT function rand_liste($liste,$newliste){ $n=count($liste); $m=count($newliste); if($n>0){ $alea=rand(0,$n-1); $newliste[$m]=$liste[$alea]; $az=0; for($d=0;$d <= $n-1;$d++) { if($d==$alea){} else{$liste2[$az]=$liste[$d]; $az=$az+1;} } if(isset($liste2)){ $newliste=rand_liste($liste2,$newliste); } else{$liste2=NULL; $newliste=rand_liste($liste2,$newliste);} } else{return $newliste;} return $newliste; } //FONCTION POUR MELANGER UNE LISTE : FIN //FONCTION DE GENERATION DU LABYRINTHE : DEBUT function generation($pi){ global $check_pi, $largeur; global $liste; $check_pi[$pi-1][1]=1; if($pi!="k") { //CREER LA LISTE DES PIECES POSSIBLES $coord[0][1]=$pi+$largeur; $coord[0][2]="a"; $coord[1][1]=$pi-$largeur; $coord[1][2]="b"; $coord[2][1]=$pi+1; $coord[2][2]="d"; $coord[3][1]=$pi-1; $coord[3][2]="g"; $g=0; for($i=0;$i <= 3;$i++) { $ok1=0; $ok2=0; if($liste[$pi-1][$i+1]==1){$ok2=1; if($check_pi[$coord[$i][1]-1][1]!=1){$ok1=1;} else{} } else{} if($ok1==1 AND $ok2==1){ if($i==0){ $liste_coord[$g][1]=$pi+$largeur; $liste_coord[$g][2]="a"; } elseif($i==1){ $liste_coord[$g][1]=$pi-$largeur; $liste_coord[$g][2]="b"; } elseif($i==2){ $liste_coord[$g][1]=$pi+1; $liste_coord[$g][2]="d"; } elseif($i==3){ $liste_coord[$g][1]=$pi-1; $liste_coord[$g][2]="g"; } $g=$g+1; } else{} } unset($ok1,$ok2,$coord,$g); if(isset($liste_coord)){} else{$liste_coord=NULL; $check_pi[$pi-1][1]=1;} if($liste_coord!=NULL){ $liste_coord=rand_liste($liste_coord,NULL); $nn=count($liste_coord);} else{} if(!isset($nn)){$check_pi[$pi-1][1]=1; return;} else{ for($k=0;$k <= $nn-1;$k++) { if($check_pi[$liste_coord[$k][1]-1][1]!=1){ if($liste_coord[$k][2]=="a"){$liste[$pi-1][1]=3; $liste[$liste_coord[$k][1]-1][2]=3;} elseif($liste_coord[$k][2]=="b"){$liste[$pi-1][2]=3; $liste[$liste_coord[$k][1]-1][1]=3;} elseif($liste_coord[$k][2]=="d"){$liste[$pi-1][3]=3; $liste[$liste_coord[$k][1]-1][4]=3;} elseif($liste_coord[$k][2]=="g"){$liste[$pi-1][4]=3; $liste[$liste_coord[$k][1]-1][3]=3;} else{$liste_coord[$k][1]="k"; $check_pi[$pi-1][1]=1;} generation($liste_coord[$k][1]); }else{} } } } else{return;} return; } //FONCTION DE GENERATION DU LABYRINTHE : FIN $pi=rand(1,$nbpi); // ON CHOISIT UNE PIECE AU HAZARD POUR DEBUTER LA GENERATION generation($pi); // ON GENERE LE LABYRINTHE //AFFICHAGE DU LABYRINTHE : DEBUT echo"Labyrinthe de $nbpi pièces :
"; $i=1; $j=1; for($c=1; $c<=$nbpi; $c++){ $case=$nbpi-($i*$largeur)+$j; $mot=$liste[$case-1]; $m0=$mot[0]; $m1=$mot[1]; $m2=$mot[2]; $m3=$mot[3]; $m4=$mot[4]; if($case==1){$m4=3;}else{} if($case==$nbpi){$m3=3;}else{} if($m1!=3){$m1="1px solid black;";}else{$m1="none";} if($m2!=3){$m2="1px solid black;";}else{$m2="none";} if($m3!=3){$m3="1px solid black;";}else{$m3="none";} if($m4!=3){$m4="1px solid black;";}else{$m4="none";} echo"| | "; if($c%$largeur==0){echo" "; $i=$i+1; $j=1;}else{ $j=$j+1;} } echo" "; echo "Génération en ".getTime()/1000,' s'; //AFFICHAGE DU LABYRINTHE : FIN ?> Merci d'avance pour votre aide.
|
|
lundi 6 avril 2009 à 23:05:50 |
Re : Probleme de récursivité

ketluts
|
Arf je pensait pas que la mise en page du message allait être comme ça...
|
|
mardi 7 avril 2009 à 05:51:10 |
Re : Probleme de récursivité

kohntark
|
Salut,
En général la mise en forme ne se remet pas toute seule :) Est ce possible d'avoir un code lisible ?
Cordialement,
Kohntark -
|
|
Cette discussion est classée dans : notice, hauteur, child, largeur, apr
Répondre à ce message
Sujets en rapport avec ce message
Probleme avec easy php [ par kurosaki4d ]
Bonjour :) Voilà j'ai un gros souci avec Easy php qui ne veut pas marcher pour moi Apache et Mysql sont bien en marche mais quand je tape l'adre
Apache et MySQL ne démarrent pas !! [ par boualiasma ]
Bonjour, Je voulais travailler avec le SGBD Mysql avec EasyPHP pour la création de base des données. J'ai installé une nouvelle version EasyPHP 5.5.3
Probleme popup Javscript et php [ par corbakoo ]
Bonsoir à tous Voilà mon probleme :J'utilise la fonction :function popup(page,largeur,hauteur,options){ var top=(screen.height-hauteur)/2; var left=(
Pb php : ImageCreateFromJPEG [ par Trascal ]
/*Bijour,j'ai un ti pb en php :/ quelqu'un pourrait-il m'aider? voici mon pb$donnees est de type "fichier.jpg"et $directory est un répertoire que l'on
pb redimension image jpeg/bmp [ par David_monchy ]
Salut à tous, j'ai voulu faire une fonction permettant de redimensionner une image uploadée. Je me suis inspiré des fonctions de ce site, et tout marc
attaque upload [ par speedylol ]
Bonjour j'ai trouver une petit script ici sur sympa que j'ai modifier pour crée des miniature en respctant le dimensions , mais j'ai un probléme d'att
redimenssionner image [ par fvv ]
Bonjour, Le code que j'utilise pour réduire la taille de mes images ne marche pas : ça me crée une miniature 150*150 dans le bon dossier mais toute no
detection navigateur [ par gaillardo ]
Bonjour à tous,J'ai un petit problème avec une détection de navigateur avec getenv("HTTP_USER_AGENT") qui fonction bien en local avec easyPHP mais lor
problèm affichage miniature [ par fornatus ]
Bonjour je n'arrive pas à afficher mes miniatures malgré le fait que celles-ci restent cliquables et s'ouvrent correctement dans une pop.Voici le code
ameliorer mon code pour la redimension d'image [ par 0123azerty ]
bjr a tous ...// connexion à la BDinclude ('bdd.php');<br
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|