Le labyrinthe
Fermé
carau
-
27 déc. 2006 à 15:56
blux Messages postés 25924 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 28 mars 2024 - 27 déc. 2006 à 16:23
blux Messages postés 25924 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 28 mars 2024 - 27 déc. 2006 à 16:23
A voir également:
- Le labyrinthe 3 film complet en français youtube
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Wetransfer français - Télécharger - Téléchargement & Transfert
- Telechargement film d'action complet en francais - Télécharger - TV & Vidéo
- Télécharger film complet sur mobile - Télécharger - TV & Vidéo
- Film complet en français gratuit sans inscription ✓ - Forum Téléchargement
4 réponses
blux
Messages postés
25924
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
28 mars 2024
3 281
27 déc. 2006 à 16:04
27 déc. 2006 à 16:04
Salut,
pour trouver la sortie d'un labyrinthe, il existe la méthode de la "main gauche" (ou la main droite)...
Dessine ton labyrinthe sur une feuille de papier et imagine que tu es dedans, mets ta main gauche sur le mur et déplace-toi en gardant la main sur le mur, tu verras que tu finiras par en sortir...
Ca n'est pas académique, mais ça marche à tous les coups (sauf si tu démarres au milieu d'un labyrinthe qui contient des îlots, c'est-à-dire des zones non reliées au reste par des murs...).
En algo, il te suffit de chercher le couloir le plus à gauche dans le sens des aiguilles d'une montre...
pour trouver la sortie d'un labyrinthe, il existe la méthode de la "main gauche" (ou la main droite)...
Dessine ton labyrinthe sur une feuille de papier et imagine que tu es dedans, mets ta main gauche sur le mur et déplace-toi en gardant la main sur le mur, tu verras que tu finiras par en sortir...
Ca n'est pas académique, mais ça marche à tous les coups (sauf si tu démarres au milieu d'un labyrinthe qui contient des îlots, c'est-à-dire des zones non reliées au reste par des murs...).
En algo, il te suffit de chercher le couloir le plus à gauche dans le sens des aiguilles d'une montre...
oberion
Messages postés
1253
Date d'inscription
mardi 26 septembre 2006
Statut
Membre
Dernière intervention
29 septembre 2007
248
27 déc. 2006 à 16:04
27 déc. 2006 à 16:04
Hello,
Et ou est le probleme ?
Et ou est le probleme ?
merci pour tes conseils mais cette methode ne marche que pour quatre direction
ansi j'ai fait un programme en c mais j'ai pas reussi a me deplacer (en echangeant la valeur de chaque case parcouru de 0->2)
je voulaisse mon prog <code>
#include<stdio.h>
#define H 8
#define B 4
#define D 1
#define G 6
#define HD 1
#define HG 7
#define BD 3
#define BG 5
struct matrice{
int nlig;
int ncol;
char ** donnees;
};
int Test_Voisine_Libre();
int Test_Voisine_Libre(){
struct matrice m;
int i;int j; int dir;
m.donnees[i][j];
int k;
if(m.donnees[i-1][j-1]=0){
return 7;
}
else{
return k;
}
if(m.donnees[i-1][j]=0){
return 8;
}
else {
return k;
}
if(m.donnees[i-1][j+1]=0){
return 1;
}
else{
return k;
}
if(m.donnees[i][j-1]=0){
return 6;
}
else {return k;
}
if(m.donnees[i][j+1]=0){
return 2;}
else {return k;
}
if(m.donnees[i+1][j-1]=0){
return 5;
}
else {
return k;
}
if(m.donnees[i+1][j]=0){
return 4;
}
if(m.donnees[i+1][j+1]=0){
return 3;}
else {
return k;
}
}
int chois_voisine(struct matrice m,int i,int j);
int chois_voisine(struct matrice m,int i,int j){
int dir;
m.donnees [i][j];
int l;
for(l=1;l<9;l++){
if(l=Test_Voisine_Libre()){
break;
dir=l;}
else {printf("erreur de parcour");
}
}
return dir;
}
void avance(int dir,int i,int j,struct matrice m){
if ( dir == H )
{
i --;
}
if(dir==D)
{
j++;
}
if(dir==HD)
{
i --,j++;
}
if(dir==HG)
{
i--,j--;
}
if(dir==B)
{
i++;
}
if(dir==G)
{
j--;
}
if(dir==BG)
{
i++,j--;
}
if(dir==BD)
{
i++,j++;
}
}
/* fonction echange permet d'echanger les valeurs des cases parcouru*/
int echange(strct matrice m){
m.donnees[i][j];
for(c=0;c<m.nlig*m.col;i++) {
tab[c] = c;
}
ansi j'ai fait un programme en c mais j'ai pas reussi a me deplacer (en echangeant la valeur de chaque case parcouru de 0->2)
je voulaisse mon prog <code>
#include<stdio.h>
#define H 8
#define B 4
#define D 1
#define G 6
#define HD 1
#define HG 7
#define BD 3
#define BG 5
struct matrice{
int nlig;
int ncol;
char ** donnees;
};
int Test_Voisine_Libre();
int Test_Voisine_Libre(){
struct matrice m;
int i;int j; int dir;
m.donnees[i][j];
int k;
if(m.donnees[i-1][j-1]=0){
return 7;
}
else{
return k;
}
if(m.donnees[i-1][j]=0){
return 8;
}
else {
return k;
}
if(m.donnees[i-1][j+1]=0){
return 1;
}
else{
return k;
}
if(m.donnees[i][j-1]=0){
return 6;
}
else {return k;
}
if(m.donnees[i][j+1]=0){
return 2;}
else {return k;
}
if(m.donnees[i+1][j-1]=0){
return 5;
}
else {
return k;
}
if(m.donnees[i+1][j]=0){
return 4;
}
if(m.donnees[i+1][j+1]=0){
return 3;}
else {
return k;
}
}
int chois_voisine(struct matrice m,int i,int j);
int chois_voisine(struct matrice m,int i,int j){
int dir;
m.donnees [i][j];
int l;
for(l=1;l<9;l++){
if(l=Test_Voisine_Libre()){
break;
dir=l;}
else {printf("erreur de parcour");
}
}
return dir;
}
void avance(int dir,int i,int j,struct matrice m){
if ( dir == H )
{
i --;
}
if(dir==D)
{
j++;
}
if(dir==HD)
{
i --,j++;
}
if(dir==HG)
{
i--,j--;
}
if(dir==B)
{
i++;
}
if(dir==G)
{
j--;
}
if(dir==BG)
{
i++,j--;
}
if(dir==BD)
{
i++,j++;
}
}
/* fonction echange permet d'echanger les valeurs des cases parcouru*/
int echange(strct matrice m){
m.donnees[i][j];
for(c=0;c<m.nlig*m.col;i++) {
tab[c] = c;
}
blux
Messages postés
25924
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
28 mars 2024
3 281
27 déc. 2006 à 16:23
27 déc. 2006 à 16:23
Ma méthode marche à tous les coups, c'est à toi de prévoir dans ton algo la possibilité de te déplacer sur 8 directions... Une matrice de 3x3 dans laquelle tu es au centre, avec mémoire de ton sens de déplacement...