{"id":446,"date":"2019-01-22T13:45:10","date_gmt":"2019-01-22T19:45:10","guid":{"rendered":"http:\/\/virtual.cuautitlan.unam.mx\/intar\/?page_id=446"},"modified":"2021-07-11T16:46:28","modified_gmt":"2021-07-11T21:46:28","slug":"ejercicios-con-listas","status":"publish","type":"page","link":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/?page_id=446","title":{"rendered":"Ejercicios con listas"},"content":{"rendered":"<h1><strong>Ejercicios en Listas<\/strong><\/h1>\n<p>En esta secci\u00f3n se presentan algunos ejercicios en los cuales se utilizan las listas como punto principal de los programas.<\/p>\n<p>El siguiente ejemplo, determina la longitud de una lista dada en el primer argumento, devolviendo el tama\u00f1o en el segundo argumento.<\/p>\n<pre class=\"lang:default decode:true \">tama\u00f1o([],0).\r\ntama\u00f1o([X|Y], N):-tama\u00f1o(Y, N1), N is N1+1.<\/pre>\n<p>Si nosotros consultamos<\/p>\n<pre class=\"lang:default decode:true \">?- tama\u00f1o([1,2,3,4], N).<\/pre>\n<p>La respuesta de PROLOG ser\u00e1: <em>N = 4<\/em>.<\/p>\n<p>Tambi\u00e9n podemos verificar si un elemento cualquiera, pertenece a una lista dada, esto por medio del ejemplo. En este ejemplo, se verificara si el elemento <em>X<\/em>, pertenece a la lista dada.<\/p>\n<pre class=\"lang:default decode:true \">pertenece(X,[X|L]).\r\npertenece(X,[Y|L]) :- pertenece(X,L).<\/pre>\n<p>Si se realiza la consulta<\/p>\n<pre class=\"lang:default decode:true \">pertenece(a, [1,a,2,4,f]).<\/pre>\n<p>El interprete dar\u00e1 como resultado <em>True<\/em>.<\/p>\n<p>El siguiente ejemplo, realiza la operaci\u00f3n <em>append<\/em>, previamente definida, en este caso llamaremos a la funci\u00f3n <em>concatena<\/em>. Para este ejemplo, vamos a tener una lista en el primer argumento de la funci\u00f3n, esta lista ser\u00e1 concatenada con la lista almacenada en el segundo argumento de la funci\u00f3n, y ser\u00e1 devuelta en el tercer argumento de la funci\u00f3n.<\/p>\n<pre class=\"lang:default decode:true \">concatena([ ],B,B).\r\nconcatena ([X|D],B,[X|E]) :- concatena (D,B,E).<\/pre>\n<p>Si nosotros realizamos la consulta,<\/p>\n<pre class=\"lang:default decode:true \">?- concatena([1,2,3], [a,b,c], A).<\/pre>\n<p>PROLOG, dar\u00e1 como resultado <em>A = [1, 2, 3, a, b, c]<\/em>.<\/p>\n<p>Para el siguiente caso, vamos a auxiliarnos de la funci\u00f3n <em>append<\/em> para rotar una lista. En este caso, se va a rota una cantidad <em>N<\/em> de veces la lista<em> [X|L],<\/em> y se va a devolver como\u00a0 una lista <em>L<\/em>.<\/p>\n<pre class=\"lang:default decode:true \">rota(X,X,0).\r\nrota([X|Y], L, N):-N1 is N-1, append(Y,[X],Y1), rota(Y1, L, N1).<\/pre>\n<p>Si nosotros realizamos la consulta<\/p>\n<pre class=\"lang:default decode:true \">?- rotar([1,2,3,4], N, 2).<\/pre>\n<p>PROLOG nos dar\u00e1 como respuesta: <em>N = [3, 4, 1, 2].<\/em><\/p>\n<p>El siguiente ejemplo nos muestra como invertir una lista dada. Podemos utilizar la funci\u00f3n reservada de PROLOG, <em>append,<\/em> o podemos utilizar el ejemplo propuesto concatena.<\/p>\n<pre class=\"lang:default decode:true \">invierte_lista([X],[X]).\r\ninvierte_lista ([X|Y],Z):- invierte_lista (Y,W), concatena(W,[X],Z).<\/pre>\n<p>Por lo que si le damos la siguiente consulta<\/p>\n<pre class=\"lang:default decode:true \">?- invierte_lista([1,2,3,4],A).<\/pre>\n<p>Obtendremos que <em>A = [4, 3, 2, 1]<\/em>.<\/p>\n<p>Ahora, realizando una suma con los elementos de la lista, tenemos<\/p>\n<pre class=\"lang:default decode:true \">suma([X],X):-!.\r\nsuma([X|Y],R):-suma(Y,Z), R is Z + X.<\/pre>\n<p>al realizar la consulta, tenemos:<\/p>\n<pre class=\"lang:default decode:true \">?- suma([1, 2, 3, 4], R).\r\nR = 10.<\/pre>\n<p>Un ejemplo que parece muy simple, es el de eliminar el primer elemento de una lista, este ejemplo lo podemos ver en la forma<\/p>\n<pre class=\"lang:default decode:true \">elimina(X,[X|T],T).<\/pre>\n<p>Si realizamos la consulta, obtendremos.<\/p>\n<pre class=\"lang:default decode:true \">?- elimina(primero,[primero,segundo,tercero,cuarto], X).\r\n\r\nX = [segundo, tercero, cuarto].<\/pre>\n<p>En el siguiente ejercicio, vemos como definir si un valor definido es un valor mayor o igual al elemento m\u00e1s grande de la lista.<\/p>\n<pre class=\"lang:default decode:true \">mayor([ ],_).\r\nmayor([X|L],N) :- X =&lt; N, mayor(L,N).<\/pre>\n<p>Lo que nos da,<\/p>\n<pre class=\"lang:default decode:true \">?- mayor([0,1,2,4],5).\r\ntrue.<\/pre>\n<pre class=\"lang:default decode:true \">?- mayor([0,1,2,4],3).\r\nfalse.<\/pre>\n<p><strong>Ejercicio 1.<\/strong> Realizar un programa en PROLOG que elimine un elemento que se encuentre en la posici\u00f3n N de la lista.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ejercicios en Listas En esta secci\u00f3n se presentan algunos ejercicios en los cuales se utilizan las listas como punto principal de los programas. El siguiente ejemplo, determina la longitud de una lista dada en el primer argumento, devolviendo el tama\u00f1o en el segundo argumento. tama\u00f1o([],0). tama\u00f1o([X|Y], N):-tama\u00f1o(Y, N1), N is N1+1. Si nosotros consultamos ?- &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/virtual.cuautitlan.unam.mx\/intar\/?page_id=446\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> &#8220;Ejercicios con listas&#8221;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-446","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=\/wp\/v2\/pages\/446"}],"collection":[{"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=446"}],"version-history":[{"count":4,"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=\/wp\/v2\/pages\/446\/revisions"}],"predecessor-version":[{"id":965,"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=\/wp\/v2\/pages\/446\/revisions\/965"}],"wp:attachment":[{"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=446"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}