tag:blogger.com,1999:blog-25231943957303927862024-03-13T02:30:29.266-05:00xPasos - TODO POR PASOSProblemas y pasos para solucionarlos.a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.comBlogger66125tag:blogger.com,1999:blog-2523194395730392786.post-18021558960716488422013-06-25T11:25:00.003-05:002013-06-25T11:42:33.103-05:00PROLOG: Busca numero mayor en lista (versión 2)<br />
<b>Este programa busca el elemento mayor de una lista:</b><br />
<br />
<br />
<pre>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).
</pre>
<br />
<br />
<b>Para ejecutar el programa:</b><br />
<br />
<br />
<pre>?- my_list_max(X, [5,3,9,2,8,7]).</pre>
<br />
<br />
<b>Y el resultado es:</b><br />
<br />
<br />
<pre>X = 9
</pre>
<br />
<br />
<b>Nota:</b> Este programa fue una contribución de uno de nuestros visitantes, quien propuso una solución recursiva al problema.<br />
<br />
<br />
<br />
<center>
<b>*** Programa probado en WinProlog versión 4.7 ***</b></center>
<center>
<b> </b></center>
a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com0tag:blogger.com,1999:blog-2523194395730392786.post-13846844138561585342013-06-25T11:11:00.000-05:002013-06-25T11:37:47.739-05:00PROLOG: Busca numero menor en lista (versión 2)<br />
<b>Este programa busca el elemento menor de una lista:</b><br />
<br />
<br />
<pre>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).
</pre>
<br />
<br />
<b>Para ejecutar el programa:</b><br />
<br />
<br />
<pre>?- my_list_min(X, [5,3,9,2,8,7]).</pre>
<br />
<br />
<b>Y el resultado es:</b><br />
<br />
<br />
<pre>X = 2
</pre>
<br />
<br />
<b>Nota:</b> Este programa fue una contribución de uno de nuestros visitantes, quien propuso una solución recursiva al problema.<br />
<br />
<br />
<br />
<center>
<b>*** Programa probado en WinProlog versión 4.7 ***</b></center>
<center>
<b> </b></center>
a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com0tag:blogger.com,1999:blog-2523194395730392786.post-87559899712596541132013-04-24T16:53:00.000-05:002013-04-24T16:53:44.723-05:00PROLOG: Borra ultimo elemento de una lista<br />
<b>Este programa borra el último elemento de una lista:</b><br />
<br />
<br />
<pre>my_remove_last_element([_], []).
my_remove_last_element([Y|Ys], [Y|Zs]):-
my_remove_last_element(Ys, Zs).</pre>
<br />
<br />
<b>Para ejecutar el programa:</b><br />
<br />
<br />
<pre>?- my_remove_last_element([a,b,c,b,e,b,f,g], Zs).</pre>
<br />
<br />
<b>Y el resultado es:</b><br />
<br />
<br />
<pre>Zs = [a,b,c,b,e,b,f]
</pre>
<pre></pre>
<pre></pre>
<br />
<br />
<center>
<b>*** Programa probado en WinProlog versión 4.7 ***</b></center>
<center>
<b> </b></center>
a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com2tag:blogger.com,1999:blog-2523194395730392786.post-87997405978228420892012-11-01T01:54:00.001-05:002012-11-01T01:58:14.990-05:00PROLOG: Permutacion de una lista<br />
<b>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):</b><br />
<br />
<br />
<pre>my_permutation(Bs, [A|As]):-
my_append(Xs, [A|Ys], Bs),
my_append(Xs, Ys, Zs),
my_permutation(Zs, As).
my_permutation([], []).</pre>
<br />
<br />
<b>Para ejecutar el programa:</b><br />
<br />
<br />
<pre>?- my_permutation([a,b,c],Ls).</pre>
<br />
<br />
<b>Y el resultado es:</b><br />
<br />
<br />
<pre>Ls = [a,b,c]
Ls = [a,c,b]
Ls = [b,a,c]
Ls = [b,c,a]
Ls = [c,a,b]
Ls = [c,b,a]</pre>
<pre>
</pre>
<pre>
</pre>
<b>Nota:</b> Este programa usa algunas reglas (programas) definidas anteriormente.<br />
<br />
<br />
<center>
<b>*** Programa probado en WinProlog versión 4.7 ***</b></center>
<center>
<b> </b></center>
a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com5tag:blogger.com,1999:blog-2523194395730392786.post-40548573033323901052012-09-10T14:22:00.004-05:002012-09-10T20:57:04.435-05:00PROLOG: Convierte lista anidada en lista no anidada <br><strong>Este programa convierte una lista que contiene elementos que son listas, en una lista de elementos simples:</strong><br /><br /><pre><br />my_flatten(X, [X]):- <br /> \+ list(X).<br /><br />my_flatten([], []).<br /><br />my_flatten([As|Bs], Cs):-<br /> my_flatten(As, ALs),<br /> my_flatten(Bs, BLs),<br /> my_append(ALs, BLs, Cs).<br /></pre><br /><br /><strong>Para ejecutar el programa:</strong><br /><br /><pre><br />?- my_flatten([1,7,3,4,[5,[[[6],[8]],9,7]],[[8],9],[[[0]]]], Ls).<br /></pre><br /><br /><strong>Y el resultado es:</strong><br /><br /><pre><br />Ls = [1,7,3,4,5,6,8,9,7,8,9,0]<br /></pre><br /><br /><strong>Nota:</strong> Este programa usa algunas reglas (programas) definidas anteriormente.<br /><br /><br><strong><center>*** Programa probado en WinProlog versión 4.7 ***</center></strong><br>a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com0tag:blogger.com,1999:blog-2523194395730392786.post-5861710107637003682012-05-11T10:26:00.004-05:002013-06-25T11:38:09.219-05:00PROLOG: Ordena lista de numeros, metodo de la burbuja<br />
<b>Este programa ordena una lista numérica en forma ascendente. Si quieres ordenar en forma descendente cambia la linea "B < A" por "A < B":</b><br />
<br />
<pre>
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).</pre>
<br />
<br />
<b>Para ejecutar el programa:</b><br />
<br />
<pre>
?- my_bubble_sort([4,7,1,3,2,9,2,6], Ls).</pre>
<br />
<br />
<b>Y el resultado es:</b><br />
<br />
<pre>
Ls = [1,2,2,3,4,6,7,9]</pre>
<br />
<br />
<b>Nota:</b> Este programa usa algunas reglas (programas) definidas anteriormente.<br />
<br />
<br />
<b></b><br />
<center>
<b>*** Programa probado en WinProlog versión 4.7 ***</b></center>
a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com9tag:blogger.com,1999:blog-2523194395730392786.post-48387985107099908222012-03-08T23:41:00.010-05:002013-06-25T11:43:47.002-05:00PROLOG: Interseccion entre dos listas<br />
<b>Este programa encuentra la intersección de dos listas (intersección de conjuntos):</b><br />
<br />
<pre>
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).</pre>
<br />
<br />
<b>Para ejecutar el programa:</b><br />
<br />
<pre>
?- my_intersect([1,2,3,4], [2,3,6,7,1], Ls).</pre>
<br />
<br />
<b>Y el resultado es:</b><br />
<br />
<pre>
Ls = [1,2,3]</pre>
<br />
<br />
<b>Nota:</b> Este programa usa algunas reglas (programas) definidas anteriormente.<br />
<br />
<br />
<b></b><br />
<center>
<b>*** Programa probado en WinProlog versión 4.7 ***</b></center>
a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com0tag:blogger.com,1999:blog-2523194395730392786.post-3899797486555867972012-03-07T19:53:00.006-05:002013-06-25T11:38:24.043-05:00PROLOG: Union entre dos listas<br />
<b>Este programa encuentra la unión de dos listas (unión de conjuntos):</b><br />
<br />
<pre>
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).</pre>
<br />
<br />
<b>Para ejecutar el programa:</b><br />
<br />
<pre>
?- my_union([a,b,c], [b,a,d,e,h], Ls).</pre>
<br />
<br />
<b>Y el resultado es:</b><br />
<br />
<pre>
Ls = [c,b,a,d,e,h]</pre>
<br />
<br />
<b>Nota:</b> Este programa usa algunas reglas (programas) definidas anteriormente.<br />
<br />
<br />
<b></b><br />
<center>
<b>*** Programa probado en WinProlog versión 4.7 ***</b></center>
a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com0tag:blogger.com,1999:blog-2523194395730392786.post-46148586681228381402011-11-08T18:03:00.010-05:002012-11-01T01:42:16.259-05:00PROLOG: Mira si una lista es sublista de otra lista<br />
<b>Este programa mira si una lista es sublista de otra lista:</b><br />
<br />
<pre>
my_sub_list(Xs, Ys):-
my_append(_, Bs, Ys),
my_append(Xs, _, Bs).</pre>
<br />
<br />
<b>Para ejecutar el programa:</b><br />
<br />
<pre>
?- my_sub_list([b,c], [a,b,c,d,e,f,g]).</pre>
<br />
<br />
<b>Y el resultado es:</b><br />
<br />
<pre>
yes</pre>
<br />
<br />
<b>Para ejecutar el programa:</b><br />
<br />
<pre>
?- my_sub_list([b,c,f], [a,b,c,d,e,f,g]).</pre>
<br />
<br />
<b>Y el resultado es:</b><br />
<br />
<pre>
no</pre>
<br />
<br />
<b>Para ejecutar el programa:</b><br />
<br />
<pre>
?- my_sub_list(Ls, [c,d,e]).</pre>
<br />
<br />
<b>Y el resultado es:</b><br />
<br />
<pre>
Ls = [] ;
Ls = [c] ;
Ls = [c,d] ;
Ls = [c,d,e] ;
Ls = [] ;
Ls = [d] ;
Ls = [d,e] ;
Ls = [] ;
Ls = [e] ;
Ls = [] ;</pre>
<br />
<br />
<b>Nota:</b> Este programa usa algunas reglas (programas) definidas anteriormente.<br />
<br />
<br />
<b></b><br />
<center>
<b>*** Programa probado en WinProlog versión 4.7 ***</b></center>
a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com5tag:blogger.com,1999:blog-2523194395730392786.post-20774514787578721712011-11-03T12:04:00.007-05:002013-06-25T11:37:16.934-05:00PROLOG: Busca numero mayor en lista<br />
<b>Este programa busca en una lista de números el mayor:</b><br />
<br />
<pre>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).</pre>
<br />
<br />
<b>Para ejecutar el programa:</b><br />
<br />
<pre>?- my_list_max(M, [5,3,9,2,8,7]).</pre>
<br />
<br />
<b>Y el resultado es:</b><br />
<br />
<pre>M = 9</pre>
<br />
<br />
<br />
<b></b><br />
<center>
<b>*** Programa probado en WinProlog versión 4.7 ***</b></center>
a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com0tag:blogger.com,1999:blog-2523194395730392786.post-13335194512856936702011-11-03T12:00:00.008-05:002013-06-25T11:38:39.287-05:00PROLOG: Busca numero menor en lista<br />
<b>Este programa busca en una lista de números el menor:</b><br />
<br />
<pre>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).</pre>
<br />
<br />
<b>Para ejecutar el programa:</b><br />
<br />
<pre>?- my_list_min(M, [5,3,9,2,8,7]).</pre>
<br />
<br />
<b>Y el resultado es:</b><br />
<br />
<pre>M = 2</pre>
<br />
<br />
<br />
<b></b><br />
<center>
<b>*** Programa probado en WinProlog versión 4.7 ***</b></center>
a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com2tag:blogger.com,1999:blog-2523194395730392786.post-79847738651479183442011-09-18T12:41:00.008-05:002012-05-11T10:48:40.033-05:00PROLOG: Mira si una lista es Palindrome<br><strong>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):</strong><br /><br /><pre><br />my_palindrome(Xs):-<br /> my_reverse(Xs, Xs).<br /></pre><br /><br /><strong>Para ejecutar el programa:</strong><br /><br /><pre><br />?- my_palindrome([a,b,c,d,e,d,c,b,a]).<br /></pre><br /><br /><strong>Y el resultado es:</strong><br /><br /><pre><br />yes<br /></pre><br /><br /><strong>Para ejecutar el programa:</strong><br /><br /><pre><br />?- my_palindrome([a,b,c,d,e]).<br /></pre><br /><br /><strong>Y el resultado es:</strong><br /><br /><pre><br />no<br /></pre><br /><br /><strong>Nota:</strong> Este programa usa algunas reglas (programas) definidas anteriormente.<br /><br /><br><strong><center>*** Programa probado en WinProlog versión 4.7 ***</center></strong><br>a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com4tag:blogger.com,1999:blog-2523194395730392786.post-41401228762581077322011-07-20T14:44:00.005-05:002012-05-11T10:48:54.778-05:00PROLOG: Invierte una lista (versión 3)<br><strong>Este programa invierte una lista:</strong><br /><br /><pre><br />my_reverse([X|Xs], Ys, Zs):-<br /> my_reverse(Xs, [X|Ys], Zs).<br /><br />my_reverse([], Ys, Ys).<br /></pre><br /><br /><strong>Para ejecutar el programa:</strong><br /><br /><pre><br />?- my_reverse([1,2,3,4,5], [], Ls).<br /></pre><br /><br /><strong>Y el resultado es:</strong><br /><br /><pre><br />Ls = [5,4,3,2,1]<br /></pre><br /><br /><br><strong><center>*** Programa probado en WinProlog versión 4.7 ***</center></strong><br>a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com0tag:blogger.com,1999:blog-2523194395730392786.post-60065208514205067252011-07-19T13:32:00.006-05:002013-03-10T23:25:23.234-05:00PROLOG: Invierte una lista (versión 2)<br />
<b>Este programa invierte una lista:</b><br />
<br />
<pre>my_reverse([], []).
my_reverse([X|Xs], Ys):-
my_reverse(Xs, Zs),
my_append(Zs, [X], Ys).</pre>
<br />
<br />
<b>Para ejecutar el programa:</b><br />
<br />
<pre>?- my_reverse([1,2,3,4,5], Ls).</pre>
<br />
<br />
<b>Y el resultado es:</b><br />
<br />
<pre>Ls = [5,4,3,2,1]</pre>
<br />
<br />
<b>Nota:</b> Este programa usa algunas reglas (programas) definidas anteriormente.<br />
<br />
<br />
<b></b><br />
<center>
<b>*** Programa probado en WinProlog versión 4.7 ***</b></center>
a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com0tag:blogger.com,1999:blog-2523194395730392786.post-16772840335894198112011-06-29T16:19:00.006-05:002012-05-11T10:49:55.505-05:00PROLOG: Elementos consecutivos en una lista<br><strong>Este programa mira si dos elementos se encuentran consecutivos en una lista:</strong><br /><br /><pre><br />my_consecutive(X,Y,[X,Y|_]).<br /><br />my_consecutive(X,Y,[_|Xs]):-<br /> my_consecutive(X,Y,Xs).<br /></pre><br /><br /><strong>Para ejecutar el programa:</strong><br /><br /><pre><br />?- my_consecutive(e,g,[d,f,e,g,h,e,r,u]).<br /></pre><br /><br /><strong>Y el resultado es:</strong><br /><br /><pre><br />yes<br /></pre><br /><br /><strong>Para ejecutar el programa:</strong><br /><br /><pre><br />?- my_consecutive(g, e, [d,f,e,g,h,e,r,u]).<br /></pre><br /><br /><strong>Y el resultado es:</strong><br /><br /><pre><br />no<br /></pre><br /><br /><br><strong><center>*** Programa probado en WinProlog versión 4.7 ***</center></strong><br>a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com0tag:blogger.com,1999:blog-2523194395730392786.post-21392037329491081812011-06-19T14:29:00.006-05:002013-06-25T11:45:29.582-05:00PROLOG: Borra elemento N de una lista (versión 2)<br />
<b>Este programa elimina el elemento en la posición N en una lista:</b><br />
<br />
<pre>
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).</pre>
<br />
<br />
<b>Para ejecutar el programa:</b><br />
<br />
<pre>
?- my_remove_element_n(5, 1, [a,b,c,d,e,f,g,h], Zs).</pre>
<br />
<br />
<b>Y el resultado es:</b><br />
<br />
<pre>
Zs = [a,b,c,d,f,g,h]</pre>
<br />
<br />
<br />
<b></b><br />
<center>
<b>*** Programa probado en WinProlog versión 4.7 ***</b></center>
a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com0tag:blogger.com,1999:blog-2523194395730392786.post-38506687982916258102011-06-19T14:23:00.005-05:002012-05-11T10:50:34.395-05:00PROLOG: Borra elemento N de una lista<br><strong>Este programa elimina el elemento en la posición N en una lista:</strong><br /><br /><pre><br />my_remove_element_n(1, [_|Xs], Xs).<br /><br />my_remove_element_n(I, [X|Xs], [X|Ys]):-<br /> I2 is I - 1,<br /> my_remove_element_n(I2, Xs, Ys).<br /></pre><br /><br /><strong>Para ejecutar el programa:</strong><br /><br /><pre><br />?- my_remove_element_n(5, [a,b,c,d,e,f,g,h], Zs).<br /></pre><br /><br /><strong>Y el resultado es:</strong><br /><br /><pre><br />Zs = [a,b,c,d,f,g,h]<br /></pre><br /><br /><br><strong><center>*** Programa probado en WinProlog versión 4.7 ***</center></strong><br>a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com0tag:blogger.com,1999:blog-2523194395730392786.post-68785385011848229022011-06-10T00:45:00.008-05:002012-05-11T10:50:49.762-05:00PROLOG: Compresión de una lista (versión 2)<br><strong>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:</strong><br /><br /><pre><br />my_compress([], []):- !.<br /><br />my_compress([X|Xs], Ys):-<br /> my_member(X, Xs),<br /> !,<br /> my_compress(Xs, Ys).<br /><br />my_compress([X|Xs], [X|Ys]):-<br /> my_compress(Xs, Ys).<br /></pre><br /><br /><strong>Para ejecutar el programa:</strong><br /><br /><pre><br />?- my_compress([a,a,e,e,e,c,c,b,b,b,b,d,f], Ls).<br /></pre><br /><br /><strong>Y el resultado es:</strong><br /><br /><pre><br />Ls = [a,e,c,b,d,f]<br /></pre><br /><br /><strong>Para ejecutar el programa:</strong><br /><br /><pre><br />?- my_compress([e,e,e,a,a,e,e,e,c,c,b,b,b,b,d,f], Ls).<br /></pre><br /><br /><strong>Y el resultado es:</strong><br /><br /><pre><br />Ls = [a,e,c,b,d,f]<br /></pre><br /><br /><strong>Nota:</strong> Este programa usa algunas reglas (programas) definidas anteriormente.<br /><br /><br><strong><center>*** Programa probado en WinProlog versión 4.7 ***</center></strong><br>a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com0tag:blogger.com,1999:blog-2523194395730392786.post-28531757521192221382011-06-08T11:05:00.007-05:002013-06-25T11:39:15.699-05:00PROLOG: Compresion de una lista<br />
<b>Este programa permite eliminar los elementos repetidos en una lista. Los elementos a eliminar deben estar contiguos:</b><br />
<br />
<pre>
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).</pre>
<br />
<br />
<b>Para ejecutar el programa:</b><br />
<br />
<pre>
?- my_compress([a,a,e,e,e,c,c,b,b,b,b,d,f], Ls).</pre>
<br />
<br />
<b>Y el resultado es:</b><br />
<br />
<pre>
Ls = [a,e,c,b,d,f]</pre>
<br />
<br />
<b>Para ejecutar el programa:</b><br />
<br />
<pre>
?- my_compress([e,e,e,a,a,e,e,e,c,c,b,b,b,b,d,f], Ls).</pre>
<br />
<br />
<b>Y el resultado es:</b><br />
<br />
<pre>
Ls = [e,a,e,c,b,d,f]</pre>
<br />
<br />
<br />
<b></b><br />
<center>
<b>*** Programa probado en WinProlog versión 4.7 ***</b></center>
a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com2tag:blogger.com,1999:blog-2523194395730392786.post-33088403110129266552011-05-31T10:42:00.009-05:002013-06-25T11:38:58.854-05:00PROLOG: Media aritmetica de una lista<br />
<b>Este programa calcula la media aritmética (promedio) de los elementos de una lista:</b><br />
<br />
<pre>
my_average(Xs, A):-
my_length(Xs, L),
my_sum_elements(Xs, S),
A is S / L.</pre>
<br />
<br />
<b>Para ejecutar el programa:</b><br />
<br />
<pre>
?- my_average([1,2,3,4,5,6], A).</pre>
<br />
<br />
<b>Y el resultado es:</b><br />
<br />
<pre>
A = 3.5</pre>
<br />
<br />
<b>Nota:</b> Este programa usa algunas reglas (programas) definidas anteriormente.<br />
<br />
<br />
<b></b><br />
<center>
<b>*** Programa probado en WinProlog versión 4.7 ***</b></center>
a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com2tag:blogger.com,1999:blog-2523194395730392786.post-42338599420401085902011-05-24T11:30:00.004-05:002012-05-11T10:52:12.531-05:00PROLOG: Multiplica elementos de una lista (versión 2)<br><strong>Este programa multiplica los elementos de una lista:</strong><br /><br /><pre><br />my_mul_elements([], S, S).<br /><br />my_mul_elements([X|Xs], T, S):-<br /> T2 is T * X,<br /> my_mul_elements(Xs, T2, S).<br /></pre><br /><br /><strong>Para ejecutar el programa:</strong><br /><br /><pre><br />?- my_mul_elements([1,2,3,4,5], 1, S).<br /></pre><br /><br /><strong>Y el resultado es:</strong><br /><br /><pre><br />S = 120<br /></pre><br /><br /><br><strong><center>*** Programa probado en WinProlog versión 4.7 ***</center></strong><br>a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com3tag:blogger.com,1999:blog-2523194395730392786.post-57802233596404065502011-05-24T11:27:00.003-05:002012-05-11T10:54:56.990-05:00PROLOG: Multiplica elementos de una lista<br><strong>Este programa multiplica los elementos de una lista:</strong><br /><br /><pre><br />my_mul_elements([], 1).<br /><br />my_mul_elements([X|Xs], S):-<br /> my_mul_elements(Xs, S2),<br /> S is S2 * X.<br /></pre><br /><br /><strong>Para ejecutar el programa:</strong><br /><br /><pre><br />?- my_mul_elements([1,2,3,4,5], S).<br /></pre><br /><br /><strong>Y el resultado es:</strong><br /><br /><pre><br />S = 120<br /></pre><br /><br /><br><strong><center>*** Programa probado en WinProlog versión 4.7 ***</center></strong><br>a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com0tag:blogger.com,1999:blog-2523194395730392786.post-63185947387095986062011-05-22T16:18:00.004-05:002012-05-11T10:57:17.680-05:00PROLOG: Suma elementos de una lista (versión 2)<br><strong>Este programa suma los elementos de una lista:</strong><br /><br /><pre><br />my_sum_elements([], S, S).<br /><br />my_sum_elements([X|Xs], T, S):-<br /> T2 is T + X,<br /> my_sum_elements(Xs, T2, S).<br /></pre><br /><br /><strong>Para ejecutar el programa:</strong><br /><br /><pre><br />?- my_sum_elements([1,2,3,4,5], 0, S).<br /></pre><br /><br /><strong>Y el resultado es:</strong><br /><br /><pre><br />S = 15<br /></pre><br /><br /><br><strong><center>*** Programa probado en WinProlog versión 4.7 ***</center></strong><br>a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com0tag:blogger.com,1999:blog-2523194395730392786.post-17842631818893989892011-05-18T14:02:00.004-05:002012-05-11T10:54:19.747-05:00PROLOG: Suma elementos de una lista<br><strong>Este programa suma los elementos de una lista:</strong><br /><br /><pre><br />my_sum_elements([], 0).<br /><br />my_sum_elements([X|Xs], S):-<br /> my_sum_elements(Xs, S2),<br /> S is S2 + X.<br /></pre><br /><br /><strong>Para ejecutar el programa:</strong><br /><br /><pre><br />?- my_sum_elements([1,2,3,4,5], S).<br /></pre><br /><br /><strong>Y el resultado es:</strong><br /><br /><pre><br />S = 15<br /></pre><br /><br /><br><strong><center>*** Programa probado en WinProlog versión 4.7 ***</center></strong><br>a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com2tag:blogger.com,1999:blog-2523194395730392786.post-68579390872352892972011-05-16T14:39:00.019-05:002012-05-11T10:54:03.292-05:00PROLOG: Borra elemento de una lista<br><strong>Este programa elimina todas las ocurrencias de un elemento en una lista:</strong><br /><br /><pre><br />my_remove_element(_, [], []).<br /><br />my_remove_element(Y, [Y|Xs], Zs):-<br /> my_remove_element(Y, Xs, Zs), !.<br /><br />my_remove_element(X, [Y|Xs], [Y|Zs]):-<br /> my_remove_element(X, Xs, Zs).<br /></pre><br /><br /><strong>Para ejecutar el programa:</strong><br /><br /><pre><br />?- my_remove_element(b, [a,b,c,b,e,b,f,g], Zs).<br /></pre><br /><br /><strong>Y el resultado es:</strong><br /><br /><pre><br />Zs = [a,c,e,f,g]<br /></pre><br /><br /><br><strong><center>*** Programa probado en WinProlog versión 4.7 ***</center></strong><br>a8ahttp://www.blogger.com/profile/09906760734624695990noreply@blogger.com3