Páginas

Bienvenidos

Este blog busca darle algunas herramientas para trabajar con varios de los programas más interesantes y útiles de la actualidad.

El objetivo es emplear ejemplos y su desarrollo paso a paso para que el aprendizaje sea lo más fácil y real posible.

Mathematica

Mathematica
Mathematica

Etiquetas

Datos personales

Mi foto
Ingeniero
Esp. Informática y Computación
Esp. Administración de Sistemas

apache Flex

Mathematica

Todo el poder de Mathematica en la Web:



Ejemplos de uso:

1) Plot3D[Sin[x]*Cos[y],{x,0,2 Pi},{y,0,Pi}]
2) Colombia

Escribe el ejemplo y da clic en el igual

Seguidores

miércoles, 8 de junio de 2011

PostHeaderIcon PROLOG: Compresion de una lista


Este programa permite eliminar los elementos repetidos en una lista. Los elementos a eliminar deben estar contiguos:

my_compress([], []).

my_compress([X], [X]).

my_compress([X, X|Xs], Zs):-
          my_compress([X|Xs], Zs).

my_compress([X, Y|Ys], [X|Zs]):-
          X \= Y,
          my_compress([Y|Ys], Zs).


Para ejecutar el programa:

?- my_compress([a,a,e,e,e,c,c,b,b,b,b,d,f], Ls).


Y el resultado es:

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


Para ejecutar el programa:

?- my_compress([e,e,e,a,a,e,e,e,c,c,b,b,b,b,d,f], Ls).


Y el resultado es:

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




*** Programa probado en WinProlog versión 4.7 ***

2 comentarios:

Anónimo dijo...

Este programa sirve solo para letras pero no para números, aquí les dejo una solución mejor.

Este si trabaja bien, lo encontré en:
http://jc-info.blogspot.com/2009/02/uso-de-listas-en-prolog-codigo.html

elimRepetidos([],[]).
elimRepetidos([H|T],S):-esMiembro(H,T),!,
elimRepetidos(T,S).
elimRepetidos([H|T],[H|S]):-elimRepetidos(T,S).

%verifica sin un elemento es miembro de una Lista
esMiembro(X,[X|_]).
esMiembro(X,[_|T]):-esMiembro(X,T).

Simplificándolo usando el predicado "member" definido en Prolog quedaría:

elimRepetidos([],[]).
elimRepetidos([H|T],S):-member(H,T),!,
elimRepetidos(T,S).
elimRepetidos([H|T],[H|S]):-elimRepetidos(T,S).

a8a dijo...

Hola

Este programa funciona bien con números y letras. Lo único que debes tener en cuenta es que solo elimina elementos que este contiguos.

El programa:

http://xpasos.blogspot.com/2011/06/prolog-compresion-de-una-lista-version.html

es la versión 2 de este programa, y este puede eliminar elementos no contiguos. Este programa funciona igual al que tu recomiendas.

Saludos.

Publicar un comentario

Apache Flex

Wolfram Programming Lab