Untitled
unknown
prolog
2 years ago
2.0 kB
7
Indexable
%Base de conocimiento para la tarea de Declarativa %Centros de estudio lugar(colegio_santa_cecilia). lugar(itca_fepade). lugar(fesa). %Centros de salud lugar(hospital_san_rafael). %Centros de gasolineria lugar(gasolineria_uno). %Centros de parques recreativos lugar(parque_daniel_hernandez). lugar(parque_san_martin). lugar(parque_cafetalon). lugar(parque_la_familia). lugar(estadio_nacional_las_delicias). lugar(parque_ecologico_san_jose). %Centros de centro comercial lugar(plaza_merliot). lugar(plaza_la_skina). lugar(plaza_las_ramblas). %Calles de lugares % lugar(ccCarretera_panamericana). lugar(carrerera_panamericana_central). %Coordenadas %311 417 %529 426 %775 436 coordenada(gasolineria_uno,311,417). coordenada(carretera_panamericana_central,529,426). coordenada(hospital_san_rafael,775,436). %Funcion que retorna la calle y coordenada obtener_coordenada(Lugar, Coor) :- coordenada(Lugar, X, Y), Coor = coordenada(Lugar, X, Y). %Conexiones de las coordenadas %Direccional conecta_con(gasolineria_uno,carretera_panamericana_central). conecta_con(carretera_panamericana_central,hospital_san_rafael). % Base de conocimiento y definiciones anteriores % ... % Predicado para encontrar una ruta % X: Inicio, Y: Destino, R: Ruta ir_hacia(X, Y, R) :- abolish(eslabon, 1), assert(eslabon(X)), ir_hacia_rec(X, Y, [X], R), % Inicialmente, la ruta solo contiene el punto de inicio writeln(R). % Caso base: se ha llegado al destino ir_hacia_rec(X, Y, TempR, R) :- conecta_con(X, Y), writeln(Y), assert(eslabon(Y)), reverse([Y | TempR], R). % Invierte la lista para que quede en orden de inicio a destino % Caso recursivo: sigue buscando la ruta ir_hacia_rec(X, Y, TempR, R) :- conecta_con(X, Z), not(eslabon(Z)), assert(eslabon(Z)), ir_hacia_rec(Z, Y, [Z | TempR], R), writeln(Z), !. prueba(X):- lugar(X).
Editor is loading...