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

domingo, 18 de septiembre de 2011

PostHeaderIcon PROLOG: Mira si una lista es Palindrome


Este programa revisa si una lista es palindrome. Una palabra, frase o lista es Palindrome si se lee igual hacia adelante que hacia atrás (ejemplo ana, 13531, [1,2,3,2,1], oso):


my_palindrome(Xs):-
my_reverse(Xs, Xs).


Para ejecutar el programa:


?- my_palindrome([a,b,c,d,e,d,c,b,a]).


Y el resultado es:


yes


Para ejecutar el programa:


?- my_palindrome([a,b,c,d,e]).


Y el resultado es:


no


Nota: Este programa usa algunas reglas (programas) definidas anteriormente.


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

4 comentarios:

Anónimo dijo...

AYUDA:
como defino el predicado my_reverse ?.
Lo defino asi:
my_reverse : (char*,char*) procedure (i,o).
y me sale error!!!!!!! ayuda porfa...

a8a dijo...

Hola

El predicado "my_reverse" se encuentra en una entrada anterior del blog.

Puedes encontrar tres versiones diferentes de este predicado en los tres enlaces siguientes:

http://xpasos.blogspot.com/2011/05/prolog-invierte-una-lista.html

http://xpasos.blogspot.com/2011/07/prolog-invierte-una-lista-version-2.html

http://xpasos.blogspot.com/2011/07/prolog-invierte-una-lista-version-3.html

Si tienes duda sobre otro predicado, puedes localizarlo usando el buscador situado en la parte superior de la pagina.

Espero te sirva la respuesta.

Johntux dijo...

Este código funciona en GNU Prolog:

my_reverse([X|Xs], Ys, Zs):-my_reverse(Xs, [X|Ys], Zs).
my_reverse([], Ys, Ys).
my_palindrome(Xs):-my_reverse(Xs, [], Xs).

Notese que la definición de my_palindrome se agregó [] pues my_reverse está definida con 3 argumentos.

a8a dijo...

Johntux

Tienes razón sobre my_reverse (versión 1), ya que usa tres argumentos.

La versión 2 de my_reverse usa solo dos argumentos y la puedes ver en el siguiente enlace:

http://xpasos.blogspot.com/2011/07/prolog.html

Publicar un comentario

Apache Flex

Wolfram Programming Lab