/*
  permutar(L,P)

  Predicado que comprueba si P es una permutación de la lista L

  Argumentos
  + L:
    - Significado: lista de elementos
    - Tipo: entrada y salida

  + P:
    - Significado: lista de elementos
    - Tipo: entrada y salida

 Variables locales
 + X:
    - Significado: elemento
 + Resto:
    - Significado: lista de elementos
 + P:
    - Significado: lista de elementos

  Predicado relacionado
   borrar
*/
           
permutar([],[]).

permutar(L,[X|P]):-
        borrar(X,L,Resto),
        permutar(Resto,P).


/*
  borrar(X,L,R).

  Predicado que comprueba R es la lista que se obtiene al borrar X de la lista L

  Argumentos
  + X:
    - Significado: elemento
    - Tipo: entrada y salida
  + L:
    - Significado: lista de elementos
    - Tipo: entrada y salida

  + R:
    - Significado: lista de elementos
    - Tipo: entrada y salida

  Variables locales
  + Cola1:
    - Significado: lista de elementos
  + Cola2:
    - Significado: lista de elementos
*/
borrar(X,[X|Cola],Cola).

borrar(X,[Y|Cola1],[Y|Cola2]):- borrar(X,Cola1,Cola2).


