{"id":443,"date":"2018-12-27T21:23:30","date_gmt":"2018-12-28T03:23:30","guid":{"rendered":"http:\/\/virtual.cuautitlan.unam.mx\/intar\/?page_id=443"},"modified":"2021-07-11T16:41:38","modified_gmt":"2021-07-11T21:41:38","slug":"otros-comandos-para-utilizar-listas","status":"publish","type":"page","link":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/?page_id=443","title":{"rendered":"Otros comandos para utilizar listas"},"content":{"rendered":"<h1><strong>Otros comandos con listas<\/strong><\/h1>\n<p>Ademas de los comandos b\u00e1sicos para el uso de listas, existe otros comandos que tambi\u00e9n pueden ser de utilidad al desarrollar programas basados en estas estructuras de datos, en esta secci\u00f3n vamos a presentar algunos de ellos.<\/p>\n<h2 style=\"text-align: center;\"><strong>Max_member<\/strong><\/h2>\n<p>Este comando sirve para identificar si el primer argumento es el elemento m\u00e1s grande de la lista dada en el segundo argumento. Si damos la siguiente consulta, obviamente el resultado ser\u00e1 <em>false<\/em>, ya que 1 no es el valor m\u00e1s grande de la lista.<\/p>\n<pre class=\"lang:default decode:true \">?- max_member(1, [1, 2,3]).\r\nfalse.<\/pre>\n<p>Por el contrario, si damos la siguiente consulta, la respuesta ser\u00e1 <em>true<\/em>, ya que 3 si es el elemento m\u00e1s grande\u00a0 de las lista.<\/p>\n<pre class=\"lang:default decode:true \">?- max_member(3, [1, 2,3]).\r\ntrue.<\/pre>\n<p>Por otro lado, si nosotros colocamos una variable <em>M<\/em> como primer argumento, POLOG devolver\u00e1 el valor m\u00e1ximo de la lista, tal como se puede ver en el siguiente ejemplo.<\/p>\n<pre class=\"lang:default decode:true \">?- max_member(M, [1, 2,3]).\r\nM = 3.<\/pre>\n<h2 style=\"text-align: center;\"><strong>Min_member<\/strong><\/h2>\n<p>Pr\u00e1cticamente igual que el comando anterior, solo que reconoce los m\u00ednimos en lugar de los m\u00e1ximos, lo podemos ver por medio de los ejemplos:<\/p>\n<pre class=\"lang:default decode:true \">?- min_member(M, [1, 2,3]).\r\nM = 1.<\/pre>\n<pre class=\"lang:default decode:true \">?- min_member(1, [1, 2,3]).\r\ntrue.<\/pre>\n<pre class=\"lang:default decode:true \">?- min_member(3, [1, 2,3]).\r\nfalse.<\/pre>\n<h2 style=\"text-align: center;\"><strong>Sum_list<\/strong><\/h2>\n<p>Este comando, suma todos los elementos que se encuentran dentro de una lista y los devuelve en el segundo argumento, tal como podemos ver en el siguiente ejemplo:<\/p>\n<pre class=\"lang:default decode:true \">?- sum_list([4,5,6,7],S).\r\nS = 22.<\/pre>\n<h2 style=\"text-align: center;\"><strong>Intersection<\/strong><\/h2>\n<p>Este comando es verdadero si el tercer argumento, esta dado por la intersecci\u00f3n de los argumentos uno y dos, en esta forma, la siguiente consulta da como resultado <em>true<\/em>:<\/p>\n<pre class=\"lang:default decode:true \">?- intersection([1,2,3,4],[1,5,6],[1]).<\/pre>\n<p>Sin embargo, al modificar la consulta en la siguiente forma, da como resultado <em>false<\/em>:<\/p>\n<pre class=\"lang:default decode:true \">?- intersection([1,2,3,4],[1,5,6],[3]).<\/pre>\n<p>Pero m\u00e1s interesante es cuando el tercer argumento se sustituye por una variable ya que esa variable toma la intersecci\u00f3n de las listas, tal como se puede ver a continuaci\u00f3n:<\/p>\n<pre class=\"lang:default decode:true \">intersection([1,2,3,4],[1,5,6,2],X).\r\nX = [1, 2].<\/pre>\n<p><strong>Ejercicio 1.<\/strong> Determinar la intersecci\u00f3n de [1, 3, 4, 5, 6, 7, 3, 8 , 11, 38 ,28] y [4, 6 ,32, 89 ,5, 45, 38].<\/p>\n<h2 style=\"text-align: center;\"><strong>Union<\/strong><\/h2>\n<p>Funci\u00f3n que se comporta exactamente igual que la funci\u00f3n anterior, pero trabajando con la uni\u00f3n de las listas, en vez de trabajar con la intersecci\u00f3n. Esto se puede ver en los siguientes ejemplos:<\/p>\n<pre class=\"lang:default decode:true \">?- union([1,2,3,4],[1,5,6],[3]).\r\nfalse.<\/pre>\n<pre class=\"lang:default decode:true \">?- union([1,2,3,4],[1,5,6],[1,2,3,4,5,6]).\r\nfalse.<\/pre>\n<pre class=\"lang:default decode:true \">?- union([1,2,3,4],[1,5,6],X).\r\nX = [2, 3, 4, 1, 5, 6].<\/pre>\n<h2 style=\"text-align: center;\"><strong>Subset<\/strong><\/h2>\n<p>Este comando interpreta si el primer argumento se comporta como un sub conjunto del segundo argumento, si no es un subconjunto, PROLOG devuelve el resultado <em>false<\/em>, el comportamiento se puede ver en los siguientes ejemplos:<\/p>\n<pre class=\"lang:default decode:true \">?- subset([1,2], [1,2,3,4]).\r\ntrue.<\/pre>\n<pre class=\"lang:default decode:true \">?- subset(X, [1,2,3,4]).\r\nX = [ ].<\/pre>\n<pre class=\"lang:default decode:true \">?- subset([3,4], [1,2,3,4]).\r\ntrue.<\/pre>\n<h2 style=\"text-align: center;\"><strong>Subtract<\/strong><\/h2>\n<p>Este comando, devuelve la lista del tercer argumento despu\u00e9s de haber eliminado el elemento del segundo argumento de la lista del primer argumento, esto se puede observar en los siguientes ejemplos:<\/p>\n<pre class=\"lang:default decode:true \">?- subtract([1,2,3,4,5], [5], X).\r\nX = [1, 2, 3, 4].<\/pre>\n<pre class=\"lang:default decode:true \">?- subtract([1,2,3,4,5], [5,1], X).\r\nX = [2, 3, 4].<\/pre>\n<pre class=\"lang:default decode:true \">?- subtract([1,2,3,4,5], [4,2], X).\r\nX = [1, 3, 5].<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Otros comandos con listas Ademas de los comandos b\u00e1sicos para el uso de listas, existe otros comandos que tambi\u00e9n pueden ser de utilidad al desarrollar programas basados en estas estructuras de datos, en esta secci\u00f3n vamos a presentar algunos de ellos. Max_member Este comando sirve para identificar si el primer argumento es el elemento m\u00e1s &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/virtual.cuautitlan.unam.mx\/intar\/?page_id=443\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> &#8220;Otros comandos para utilizar 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-443","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=\/wp\/v2\/pages\/443"}],"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=443"}],"version-history":[{"count":4,"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=\/wp\/v2\/pages\/443\/revisions"}],"predecessor-version":[{"id":963,"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=\/wp\/v2\/pages\/443\/revisions\/963"}],"wp:attachment":[{"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}