Código fuente

EXPERTO DE AUTOESCUELA


 

[Sección PREDICATES] [Sección CLAUSES] [Sección GOAL]

predicates

maximo(string, string, integer)

via(integer, integer, string, string)

velocidad(string, integer, integer, string, integer)

nondeterm repeat

nondeterm pedirdatos

[Indice]

clauses

/* Definición de las velocidades genéricas de vehículos según la vía */

maximo("novel", "autopista", 80):-!.

maximo("novel", "autovia", 80):-!.

maximo("novel", "via_rapida", 80):-!.

maximo("novel", "ccb", 80):-!.

maximo("novel", "ccm", 80):-!.

maximo("turismo", "autopista", 120):-!.

maximo("motocicleta", "autopista", 120):-!.

maximo("vehiculomixto", "autopista", 100):-!.

maximo("autobus", "autopista", 100):-!.

maximo("camion", "autopista", 90):-!.

maximo("vehiculoarticulado", "autopista", 90):-!.

maximo("conjuntovehiculos", "autopista", 80):-!.

maximo(Veh, "autovia", R):-maximo(Veh, "autopista", R), !.

maximo("turismo", "ccb", 100):-!.

maximo("motocicleta", "ccb", 100):-!.

maximo("vehiculomixto", "ccb", 90):-!.

maximo("autobus", "ccb", 90):-!.

maximo("camion", "ccb", 80):-!.

maximo("vehiculoarticulado", "ccb", 80):-!.

maximo("conjuntovehiculos", "ccb", 80):-!.

maximo(Veh, "via_rapida", R):-maximo(Veh, "ccb", R),!.

maximo(Veh, "ccm", R):-maximo(Veh, "ccb", Auxi), R=Auxi-10, !.

maximo(Veh, "via_urbana", _):-

Veh<>"turismo",

Veh<>"motocicleta",

Veh<>"vehiculomixto",

Veh<>"autobus",

Veh<>"camion",

Veh<>"vehiculoarticulado",

Veh<>"conjuntovehiculos",

Veh<>"novel",

fail, !.

maximo(_, "via_urbana", 50):-!.

maximo(Veh, "travesia", R):-maximo(Veh, "via_urbana", R).

 

/* Definición de vía en función de sus características */

via(_, _, "autopista", "autopista"):-!.

via(_, _, Senal, Tipo):-Senal="autovia", Tipo="autovia", !.

via(_, _, Senal, Tipo):-Senal="viarapida", Tipo="via_rapida", !.

via(_, _, Senal, Tipo):-Senal="de_via_urbana", Tipo="via_urbana", !.

via(_, _, Senal, Tipo):-Senal="de_travesia", Tipo="travesia", !.

via(Arcen, _, "nohay", "ccb"):-Arcen >=150, !.

via(_, Carriles, "nohay", "ccb"):-Carriles>=2, !.

via(_, -1, "nohay", "ccb"):-!.

via(_, _, "nohay", "ccm").

 

/* Predicado de cálculo de velocidad en función del vehículo y las características

de la vía */

velocidad(Vehiculo, A, C, S , V):-via(A, C, S, Carretera),

maximo(Vehiculo, Carretera, V).

repeat.

repeat:-repeat.

 

pedirdatos:-

repeat,

write("PETICIÓN DE DATOS (nohay=no hay dato concreto)"), nl, nl, nl,

write("Especifica el tipo de vehículo, (turismo, motocicleta, vehiculomixto, autobus, camion)"), nl,

write("(vehiculoarticulado, conjuntovehiculos, novel): "),

readln(V),

nl,

write("Especifica el tamaño del arcen: "), readint(A),

nl,

write("Especifica el número de carriles (-1 para adelantamiento): "), readint(C),

nl,

write("Especifica señal (autopista, autovia, via_rapida): "), readln(S),

velocidad(V, A, C, S , Velocidad), nl,

write("La velocidad máxima es: "), write(Velocidad), nl,

write("Continuar=Cualquier tecla, Salir=1"), nl,

readint(Tecla), nl, nl, nl,

Tecla=1.

[Indice]

goal

pedirdatos.

[Indice]