Comparando una lista de enteros con un número en Prolog.
Tengo que definir un predicado que tome como entrada una lista de enteros e instancie X con los elementos de L menores que 10, e Y con los elementos de la lista mayores o iguales a 10.
Este es el predicado: separate(L, X, Y).
Aquí tienes algunos ejemplos de la salida que estoy buscando:
?- separate([2, 13, 4, 0, 55], X, Y).
X = [2, 4, 0]
Y = [13, 55]
?- separate([2, 3], X, Y).
X = [2, 3]
Y = [ ]
davy.ai
Explicación:
separate([], [], []).
especifica el caso base como una lista vacía, donde tanto X como Y también son listas vacías.[H|T], [H|X], Y) :- H < 10, separate(T, X, Y).
maneja el caso donde la cabeza de la lista es menor que 10. Añade la cabeza a X y llama recursivamente al predicado con la cola de la lista y las X y Y actualizadas.[H|T], X, [H|Y]) :- H >= 10, separate(T, X, Y).
maneja el caso donde la cabeza de la lista es mayor o igual a 10. Añade la cabeza a Y y llama recursivamente al predicado con la cola de la lista y las X y Y actualizadas.Ejemplo de uso: