Hola a todos,
ya sé que estoy siendo una pesada con mis problemas de Prolog, pero necesito entregar mi programa la semana que viene y sigue sin salirme del todo.
El único problema que me queda por resolver es el siguiente. Mi código es este:
polaridad(completos,1).
polaridad(y,0).
polaridad(amplios,1).
polaridad(menus,0).
acumulador([_|Y],Ac1,L):-
polaridad(W,Z),
Ac1 is Ac1+Z,
acumulador(Y,Ac1,L).
acumulador([],Ac1,Ac1).
Con esta regla recursiva consigo que me vaya leyendo los valores de las reglas de polaridad y los vaya sumando en el acumulador Ac1. El problema es que una vez que llega a la segunda palabra de la lista que introduce el usuario, vuelve a evaluar el hecho "polaridad(completos,1)" por lo que suma 1 a Ac1, cuando lo que tendría que hacer es sumarle 0 (como le corresponde a y).
¿Alguien tendría alguna idea acerca de cómo evitar que vuelva a evaluar un hecho ya evaluado??
A mí lo único que se me ocurre es poner un "cut" (!) en algún sitio, pero no sé dónde narices ponerlo...
Muchas gracias!
Un saludo!