Los foros del Guille

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 

elGuille.hosting: OFERTA Multi Dominio por 40.95 Eur al mes

Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu interés (algunos de los avisos publicados)

20/oct/2006
Repetimos: ya que de vez en cuando es bueno que sepas que cosas te facilitarán las respuestas:
-No repitas mensajes,
-Intenta escribir un asunto adecuado a tu duda,
-No personalices (no indiques el nombre de quien quieres que responda),
-Explica bien tu duda, ten en cuenta que el que lee no puede leer tu mente y necesita saber todo lo que tu sabes para poder ayudarte.
Gracias.

  Foro: IA (Prolog, Lisp, etc) Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 49415 - Insisto. Please Ayudenme con este codigo prolog es simple!!!
IDAsuntoFechaNick 
49415 Insisto. Please Ayudenme con este codigo prolog es simple!!!27/07/09 03:03Mar25   
Implementé este código, lo que quiero que haga es que verifique si en una lista hay al menos dos elementos que sean iguales, a la vez que encuentre al menos dos iguales quiero que salga y deje una variable C igual a 1.

Pero me está dando error cuando le doy compilar. Alguien me podría orientar en qué tengo mal en el código??

Aquí se los dejo comentariado para que vean que pretendo en cada línea.
El predicado Verifica_iguales le paso una lista que se recorre poco a poco pasándole cada elemento de la lista al predicado pertenece el cual verifica que en el resto de la lista no exista otro igual a ese. La variable C devuelve valor 1 si hay al menos 1 repetido en la lista o 0 sino encuentra. El predicado pertenece me funciona bien. Me esta dando problemas con el verifica. Ayúdenme soy nueva en prolog!!!
Gracias de antemano.


Verifica_iguales([],0).
Verifica_iguales(L,1):-!.
Verifica_iguales([X/L],C):- pertenece(X,L,C),
Verifica_iguales(L,C).

pertenece(X,[],0).
pertenece(X,[X|_],1):-!.
pertenece(X,[_|L1],C) :- pertenece(X,L1,C).




///////////////////////////////////////////////////////////////////Hasta aquí el código

1era linea: Si recorrió la lista completa y no hay iguales entonces C=0
2da linea: Si C = 1, encontró algo, entonces sale.
3era linea: Verif igual, Dev C=1 encontró, C=0 no encontró.
4ta linea : LLama recurs a la función hasta que C=1 o L=[].

1era pertenece: Si recorrió toda la lista y no encontró, C=0.
2da pertenece: comp a X con c/a elemt de la lista, si encuen C=1 y sale.
3era pertenece: Sino, C sigue sin valor, y llamo a la función recursivamente con el resto de los elementos de la lista.


El error que me da al compilar es:

! ----------------------------------------

! Error 23 : Type Error

! Goal : def([],2,_3074

Aborted

| ?-

 
(c) Guillermo 'guille' Som, 2005-2017  - foros.elGuille v1.0.5.3 (23/Mar/2009 14:50 GMT +1)  - (ASP.NET 2.0 v2.0.50727.8762)
 
Usuarios activos: 84 - App. iniciada: 24/11/2017 1:38:24 GMT - La hora GMT del servidor es: 24/11/2017 02:00:37 GMT