lunes, 9 de agosto de 2010

Resolver un Laberiento de 1s y 0s

Les dejo un codigo en C de Inteligencia Artificial que resuelve un "laberiento" de 1s y 0s, y dice cuantos movimientos se tuvieron que hacer antes de que se encontrara con un 0 (el camino más largo).Por ejemplo:
1 1 0 1 1 0
0 1 0 0 1 1
0 1 1 1 0 0
0 1 0 1 0 0
0 1 0 1 0 0
Hay 8 movimientos.

El codigo no lo hice yo, y lo veo algo complejo, pero seguro lo encuentran Interesante.

#include"stdio.h"

#include"conio.h"

main()

{

int b[30],y=0,i1,x,i2,o=0;

clrscr();

printf("introduce 5 lineas con 6 digitos en sistema binario \n");

for (i1=0;i1<5;i1++)

{

for (i2=0;i2<=5;i2++)

{

o=((i1*6)+(i2));

scanf("%i",&b[o]);

if (b[o]!=0 && b[o]!=1)

b[o]=1;

}

printf("\n");

}

clrscr();

if (b[0]!=1)

printf ("error el primer numero debe ser 1");

else

{

if(b[1]==1)

b[1]=2;

if(b[6]==1)

b[6]=2;



for (i1=2;i1<=9;i1++)

{

for (i2=1;i2<30;i2++)

if (b[i2]==i1)

{

if (b[i2+1]==1)

b[i2+1]=i1+1;

if (b[i2+6]==1)

b[i2+6]=i1+1;

}

}

for (i2=1;i2<30;i2++)

if (b[i2]>1)

{

if (b[i2]>y)

y=b[i2];

b[i2]=1;

}

for (i1=0;i1<5;i1++)

{

for (i2=0;i2<=5;i2++)

{

o=((i1*6)+(i2));

printf("%i",b[o]);

}

printf("\n");

}

}

printf("el numero maximo de movimientos es %i",y-1);

getch();

return 0;

}

0 comentarios:

Publicar un comentario