reglas - prolog pdf
Cómo encontrar diferencias en las listas en prolog y determinar si las listas son las mismas(los mismos elementos pero no tienen que tener el mismo orden) (1)
Dado que esto parece una tarea, daré algunas ideas solo en código no real:
Primero, puede comenzar con un procedimiento miembro que determina si un elemento es miembro de una lista:
member(X, [X|_]).
member(X, [_|T]) :- member(X, T).
Entonces X es el jefe de la lista o un miembro de la cola.
Su primera pregunta se puede responder como:
1. If list A is empty then list C is empty
2. The head of A (HA) is the head of C if member(HA, B) is false AND the Tail of C (CT) can be found by recursively calling the procdure with the tail of A (TA), B and CT.
3. Otherwise, if HA is a member of B then just recusively call the procedure on TA, B and C
Del mismo modo, la segunda pregunta se puede responder utilizando el procedimiento anterior. Si la lista de letras en A que no está en B está vacía Y cada elemento de A es un miembro de B, entonces son iguales.
Espero que esto ayude un poco. Siempre puede publicar lo que intentó para que podamos dar más consejos.
Si tengo dos listas, decir A y B forman upp de letras diferentes. [b, a, c] en la lista A y [b, d, c, e] en la lista B, ¿cómo puedo obtener prolog para dar C, que es una lista de elementos que A tiene y que no están incluidos en la lista B Ex . Entonces si escribo la
difference([b,a,c],[b,d,c,e],C).
Quiero que la respuesta sea:C=[a]
Si tengo dos listas donde la lista A está compuesta de [a, b, c] y la lista B es [c, a, b], quiero que el resultado sea
Yes
si escribo:same([a,b,c],[c,a,b]).
ya que contienen los mismos elementos, el hecho de que estén en un orden diferente no importa. También solo debería responder sí si todos los elementos son iguales, no si 3/4 son correctos.