1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Manipulação de listas em Prolog

Discussão em 'Programação' iniciada por Jullyet, 25 de Maio de 2012. (Respostas: 2; Visualizações: 1326)

  1. 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!!
     
  2. Flinger

    Flinger Power Member

    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: 25 de Maio de 2012
  3. manelis

    manelis Power Member

    se escreveres acho que é gtrace. ou gtrace, aparece um debbuger, pode ajudar bastante a encontrar erros.
     

Partilhar esta Página