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
Archivo del blog
-
▼
2011
(38)
-
►
mayo
(17)
- PROLOG: Media aritmetica de una lista
- PROLOG: Multiplica elementos de una lista (versión 2)
- PROLOG: Multiplica elementos de una lista
- PROLOG: Suma elementos de una lista (versión 2)
- PROLOG: Suma elementos de una lista
- PROLOG: Borra elemento de una lista
- PROLOG: Elemento N de una lista (versión 2)
- PROLOG: Elemento N de una lista
- PROLOG: Borra un elemento de una lista
- PROLOG: Ultimo elemento de una lista (versión 2)
- PROLOG: Ultimo elemento de una lista
- PROLOG: Primer elemento de una lista
- PROLOG: Invierte una lista
- PROLOG: Longitud de una lista (versión 2)
- PROLOG: Longitud de una lista
- PROLOG: Busca elemento en una lista
- PROLOG: Concatena listas
-
►
abril
(10)
- PROLOG: N primeros numeros de la serie Fibonacci
- PROLOG: Factorial (versión 2)
- PROLOG: Factorial
- PROLOG: Suma de los numeros de 1 a N (versión 2)
- PROLOG: Suma de los numeros de 1 a N
- PROLOG: Devuelve el mayor de dos numeros (versión 2)
- PROLOG: Devuelve el mayor de dos numeros
- PROLOG: Division de numero por otro
- PROLOG: Suma de dos numeros
- PROLOG: Convenciones
-
►
mayo
(17)
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
martes, 8 de noviembre de 2011
PROLOG: Mira si una lista es sublista de otra lista
18:03 |
Publicado por
a8a |
Editar entrada
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
12:04 |
Publicado por
a8a |
Editar entrada
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
12:00 |
Publicado por
a8a |
Editar entrada
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
12:41 |
Publicado por
a8a |
Editar entrada
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)
14:44 |
Publicado por
a8a |
Editar entrada
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)
13:32 |
Publicado por
a8a |
Editar entrada
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
16:19 |
Publicado por
a8a |
Editar entrada
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)
14:29 |
Publicado por
a8a |
Editar entrada
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
14:23 |
Publicado por
a8a |
Editar entrada
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)
0:45 |
Publicado por
a8a |
Editar entrada
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
11:05 |
Publicado por
a8a |
Editar entrada
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
10:42 |
Publicado por
a8a |
Editar entrada
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.
martes, 24 de mayo de 2011
PROLOG: Multiplica elementos de una lista (versión 2)
11:30 |
Publicado por
a8a |
Editar entrada
Este programa multiplica los elementos de una lista:
my_mul_elements([], S, S).
my_mul_elements([X|Xs], T, S):-
T2 is T * X,
my_mul_elements(Xs, T2, S).
Para ejecutar el programa:
?- my_mul_elements([1,2,3,4,5], 1, S).
Y el resultado es:
S = 120
PROLOG: Multiplica elementos de una lista
11:27 |
Publicado por
a8a |
Editar entrada
Este programa multiplica los elementos de una lista:
my_mul_elements([], 1).
my_mul_elements([X|Xs], S):-
my_mul_elements(Xs, S2),
S is S2 * X.
Para ejecutar el programa:
?- my_mul_elements([1,2,3,4,5], S).
Y el resultado es:
S = 120
domingo, 22 de mayo de 2011
PROLOG: Suma elementos de una lista (versión 2)
16:18 |
Publicado por
a8a |
Editar entrada
Este programa suma los elementos de una lista:
my_sum_elements([], S, S).
my_sum_elements([X|Xs], T, S):-
T2 is T + X,
my_sum_elements(Xs, T2, S).
Para ejecutar el programa:
?- my_sum_elements([1,2,3,4,5], 0, S).
Y el resultado es:
S = 15
miércoles, 18 de mayo de 2011
PROLOG: Suma elementos de una lista
14:02 |
Publicado por
a8a |
Editar entrada
Este programa suma los elementos de una lista:
my_sum_elements([], 0).
my_sum_elements([X|Xs], S):-
my_sum_elements(Xs, S2),
S is S2 + X.
Para ejecutar el programa:
?- my_sum_elements([1,2,3,4,5], S).
Y el resultado es:
S = 15
lunes, 16 de mayo de 2011
PROLOG: Borra elemento de una lista
14:39 |
Publicado por
a8a |
Editar entrada
Este programa elimina todas las ocurrencias de un elemento en una lista:
my_remove_element(_, [], []).
my_remove_element(Y, [Y|Xs], Zs):-
my_remove_element(Y, Xs, Zs), !.
my_remove_element(X, [Y|Xs], [Y|Zs]):-
my_remove_element(X, Xs, Zs).
Para ejecutar el programa:
?- my_remove_element(b, [a,b,c,b,e,b,f,g], Zs).
Y el resultado es:
Zs = [a,c,e,f,g]
sábado, 14 de mayo de 2011
PROLOG: Elemento N de una lista (versión 2)
21:55 |
Publicado por
a8a |
Editar entrada
Este programa devuelve el elemento en la posición N de una lista:
my_n_element([Y|_], N, N, Y).
my_n_element([_|Xs], I, N, Y):-
I2 is I + 1,
my_n_element(Xs, I2, N, Y).
Para ejecutar el programa:
?- my_n_element([m,j,k,e,w], 1, 3, X).
Y el resultado es:
X = k
PROLOG: Elemento N de una lista
20:39 |
Publicado por
a8a |
Editar entrada
Este programa devuelve el elemento en la posición N de una lista:
my_n_element([Y|_], 1, Y).
my_n_element([_|Xs], N, Y):-
N2 is N - 1,
my_n_element(Xs, N2, Y).
Para ejecutar el programa:
?- my_n_element([m,j,k,e,w], 3, X).
Y el resultado es:
X = k
PROLOG: Borra un elemento de una lista
17:59 |
Publicado por
a8a |
Editar entrada
Este programa elimina un elemento en una lista. Si el elemento a borrar existe en la lista mas de una vez, se obtendrán varias respuestas (por backtraking) y en cada una solo se eliminara un elemento:
my_remove_one_element(X, [X|Xs], Xs).
my_remove_one_element(X, [Y|Ys], [Y|Zs]):-
my_remove_one_element(X, Ys, Zs).
Para ejecutar el programa:
?- my_remove_one_element(b, [a,b,c,b,e,b,f,g], Zs).
Y el resultado es:
Zs = [a,c,b,e,b,f,g]
Zs = [a,b,c,e,b,f,g]
Zs = [a,b,c,b,e,f,g]
Para ejecutar el programa:
?- my_remove_one_element(b, Ys, [a,c,e]).
Y el resultado es:
Ys = [b,a,c,e]
Ys = [a,b,c,e]
Ys = [a,c,b,e]
Ys = [a,c,e,b]
jueves, 12 de mayo de 2011
PROLOG: Ultimo elemento de una lista (versión 2)
10:00 |
Publicado por
a8a |
Editar entrada
Este programa devuelve el último elemento de una lista:
my_last_element(Xs, X):- my_append(_, [X], Xs).
Para ejecutar el programa:
?- my_last_element([m,j,k,e,w], X).
Y el resultado es:
X = w
Nota: Este programa usa algunas reglas (programas) definidas anteriormente.
PROLOG: Ultimo elemento de una lista
2:26 |
Publicado por
a8a |
Editar entrada
Este programa devuelve el último elemento de una lista:
my_last_element([Y], Y).
my_last_element([_|Xs], Y):-
my_last_element(Xs, Y).
Para ejecutar el programa:
?- my_last_element([m,j,k,e,w], X).
Y el resultado es:
X = w
PROLOG: Primer elemento de una lista
2:13 |
Publicado por
a8a |
Editar entrada
Este programa devuelve el primer elemento de una lista:
my_first_element([X|_], X).
Para ejecutar el programa:
?- my_first_element([m,j,k,e,w], X).
Y el resultado es:
X = m
lunes, 9 de mayo de 2011
PROLOG: Invierte una lista
18:30 |
Publicado por
a8a |
Editar entrada
Este programa invierte una lista:
my_reverse([], Zs, Zs).
my_reverse([X|Xs], Ys, Zs):-
my_reverse(Xs, [X|Ys], Zs).
Para ejecutar el programa:
?- my_reverse([1,2,3,4,5], [], Ls).
Y el resultado es:
Ls = [5,4,3,2,1]
Nota: Algunas versiones de Prolog, como WinProlog, tienen la función REVERSE predefinida.
PROLOG: Longitud de una lista (versión 2)
13:27 |
Publicado por
a8a |
Editar entrada
Este programa calcula la longitud de una lista:
my_length([], L, L).
my_length([_|Xs], N, L):-
N2 is N + 1,
my_length(Xs, N2, L).
Para ejecutar el programa:
?- my_length([a,b,c,d,e], 0, L).
Y el resultado es:
L = 5
Nota: Algunas versiones de Prolog, como WinProlog, tienen la función LENGTH predefinida.
PROLOG: Longitud de una lista
12:48 |
Publicado por
a8a |
Editar entrada
Este programa calcula la longitud de una lista:
my_length([], 0).
my_length([_|Xs], L):-
my_length(Xs, L2),
L is L2 + 1.
Para ejecutar el programa:
?- my_length([a,b,c,d,e], L).
Y el resultado es:
L = 5
Nota: Algunas versiones de Prolog, como WinProlog, tienen la función LENGTH predefinida.
domingo, 8 de mayo de 2011
PROLOG: Busca elemento en una lista
21:23 |
Publicado por
a8a |
Editar entrada
Este programa permite buscar si un elemento esta dentro de una lista de elementos:
my_member(X, [X|_]).
my_member(X, [_|Ys]):-
my_member(X, Ys).
Para ejecutar el programa:
?- my_member(3, [1,2,5,2,1,3,4]).
Y el resultado es:
yes
Para ejecutar el programa:
?- my_member(8, [1,2,5,2,1,3,4]).
Y el resultado es:
no
Nota: Algunas versiones de Prolog, como WinProlog, tienen la función MEMBER predefinida.
PROLOG: Concatena listas
20:51 |
Publicado por
a8a |
Editar entrada
Este programa concatena o une dos listas:
my_append([], Cs, Cs).
my_append([A|As],Bs,[A|Cs]):-
my_append(As, Bs, Cs).
Para ejecutar el programa:
?- my_append([a,b,c], [w,x,y,z], Ls).
Y el resultado es:
Ls = [a,b,c,w,x,y,z]
Nota: Algunas versiones de Prolog, como WinProlog, tienen la función APPEND predefinida.
lunes, 18 de abril de 2011
PROLOG: N primeros numeros de la serie Fibonacci
1:47 |
Publicado por
a8a |
Editar entrada
Este programa calcula los N primeros términos de la serie de Fibonacci:
my_fibonacci(_, _, 0). my_fibonacci(A, B, N):- write(A), write(' '), N1 is N-1, C is A + B, my_fibonacci(B, C, N1).
Para ejecutar el programa:
?- my_fibonacci(0, 1, 10).
Y el resultado es:
0 1 1 2 3 5 8 13 21 34 yes
viernes, 15 de abril de 2011
PROLOG: Factorial (versión 2)
1:14 |
Publicado por
a8a |
Editar entrada
Este programa calcula el factorial de un número:
my_factorial(1,F,F):- !.
my_factorial(N, T, F):-
N2 is N-1,T2 is T * N,
my_factorial(N2, T2, F).
Para ejecutar el programa:
?- my_factorial(5, 1, F).
Y el resultado es:
F = 120
PROLOG: Factorial
1:00 |
Publicado por
a8a |
Editar entrada
Este programa calcula el factorial de un número:
my_factorial(1,1):- !.
my_factorial(N, F):-
N2 is N-1,
my_factorial(N2, F2),
F is F2*N.
Para ejecutar el programa:
?- my_factorial(5, X).
Y el resultado es:
F = 120
miércoles, 13 de abril de 2011
PROLOG: Suma de los numeros de 1 a N (versión 2)
1:38 |
Publicado por
a8a |
Editar entrada
Este programa calcula la suma de los primeros N números enteros:
my_sum(I, I, R, R):- !. my_sum(I, N, R, F):- I1 is I+1, R1 is R+I1, my_sum(I1, N, R1, F).
Para ejecutar el programa:
?- my_sum(0, 6, 0, S).
Y el resultado es:
S = 21
martes, 12 de abril de 2011
PROLOG: Suma de los numeros de 1 a N
1:28 |
Publicado por
a8a |
Editar entrada
Este programa calcula la suma de los primeros N números enteros:
my_sum(0, 0):- !. my_sum(N, R):- N1 is N-1, my_sum(N1, R1), R is R1+N.
Para ejecutar el programa:
?- my_sum(6, S).
Y el resultado es:
S = 21
domingo, 10 de abril de 2011
PROLOG: Devuelve el mayor de dos numeros (versión 2)
11:00 |
Publicado por
a8a |
Editar entrada
Este programa devuelve el mayor de dos números dados:
my_max(X, Y, X):- X >= Y, !. my_max(_, Y, Y).
Para ejecutar el programa:
?- my_max(5, 3, Max).
Y el resultado es:
Max = 5
Para ejecutar el programa:
?- my_max(4, 8, Max).
Y el resultado es:
Max = 8
Para ejecutar el programa:
?- my_max(4, 8, 3).
Y el resultado es:
no
PROLOG: Devuelve el mayor de dos numeros
10:00 |
Publicado por
a8a |
Editar entrada
Este programa devuelve el mayor de dos números dados:
my_max(X, Y, X):- X >= Y. my_max(X, Y, Y):- X < Y.
Para ejecutar el programa:
?- my_max(5, 3, Max).
Y el resultado es:
Max = 5
Para ejecutar el programa:
?- my_max(4, 8, Max).
Y el resultado es:
Max = 8
Para ejecutar el programa:
?- my_max(4, 8, 3).
Y el resultado es:
no
sábado, 9 de abril de 2011
PROLOG: Division de numero por otro
19:36 |
Publicado por
a8a |
Editar entrada
Este programa divide un numero en otro:
my_div_num(_, 0, _):- write('Error al dividir por cero'), !. my_div_num(A, B, C):- C is A / B.
Para ejecutar el programa:
?- my_div_num(12, 4, C).
Y el resultado es:
C = 3
Para ejecutar el programa:
?- my_sum_num(12, 0, C).
Y el resultado es:
Error al dividir por cero
Para ejecutar el programa:
?- my_sum_num(12, 4, 3).
Y el resultado es:
yes
Para ejecutar el programa:
?- my_sum_num(12, 4, 5).
Y el resultado es:
no
miércoles, 6 de abril de 2011
PROLOG: Suma de dos numeros
19:27 |
Publicado por
a8a |
Editar entrada
Este programa suma dos números:
my_sum_num(A, B, C):- C is A + B.
Para ejecutar el programa:
?- my_sum_num(3, 4, C).
Y el resultado es:
C = 7
Para ejecutar el programa:
?- my_sum_num(3, 4, 5).
Y el resultado es:
no
Para ejecutar el programa:
?- my_sum_num(3, 4, 7).
Y el resultado es:
yes
martes, 5 de abril de 2011
PROLOG: Convenciones
18:24 |
Publicado por
a8a |
Editar entrada
Para los programas en Prolog vamos a usar las siguiente convenciones:
VARIABLE: Representa un valor simple.
Ejemplo: X = 5
VARIABLEs: Variable con letra "s" al final representa una lista de elementos.
Ejemplo: Ls = [1,2,3,4]
Suscribirse a:
Entradas (Atom)