Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Codigo Ascensor
Codigo Ascensor
% estado(puerta,piso,lista de requerimientos)
estado=estado(symbol,integer,listapisos).
listaestados=estado*.
listapisos=integer*.
predicates
nondeterm pertenece(estado,listaestados)
nondeterm mover(integer,estado,estado)
% pp(estado inicial,estado final,control de profundidad,lista final,lista ya visitados,ultimo piso)
nondeterm pp(estado,estado,integer,listaestados,listaestados,integer)
nondeterm imprimirestados(listaestados)
nondeterm imprime(estado)
clauses
% Sube de a un piso
mover(_,estado(cerrada,PISO1,[PISODESTINO|CO]),estado(cerrada,PISO2,[PISODESTINO|CO])):-
PISO1<PISODESTINO,PISODESTINO<=10,PISO1>=-2,PISO2=PISO1+1.
% Baja de a un piso
mover(_,estado(cerrada,PISO1,[PISODESTINO|CO]),estado(cerrada,PISO2,[PISODESTINO|CO])):-
PISO1>PISODESTINO,PISODESTINO>=-2,PISO1<=10,PISO2=PISO1-1.
/**************************************ESTRATEGIA DE CONTROL*************************************/
imprime(estado(cerrada,PISO,[_|_])):-write(PISO,"\n").
imprime(estado(_,_,[])).
goal
L=[0,4,6,1,6,10],
/*********************************BASE DE DATO GLOBAL**********************************************/
/**INICIAL**************FINAL********************RESULTADO*****************************************/
pp(estado(cerrada,0,L),estado(cerrada,10,[]),50,LISTARESULT,[estado(cerrada,0,L)],10),
imprimirestados(LISTARESULT).