Le labyrinthe
carau
-
blux Messages postés 19334 Date d'inscription Statut Modérateur Dernière intervention -
blux Messages postés 19334 Date d'inscription Statut Modérateur Dernière intervention -
bonjour tt le monde
j'ai un probleme de programmation pour trouver la sortie dans labyrinthe
en fait le labyrinthe est un tableau de deux dimensions contenant 0 et 1
0 signifie le couloir par contre 1 le mur
par xemple
011111111111
100111100011
110110011001
111000110101
101011010111
101101000001
111111111110
ce qui'est compliqué c'est que si on veut se deplacer on peut choisir n'importe sens par exemple haut ou haut droit ...........
ce qui fait 8 possibilité
le programme doit etre fait en c
j'ai un probleme de programmation pour trouver la sortie dans labyrinthe
en fait le labyrinthe est un tableau de deux dimensions contenant 0 et 1
0 signifie le couloir par contre 1 le mur
par xemple
011111111111
100111100011
110110011001
111000110101
101011010111
101101000001
111111111110
ce qui'est compliqué c'est que si on veut se deplacer on peut choisir n'importe sens par exemple haut ou haut droit ...........
ce qui fait 8 possibilité
le programme doit etre fait en c
A voir également:
- Le labyrinthe 3 film complet en français youtube
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Telechargement film d'action complet en francais - Télécharger - TV & Vidéo
- What is my movie français - Télécharger - Divers TV & Vidéo
- Telecharger film complet sur mobile gratuit - Télécharger - TV & Vidéo
- Dernière version ccleaner gratuit français - Télécharger - Nettoyage
4 réponses
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...
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;
}