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.
El objetivo es emplear ejemplos y su desarrollo paso a paso para que el aprendizaje sea lo más fácil y real posible.
Etiquetas
- _todos_ (66)
- mathematica (1)
- programacion (66)
- prolog (48)
- purebasic (15)
- winprolog (47)
Datos personales
Videos Ejemplo
Programas
Frameworks
Libros
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 'enter' o clic en el igual
Ejemplos de uso:
1) Plot3D[Sin[x]*Cos[y],{x,0,2 Pi},{y,0,Pi}]
2) Colombia
Escribe el ejemplo y da 'enter' o clic en el igual
Seguidores
Mostrando entradas con la etiqueta prolog. Mostrar todas las entradas
Mostrando entradas con la etiqueta prolog. Mostrar todas las entradas
martes, 25 de junio de 2013
PROLOG: Busca numero mayor en lista (versión 2)
Este programa busca el elemento mayor de una lista:
my_list_max(X, [X]) :-
!.
my_list_max(X, [X|Ys]) :-
my_list_max(X1, Ys),
X >= X1,
!.
my_list_max(X, [_|Xs]) :-
my_list_max(X, Xs).
Para ejecutar el programa:
?- my_list_max(X, [5,3,9,2,8,7]).
Y el resultado es:
X = 9
Nota: Este programa fue una contribución de uno de nuestros visitantes, quien propuso una solución recursiva al problema.
PROLOG: Busca numero menor en lista (versión 2)
Este programa busca el elemento menor de una lista:
my_list_min(X, [X]) :-
!.
my_list_min(X, [X|Ys]) :-
my_list_min(X1, Ys),
X =< X1,
!.
my_list_min(X, [_|Xs]) :-
my_list_min(X, Xs).
Para ejecutar el programa:
?- my_list_min(X, [5,3,9,2,8,7]).
Y el resultado es:
X = 2
Nota: Este programa fue una contribución de uno de nuestros visitantes, quien propuso una solución recursiva al problema.
miércoles, 24 de abril de 2013
PROLOG: Borra ultimo elemento de una lista
Este programa borra el último elemento de una lista:
my_remove_last_element([_], []).
my_remove_last_element([Y|Ys], [Y|Zs]):-
my_remove_last_element(Ys, Zs).
Para ejecutar el programa:
?- my_remove_last_element([a,b,c,b,e,b,f,g], Zs).
Y el resultado es:
Zs = [a,b,c,b,e,b,f]
jueves, 1 de noviembre de 2012
PROLOG: Permutacion de una lista
Este programa encuentra todas las permutaciones de los elementos de una lista (La permutación de un conjunto se define como cada una de las posibles ordenaciones de todos los elementos de dicho conjunto):
my_permutation(Bs, [A|As]):-
my_append(Xs, [A|Ys], Bs),
my_append(Xs, Ys, Zs),
my_permutation(Zs, As).
my_permutation([], []).
Para ejecutar el programa:
?- my_permutation([a,b,c],Ls).
Y el resultado es:
Ls = [a,b,c] Ls = [a,c,b] Ls = [b,a,c] Ls = [b,c,a] Ls = [c,a,b] Ls = [c,b,a]
Nota: Este programa usa algunas reglas (programas) definidas anteriormente.
lunes, 10 de septiembre de 2012
PROLOG: Convierte lista anidada en lista no anidada
Este programa convierte una lista que contiene elementos que son listas, en una lista de elementos simples:
my_flatten(X, [X]):-
\+ list(X).
my_flatten([], []).
my_flatten([As|Bs], Cs):-
my_flatten(As, ALs),
my_flatten(Bs, BLs),
my_append(ALs, BLs, Cs).
Para ejecutar el programa:
?- my_flatten([1,7,3,4,[5,[[[6],[8]],9,7]],[[8],9],[[[0]]]], Ls).
Y el resultado es:
Ls = [1,7,3,4,5,6,8,9,7,8,9,0]
Nota: Este programa usa algunas reglas (programas) definidas anteriormente.
viernes, 11 de mayo de 2012
PROLOG: Ordena lista de numeros, metodo de la burbuja
Este programa ordena una lista numérica en forma ascendente. Si quieres ordenar en forma descendente cambia la linea "B < A" por "A < B":
my_bubble_sort(Xs, Ys):-
my_append(Cs, [A,B|Ds], Xs),
B < A,
my_append(Cs, [B,A|Ds], Fs),
my_bubble_sort(Fs, Ys),
!.
my_bubble_sort(Xs, Xs).
Para ejecutar el programa:
?- my_bubble_sort([4,7,1,3,2,9,2,6], Ls).
Y el resultado es:
Ls = [1,2,2,3,4,6,7,9]
Nota: Este programa usa algunas reglas (programas) definidas anteriormente.
jueves, 8 de marzo de 2012
PROLOG: Interseccion entre dos listas
Este programa encuentra la intersección de dos listas (intersección de conjuntos):
my_intersect([], _, []).
my_intersect([A|As], Bs, [A|Cs]):-
my_member(A, Bs),
!,
my_intersect(As, Bs, Cs).
my_intersect([_|As], Bs, Cs):-
my_intersect(As, Bs, Cs).
Para ejecutar el programa:
?- my_intersect([1,2,3,4], [2,3,6,7,1], Ls).
Y el resultado es:
Ls = [1,2,3]
Nota: Este programa usa algunas reglas (programas) definidas anteriormente.
miércoles, 7 de marzo de 2012
PROLOG: Union entre dos listas
Este programa encuentra la unión de dos listas (unión de conjuntos):
my_union([], Cs, Cs).
my_union([A|As], Bs, Cs):-
my_member(A, Bs),
!,
my_union(As, Bs, Cs).
my_union([A|As], Bs, [A|Cs]):-
my_union(As, Bs, Cs).
Para ejecutar el programa:
?- my_union([a,b,c], [b,a,d,e,h], Ls).
Y el resultado es:
Ls = [c,b,a,d,e,h]
Nota: Este programa usa algunas reglas (programas) definidas anteriormente.
martes, 8 de noviembre de 2011
PROLOG: Mira si una lista es sublista de otra lista
Este programa mira si una lista es sublista de otra lista:
my_sub_list(Xs, Ys):-
my_append(_, Bs, Ys),
my_append(Xs, _, Bs).
Para ejecutar el programa:
?- my_sub_list([b,c], [a,b,c,d,e,f,g]).
Y el resultado es:
yes
Para ejecutar el programa:
?- my_sub_list([b,c,f], [a,b,c,d,e,f,g]).
Y el resultado es:
no
Para ejecutar el programa:
?- my_sub_list(Ls, [c,d,e]).
Y el resultado es:
Ls = [] ; Ls = [c] ; Ls = [c,d] ; Ls = [c,d,e] ; Ls = [] ; Ls = [d] ; Ls = [d,e] ; Ls = [] ; Ls = [e] ; Ls = [] ;
Nota: Este programa usa algunas reglas (programas) definidas anteriormente.
jueves, 3 de noviembre de 2011
PROLOG: Busca numero mayor en lista
Este programa busca en una lista de números el mayor:
my_list_max(M, [X|Xs]):-
my_list_max2(M, X, Xs).
my_list_max2(M, M, []):- !.
mylist_max2(X, Y, [Z|Zs]):-
Z >= Y,
!,
my_list_max2(X, Z, Zs).
my_list_max2(X, Y, [Z|Zs]):-
Z =< Y,
my_list_max2(X, Y, Zs).
Para ejecutar el programa:
?- my_list_max(M, [5,3,9,2,8,7]).
Y el resultado es:
M = 9
PROLOG: Busca numero menor en lista
Este programa busca en una lista de números el menor:
my_list_min(M, [X|Xs]):-
my_list_min2(M, X, Xs).
my_list_min2(M, M, []):- !.
my_list_min2(X, Y, [Z|Zs]):-
Z =< Y,
!,
my_list_min2(X, Z, Zs).
my_list_min2(X, Y, [Z|Zs]):-
Z >= Y,
my_list_min2(X, Y, Zs).
Para ejecutar el programa:
?- my_list_min(M, [5,3,9,2,8,7]).
Y el resultado es:
M = 2
domingo, 18 de septiembre de 2011
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.
miércoles, 20 de julio de 2011
PROLOG: Invierte una lista (versión 3)
Este programa invierte una lista:
my_reverse([X|Xs], Ys, Zs):-
my_reverse(Xs, [X|Ys], Zs).
my_reverse([], Ys, Ys).
Para ejecutar el programa:
?- my_reverse([1,2,3,4,5], [], Ls).
Y el resultado es:
Ls = [5,4,3,2,1]
martes, 19 de julio de 2011
PROLOG: Invierte una lista (versión 2)
Este programa invierte una lista:
my_reverse([], []).
my_reverse([X|Xs], Ys):-
my_reverse(Xs, Zs),
my_append(Zs, [X], Ys).
Para ejecutar el programa:
?- my_reverse([1,2,3,4,5], Ls).
Y el resultado es:
Ls = [5,4,3,2,1]
Nota: Este programa usa algunas reglas (programas) definidas anteriormente.
miércoles, 29 de junio de 2011
PROLOG: Elementos consecutivos en una lista
Este programa mira si dos elementos se encuentran consecutivos en una lista:
my_consecutive(X,Y,[X,Y|_]).
my_consecutive(X,Y,[_|Xs]):-
my_consecutive(X,Y,Xs).
Para ejecutar el programa:
?- my_consecutive(e,g,[d,f,e,g,h,e,r,u]).
Y el resultado es:
yes
Para ejecutar el programa:
?- my_consecutive(g, e, [d,f,e,g,h,e,r,u]).
Y el resultado es:
no
domingo, 19 de junio de 2011
PROLOG: Borra elemento N de una lista (versión 2)
Este programa elimina el elemento en la posición N en una lista:
my_remove_element_n(_, _, [], []).
my_remove_element_n(N, N, [_|Xs], Zs):-
I2 is N + 1,
my_remove_element_n(N, I2, Xs, Zs), !.
my_remove_element_n(N, I, [Y|Xs], [Y|Zs]):-
I2 is I + 1,
my_remove_element_n(N, I2, Xs, Zs).
Para ejecutar el programa:
?- my_remove_element_n(5, 1, [a,b,c,d,e,f,g,h], Zs).
Y el resultado es:
Zs = [a,b,c,d,f,g,h]
PROLOG: Borra elemento N de una lista
Este programa elimina el elemento en la posición N en una lista:
my_remove_element_n(1, [_|Xs], Xs).
my_remove_element_n(I, [X|Xs], [X|Ys]):-
I2 is I - 1,
my_remove_element_n(I2, Xs, Ys).
Para ejecutar el programa:
?- my_remove_element_n(5, [a,b,c,d,e,f,g,h], Zs).
Y el resultado es:
Zs = [a,b,c,d,f,g,h]
viernes, 10 de junio de 2011
PROLOG: Compresión de una lista (versión 2)
Este programa permite eliminar los elementos repetidos en una lista. A diferencia de la versión 1 de este programa, los elementos a eliminar NO tienen que estar contiguos:
my_compress([], []):- !.
my_compress([X|Xs], Ys):-
my_member(X, Xs),
!,
my_compress(Xs, Ys).
my_compress([X|Xs], [X|Ys]):-
my_compress(Xs, Ys).
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 = [a,e,c,b,d,f]
Nota: Este programa usa algunas reglas (programas) definidas anteriormente.
miércoles, 8 de junio de 2011
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]
martes, 31 de mayo de 2011
PROLOG: Media aritmetica de una lista
Este programa calcula la media aritmética (promedio) de los elementos de una lista:
my_average(Xs, A):-
my_length(Xs, L),
my_sum_elements(Xs, S),
A is S / L.
Para ejecutar el programa:
?- my_average([1,2,3,4,5,6], A).
Y el resultado es:
A = 3.5
Nota: Este programa usa algunas reglas (programas) definidas anteriormente.
Suscribirse a:
Entradas (Atom)