• Jueves 9 de Mayo de 2024, 03:03

Autor Tema:  Re: listas alternadas y demas  (Leído 3029 veces)

eduspears

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
    • http://www.britneyheart.cjb.net
Re: listas alternadas y demas
« en: Domingo 4 de Mayo de 2003, 18:24 »
0
hola. tengo que hacer unas practicas para la uni de prolog, y hay dos que no las saco ni a tiros. Si alguien me puede echar una mano, se lo agradeceria. son estas:

6. todas_alternadas(L,LLA): cierto si LLA es una lista que contiene todas las listas alternadas que se
pueden formar con los elementos de L (considerando que L es una lista de números enteros distintos
entre si). Para realizar este predicado, implementar antes el siguiente:
alternar(L,LA): cierto si dada L, una lista de números enteros distintos entre si, LA es una lista
alternada que se puede formar con los elementos de L. Una lista es alternada si cada elemento está
entre dos que son mayores que él, o entre dos que son menores que él. Si L es una lista de dos
elementos, cualquier combinación de ellos se considera una lista alternada. Este predicado debe
devolver por backtraking todas las listas alternadas que se pueden formar a partir de L.
?- todas_alternadas([3,1,2],L).
L = [[3, 1, 2], [1, 3, 2], [2, 3, 1], [2, 1, 3]] ;
No
?- alternar([],L).
L = [] ;
No
?- alternar([1,2],L).
L = [1, 2] ;
L = [2, 1] ;
No
?- alternar([3,2,1],L).
L = [2, 3, 1] ;
L = [2, 1, 3] ;
L = [3, 1, 2] ;
L = [1, 3, 2] ;
No


y esta es la segunda:

7. filtrar_secuencias(N,L1,L2): cierto si L2 es la lista que contiene los elementos de L1 que pertenecen
a las secuencias de al menos N elementos iguales consecutivos.
?- filtrar_secuencias(3,[a,b,b,b,c,a,a,a,b,b,b,b,c,c,d],L).
L = [b,b,b,a,a,a,b,b,b,b] ;
No
?- filtrar_secuencias(4,[a,b,b,b,c,a,a,a],L).
L = [] ;
No
?- filtrar_secuencias(2,[],L).
L = [] ;
No


gracias de antemano

Iluvatarm

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: listas alternadas y demas
« Respuesta #1 en: Lunes 5 de Mayo de 2003, 14:38 »
0
mmm parece chungo! ahora no tengo demasiado tiempo, pero prueba de empezar por aqui, quizas sea buena idea...


//alternado: dice si es una lista alternada
alternado([]). //lista vacia
alternado([_]). //lista de un elemento
alternado([_,_]). //lista de 2 elementos
alternado([X,Y,Z|L]):-X<Y,X<Z,alternado([Y,Z|L]).
alternado([X,Y,Z|L]:-X>Y,X>Z,alternado([Y,Z|L]).

//formado: dice si L2 se puede formar con L1 (creo que hay un predicado ya hecho)

alternar(L,LA):-alternado(LA),formado(L,LA).

...

me lo miro
:question:

eduspears

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
    • http://www.britneyheart.cjb.net
listas alternadas y demas
« Respuesta #2 en: Martes 6 de Mayo de 2003, 23:21 »
0
hola!, bueno, ante todo gracias por responder, gracias por haberte molestado.
ahora una mala noticia: tengo que entregarlo el viernes... :ayuda: !!!
si puedes, dime como es el predicado formado ese.
gracias de todas maneras :gracias: