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,
.
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.
2.