{"id":3720,"date":"2013-10-01T16:44:46","date_gmt":"2013-10-01T14:44:46","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/?p=3720"},"modified":"2013-10-01T16:44:46","modified_gmt":"2013-10-01T14:44:46","slug":"i1m2013-ejercicios-de-definiciones-por-composicion-de-funciones-sobre-listas","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/i1m2013-ejercicios-de-definiciones-por-composicion-de-funciones-sobre-listas\/","title":{"rendered":"I1M2013: Ejercicios de definiciones por composici\u00f3n de funciones sobre listas"},"content":{"rendered":"<p>En la segunda parte de la clase de hoy del curso de  <a href=\"http:\/\/www.cs.us.es\/~jalonso\/cursos\/i1m-13\">Inform\u00e1tica de 1\u00ba del Grado en Matem\u00e1ticas<\/a> hemos comentado las soluciones de los primeros 9 ejercicios 2\u00aa relaci\u00f3n sobre definiciones por composici\u00f3n de funciones sobre listas.<\/p>\n<p>Los ejercicios y su soluci\u00f3n se muestran a continuaci\u00f3n<br \/>\n<!--more--><\/p>\n<pre lang=\"haskell\">\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 1. Definir la funci\u00f3n rota1 tal que (rota1 xs) es la lista\r\n-- obtenida poniendo el primer elemento de xs al final de la lista. Por\r\n-- ejemplo, \r\n--    rota1 [3,2,5,7]  ==  [2,5,7,3]\r\n-- ---------------------------------------------------------------------\r\n\r\nrota1 xs = tail xs ++ [head xs]\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 2. Definir la funci\u00f3n rota tal que (rota n xs) es la lista\r\n-- obtenida poniendo los n primeros elementos de xs al final de la\r\n-- lista. Por ejemplo, \r\n--    rota 1 [3,2,5,7]  ==  [2,5,7,3]\r\n--    rota 2 [3,2,5,7]  ==  [5,7,3,2]\r\n--    rota 3 [3,2,5,7]  ==  [7,3,2,5]\r\n-- ---------------------------------------------------------------------\r\n\r\nrota n xs = drop n xs ++ take n xs \r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 3. Definir la funci\u00f3n rango tal que (rango xs) es la\r\n-- lista formada por el menor y mayor elemento de xs.\r\n--    rango [3,2,7,5]  ==  [2,7]\r\n-- Indicaci\u00f3n: Se pueden usar minimum y maximum.\r\n-- ---------------------------------------------------------------------\r\n\r\nrango xs = [minimum xs, maximum xs]\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 4. Definir la funci\u00f3n palindromo tal que (palindromo xs) se\r\n-- verifica si xs es un pal\u00edndromo; es decir, es lo mismo leer xs de\r\n-- izquierda a derecha que de derecha a izquierda. Por ejemplo,\r\n--    palindromo [3,2,5,2,3]    ==  True\r\n--    palindromo [3,2,5,6,2,3]  ==  False\r\n-- ---------------------------------------------------------------------\r\n\r\npalindromo xs = xs == reverse xs\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 5. Definir la funci\u00f3n interior tal que (interior xs) es la\r\n-- lista obtenida eliminando los extremos de la lista |. Por ejemplo,\r\n--    interior [2,5,3,7,3]  ==  [5,3,7]\r\n--    interior [2..7]       ==  [3,4,5,6]\r\n-- ---------------------------------------------------------------------\r\n\r\ninterior xs = tail (init xs)\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 6. Definir la funci\u00f3n finales tal que (finales n xs) es la\r\n-- lista formada por los n finales elementos de xs. Por ejemplo,\r\n--    finales 3 [2,5,4,7,9,6]  ==  [7,9,6]\r\n-- ---------------------------------------------------------------------\r\n \r\nfinales n xs = drop (length xs - n) xs \r\n \r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 7. Definir la funci\u00f3n segmento tal que (segmento m n xs) es\r\n-- la lista de los elementos de xs comprendidos entre las posiciones m y\r\n-- n. Por ejemplo,\r\n--    segmento 3 4 [3,4,1,2,7,9,0]  ==  [1,2]\r\n--    segmento 3 5 [3,4,1,2,7,9,0]  ==  [1,2,7]\r\n--    segmento 5 3 [3,4,1,2,7,9,0]  ==  []\r\n-- ---------------------------------------------------------------------\r\n \r\nsegmento m n xs = drop (m-1) (take n xs)\r\n \r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 8. Definir la funci\u00f3n extremos tal que (extremos n xs) es\r\n-- la lista formada por los n primeros elementos de xs y los n finales\r\n-- elementos de xs. Por ejemplo, \r\n--    extremos 3 [2,6,7,1,2,4,5,8,9,2,3]  ==  [2,6,7,9,2,3]\r\n-- ---------------------------------------------------------------------\r\n\r\nextremos n xs = take n xs ++ drop (length xs - n) xs\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>En la segunda parte de la clase de hoy del curso de Inform\u00e1tica de 1\u00ba del Grado en Matem\u00e1ticas hemos comentado las soluciones de los primeros 9 ejercicios 2\u00aa relaci\u00f3n sobre definiciones por composici\u00f3n de funciones sobre listas. Los ejercicios y su soluci\u00f3n se muestran a continuaci\u00f3n<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"footnotes":"","_jetpack_memberships_contains_paid_content":false},"categories":[222],"tags":[270,300],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/3720"}],"collection":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/comments?post=3720"}],"version-history":[{"count":1,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/3720\/revisions"}],"predecessor-version":[{"id":3721,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/3720\/revisions\/3721"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=3720"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=3720"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=3720"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}