SoloCodigo

Programación Específica => Inteligencia Artificial => Mensaje iniciado por: tdhde en Viernes 24 de Junio de 2005, 20:22

Título: Laberinto Ocupando Listas
Publicado por: tdhde en Viernes 24 de Junio de 2005, 20:22
Hola, soy nuevo a esta pagina, y pues la encontre mientras buscaba ayuda sobre como hacer un laberinto en prolog ocupando listas...En estos momentos no tengo el planteamiento del trabajo, pero quisiera saber si hay alguien que podria ayudarme con este problema, no dispongo de mucho tiempo para hacerlo pero tengo ciertas funciones y otra cosas con las que estoy trabajando para su implementacion.
Título: Re: Laberinto Ocupando Listas
Publicado por: fuhrer en Viernes 24 de Junio de 2005, 21:26
Hola que tal.

No se si sea necesario que lo realices con listas, pero si es así y necesitas ayuda, yo creo que deberias mostrar o al menos decir que es lo que hacen tus "funciones" y mas o menos dar la idea que tienes para realizarlo, creo que asi sera mas fácil ayudarte.

Hasta luego.
Título: Re: Laberinto Ocupando Listas
Publicado por: tdhde en Sábado 25 de Junio de 2005, 00:52
Si, gracias, estoy tratando de ponerlas en orden ya que ahorita simplemente son funciones aleatorias sin ningun orden.  Lo que pasa es que es un proyecto y se nos ha pedido que se ocupen listas, seria mas facil hacerlo sin listas pero pues es un requisito, eso y dan mas puntos si se leen de un archivo los datos. Tengo la mayoria de funciones hechas, sin embargo no he podido conectarlas, pero tan pronto tenga el planteamiento en la computadora, lo voy a poner aqui.
Título: Re: Laberinto Ocupando Listas
Publicado por: tdhde en Sábado 25 de Junio de 2005, 01:27
Hola de nuevo, les presento aqui la lista de funciones que he podido encontrar, y he modificado para ver si son utiles en la realizacion de este trabajo.  Si creen que algunas son utiles y otras no, desearia que me lo hicieran saber, hasta este punto en  la materia, me ha empezado a dar ciertos problemas el hacer los programas, sin embargo tengo una idea de lo que quiero construir, simplemente no logro visualizar todas las partes importantes a ser construidas, si me pudieran guiar con alguna idea, o alguna implementacion que seria bueno ocupar, les estaria muy agradecido.

(Algunas funciones solo son de prueba para ver cuales me sirven y cuales no)

% ------------------------------------------------------------------------

mostrarArchivo(Ruta):- exists_file(Ruta), open(Ruta, read, F),
get_char(F, Car), mostrar(F, Car).

mostrar(_, end_of_file).
mostrar(F, Car):- Car \=@= 'end_of_file', write(Car), get_char(F, Car1),
mostrar(F, Car1).

% ------------------------------------------------------------------------

archivo_a_lista(Ruta, L):- exist_file(Ruta), open(Ruta, read, F),
get_char(F, C), agregart(F, C, L).

agregar(_, end_of_file, []).
agregar(F, Car, [Car|R]):- Car \=@= 'end_of_file', get_char(F, C),
agregar(F, C, R).

% ------------------------------------------------------------------------

leer(File,[C|R]):-read_line_to_codes(File,C1),
string_to_atom(C1,C), C\=@='end_of_file',leer(File,R).
leer(File,[]):-read_line_to_codes(File,C),
C=@='end_of_file'.

% ------------------------------------------------------------------------

escribir_linea(Ruta):- open(Ruta, append, F), write('Ingrese un atomo'),
read(Linea), write(F, Linea), nl(F), close(F).

% ------------------------------------------------------------------------

escribir_Lista(L, Ruta):- open(Ruta, append, F), write(F, L), nl(F), close(F).

% ------------------------------------------------------------------------

concatenar([], L, L).
concatenar([C|R], L, [C|R1]):- concatenar(R, L, R1).

% ------------------------------------------------------------------------

agregar(E, [], [E]).
agregar(E, [C|R], [C|L1]):- agregar(E, R, L1).
invertir([], []).
invertir([C|R], L):- invertir(R,L1), agregar(C, L1, L).


% ------------------------------------------------------------------------

mov(centro, a).
mov(centro, B).
mov(centro, c).
mov(centro,d).
mov(X, Y):- mov (Y, X).

elimUlt([X|B], [X]).
elimUlt([C|R], [C|R1]):- longitud(R, N), N > 1, elimUlt(R, R1).

% ------------------------------------------------------------------------

ordenar(L, LOrd):- ordenar(L, [], LOrd).
ordenar([], L, L).
ordenar([C|R], L, LOrd):- insertar(C, L, L1), ordenar(R, L1, LOrd).

insertar(E, [], [E]).
insertar(E, [C|R], [E|[C|R]]):- E =< C.
insertar(E, [C|R], [C|L]):- E > C, insertar(E, R, L).

**Adjunto va el planteamiento del trabajo y los siguientes dibujos son el laberinto y un ejemplo de como debe correr.  

1. (http://img.photobucket.com/albums/v302/joseviera/laberinto.jpg)

2. (http://img.photobucket.com/albums/v302/joseviera/ejemplo.jpg)