Manipulação de listas em Prolog

Jullyet

Membro
Dada uma lista, com um elemento X, devo subdvidi-la em duas sublistas L1 e L2, com membros antes de X e depois de X.



Meu programa:



dividir(_,[],[],[]).



dividir(M,[H|T],[H|U1],U2) :- H =< M, dividir(M,T,U1,U2).



dividir(M,[H|T],U1,[H|U2]) :- H > M, dividir(M,T,U1,U2).





?- dividir(f, [a,b,c,d,f,g,x,i,j],L1,L2).

L1= [a,b,c,d,e,f]

L2=[g,x,i,j]





Só que quando vou interpretar da erro.



Alguém para me ajudar.



Desde já agradeço!!
 
Já não me lembro bem do prolog, mas creio que que a manipulação que estás a tentar fazer do lado esquerdo (colocar o elemento na lista certa) tem de ser feita do lado direito.

dividir(M,[H|T],U1,U2) :- H =< M, dividir(M,T,[H|U1],U2).

Também não te esqueças que o caso de paragem só deve incidir sobre a primeira lista. Só essa é que está vazia, as outras não, já que estás a tirar da primeira e a colocar nas outras.

dividir(_,[],_,_)

 
Última edição:
Back
Topo