IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Algorithme labyrinthe correction


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Algorithme labyrinthe correction
    Bonsoir,
    Voila je dois réaliser un algorithme pour générer automatiquement des labyrinthe. Je voudrais savoir si cet algorithme est correct ou si il y aurai des amélioration à lui apporter....ou s'il ne ressemble a rien même^^. Je suis ouvert à vos critique^^ merci :

    Initialisation :

    – Une matrice L[N][M] donnée ;
    – k ← 0 ;
    – Pour i de 0 `a N faire :
    Si (i impair et j impair) alors :
    | L[i][j]← k ;
    | k = k + 1;
    | Sinon: L[i][j]← −1 ;
    FIN “Si” ;
    FIN “Pour” ;

    – Pour i de 0 `a N faire :
    Si (i impair et j impair) alors :
    | L[i][j]← k ;
    | k = k + 1;
    | Sinon: L[i][j]← −1 ;
    FIN “Si” ;
    FIN “Pour” ;

    Pour NbCasesAZero, le nombre de cases à 0 : NbCasesAZero = 1 ;
    Tant que NbCasesAZero < N ×M faire :
    | Prendre au hasard (x, y) tel que :
    | L[x][y] = −1 et (x impair ou y impair7) ;
    Si x impair alors :
    d ← L[x][y − 1] − L[x][y + 1] ;
    Si d > 0 alors :
    | L[x][y] ← L[x][y + 1] ;
    | Propager la valeur L[x][y + 1] à partir du point (x, y − 1) (en 4-connexité) pour les
    | Cases contenant la valeur L[x][y − 1]8 ;
    Sinon, si d < 0 alors :
    | L[x][y] ← L[x][y − 1] ;
    | Propager la valeur L[x][y − 1] `a partir du point (x, y + 1) (en 4-connexité) pour les
    | cases contenant la valeur L[x][y + 1]8 ;
    FIN “Si” ;

    Sinon (y impair) :
    d ← L[x − 1][y] − L[x + 1][y] ;
    Si d > 0 alors :
    | L[x][y] ← L[x + 1][y] ;
    | Propager la valeur L[x + 1][y] `a partir du point (x − 1, y) (en 4-connexité) pour les
    | cases contenant la valeur L[x − 1][y]8 ;
    Sinon, si d < 0 alors :
    | L[x][y] ← L[x − 1][y] ;
    | Propager la valeur L[x − 1][y] `a partir du point (x + 1, y) (en 4-connexité) pour les
    | cases contenant la valeur L[x + 1][y]8 ;
    FIN “Si” ;

    FIN “Si” ;

    FIN “Tant que”.
    FIN “Pour” ;

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Tu pourrais faire un effort de présentation.
    C'est à peu près illisible.

  3. #3
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Dans les deux premières boucle POUR sont en fait les mêmes
    Dans ces mêmes boucles, seul i varie, jamais j.

    Il faudrait aussi détailler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    | Prendre au hasard (x, y) tel que :
    | L[x][y] = −1 et (x impair ou y impair7) ;
    Sinon, une meilleure indentation serait souhaitable.

    EDIT :

    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tant que NbCasesAZero < N xM faire :
    Tu ne sortira de la boucle que quand l'ensemble du tableau sera à 0... Je ne suis pas sur que ce soit souhaitable pour un labyrinthe.
    Dernière modification par Invité(e) ; 28/04/2009 à 10h21.

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Code réindenté (sauf erreur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    Initialisation :
     
    Une matrice L[N][M] donnée ;
    k  := 0 ;
    Pour i de 0 à N faire :
    	Si (i impair et j impair) alors :
    		L[i][j] := k ;
    		k = k + 1;
    	Sinon:
    		L[i][j] := -1 ;
    	FIN Si ;
    FIN Pour ;
     
    Pour i de 0 à N faire :
    	Si (i impair et j impair) alors :
    		L[i][j] := k ;
    		k = k + 1;
    	Sinon:
    		L[i][j] := -1 ;
    	FIN Si ;
    FIN Pour ;
     
    Pour NbCasesAZero, le nombre de cases  0 : NbCasesAZero = 1 ;
    	Tant que NbCasesAZero < N ×M faire :
     		Prendre au hasard (x, y) tel que L[x][y] = -1 et (x impair ou y impair7) ;
     
    		Si x impair alors :
     
    			d  := L[x][y - 1] - L[x][y + 1] ;
    			Si d > 0 alors :
    				L[x][y]  := L[x][y + 1] ;
    				Propager la valeur L[x][y + 1]  partir du point (x, y - 1) (en 4-connexité) pour les 
    				Cases contenant la valeur L[x][y - 1]8 ;
    			Sinon, si d < 0 alors :
    				L[x][y]  := L[x][y - 1] ;
    				Propager la valeur L[x][y - 1] à partir du point (x, y + 1) (en 4-connexité) pour les
    				cases contenant la valeur L[x][y + 1]8 ;
    			FIN Si ;
     
    		Sinon (y impair) :
     
    			d  := L[x - 1][y] - L[x + 1][y] ;
    			Si d > 0 alors :
    				L[x][y]  := L[x + 1][y] ;
    				Propager la valeur L[x + 1][y] à partir du point (x - 1, y) (en 4-connexité) pour les
    				cases contenant la valeur L[x - 1][y]8 ;
    			Sinon, si d < 0 alors :
    				L[x][y]  := L[x - 1][y] ;
    				Propager la valeur L[x - 1][y] à partir du point (x + 1, y) (en 4-connexité) pour les cases contenant la valeur L[x + 1][y]8 ;
    			FIN Si ;
     
    		FIN Si ;
     
    	FIN Tant que.
    FIN Pour ;
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Tout d'abort merci beaucoup pour votre aide et votre rapidité . Je compté le remettre un peu plus en ordre mais je vois qu'on m'a devancé merci beaucoup . J'ai plusieurs petite question:
    D'abord j'ai pas trop compris les modifs apportées :s. Je préféré vous préciser que mon niveau en algorithme est très bas :s (niveau scolaire).
    Ensuite j'ai pu voir sur internet qu'il y avais plusieurs solution pour résoudre cet algorithme mais j'ai pas réussi a trouver lequel correspond a celui donné ci-dessus.
    merci d'avance

Discussions similaires

  1. [Python 3.X] Algorithme de correction de lentille
    Par juleiin dans le forum Calcul scientifique
    Réponses: 9
    Dernier message: 01/05/2015, 01h58
  2. Algorithme de correction de segmentation
    Par cynthia22 dans le forum Traitement d'images
    Réponses: 10
    Dernier message: 06/07/2009, 13h49
  3. Correction d'un algorithme
    Par coder dans le forum Pascal
    Réponses: 2
    Dernier message: 04/02/2008, 21h58
  4. Algorithme Ou Methode de correction (Urgent)
    Par riyahi dans le forum SQL
    Réponses: 22
    Dernier message: 15/08/2007, 15h48
  5. Algorithme de correction d'adresse email (corriger : domaine + extension)
    Par the_mat dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 03/05/2006, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo