{"id":1729,"date":"2011-11-30T20:12:12","date_gmt":"2011-11-30T20:12:12","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/i1m2011-2%c2%ba-examen-de-la-evaluacion-continua\/"},"modified":"2013-03-08T05:48:58","modified_gmt":"2013-03-08T05:48:58","slug":"i1m2011-2%c2%ba-examen-de-la-evaluacion-continua","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/i1m2011-2%c2%ba-examen-de-la-evaluacion-continua\/","title":{"rendered":"I1M2011: 2\u00ba examen de la evaluaci\u00f3n continua"},"content":{"rendered":"<p>En la clase de hoy de <a href=\"http:\/\/www.cs.us.es\/~jalonso\/cursos\/i1m-11\">Inform\u00e1tica de 1\u00ba del Grado en Matem\u00e1ticas<\/a> se ha realizado el 2\u00ba examen de la evaluaci\u00f3n continua.<\/p>\n<p>\nA continuaci\u00f3n se muestra el examen junto con su soluci\u00f3n:<br \/>\n<!--more--><\/p>\n<pre lang=\"haskell\">\r\n-- Inform\u00e1tica (1\u00ba del Grado en Matem\u00e1ticas)\r\n-- 2\u00ba examen de evaluaci\u00f3n continua (30 de noviembre de 2011)\r\n-- ---------------------------------------------------------------------\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 1.1. [Problema 357 del Project Euler] Un n\u00famero natural n\r\n-- es especial si para todo divisor d de n, d+n\/d es primo. Definir la\r\n-- funci\u00f3n  \r\n--    especial :: Integer -> Bool\r\n-- tal que (especial x) se verifica si x es especial. Por ejemplo,\r\n--    especial 30  ==  True\r\n--    especial 20  ==  False\r\n-- ---------------------------------------------------------------------\r\n\r\nespecial :: Integer -> Bool\r\nespecial x = and [esPrimo (d + x `div` d) | d <- divisores x]\r\n\r\n-- (divisores x) es la lista de los divisores de x. Por ejemplo,\r\n--    divisores 30  ==  [1,2,3,5,6,10,15,30]\r\ndivisores :: Integer -> [Integer]\r\ndivisores x = [d | d <- [1..x], x `rem` d == 0] \r\n\r\n-- (esPrimo x) se verifica si x es primo. Por ejemplo,\r\n--    esPrimo 7  ==  True\r\n--    esPrimo 8  ==  False\r\nesPrimo :: Integer -> Bool\r\nesPrimo x = divisores x == [1,x]\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 1.2. Definir la funci\u00f3n \r\n--    sumaEspeciales :: Integer -> Integer\r\n-- tal que (sumaEspeciales n) es la suma de los n\u00fameros especiales\r\n-- menores o iguales que n. Por ejemplo, \r\n--    sumaEspeciales 100  ==  401\r\n-- ---------------------------------------------------------------------\r\n\r\n-- Por comprensi\u00f3n\r\nsumaEspeciales :: Integer -> Integer\r\nsumaEspeciales n = sum [x | x <- [1..n], especial x]\r\n\r\n-- Por recursi\u00f3n\r\nsumaEspecialesR :: Integer -> Integer\r\nsumaEspecialesR 0 = 0\r\nsumaEspecialesR n | especial n = n + sumaEspecialesR (n-1)\r\n                  | otherwise  = sumaEspecialesR (n-1)\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 2. Definir la funci\u00f3n\r\n--    refinada :: [Float] -> [Float]\r\n-- tal que (refinada xs) es la lista obtenida intercalando entre cada\r\n-- dos elementos consecutivos de xs su media aritm\u00e9tica. Por ejemplo,\r\n--    refinada [2,7,1,8]  ==  [2.0,4.5,7.0,4.0,1.0,4.5,8.0]\r\n--    refinada [2]        ==  [2.0]\r\n--    refinada []         ==  []\r\n-- ---------------------------------------------------------------------\r\n\r\nrefinada :: [Float] -> [Float]\r\nrefinada (x:y:zs) = x : (x+y)\/2 : refinada (y:zs)\r\nrefinada xs       = xs\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 3.1. En este ejercicio vamos a comprobar que la ecuaci\u00f3n\r\n-- diof\u00e1ntica \r\n--    1\/x_1 + 1\/x_2 + ... + 1\/x_n = 1\r\n-- tiene soluci\u00f3n; es decir, que para todo n >= 1 se puede construir una\r\n-- lista de n\u00fameros enteros de longitud n tal que la suma de sus\r\n-- inversos es 1. Para ello, basta observar que si \r\n--    [x_1, x_2, ..., x_n]\r\n-- es una soluci\u00f3n, entonces\r\n--    [2, 2*x_1, 2*x_2, ..., 2*x_n]\r\n-- tambi\u00e9n lo es. Definir la funci\u00f3n solucion tal que (solucion n) es la\r\n-- soluci\u00f3n de longitud n construida mediante el m\u00e9todo anterior. Por\r\n-- ejemplo, \r\n--    solucion 1  ==  [1]\r\n--    solucion 2  ==  [2,2]\r\n--    solucion 3  ==  [2,4,4]\r\n--    solucion 4  ==  [2,4,8,8]\r\n--    solucion 5  ==  [2,4,8,16,16]\r\n-- ---------------------------------------------------------------------\r\n\r\nsolucion 1 = [1]\r\nsolucion n = 2 : [2*x | x <- solucion (n-1)]\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 3.2. Definir la funci\u00f3n esSolucion tal que (esSolucion xs)\r\n-- se verifica si la suma de los inversos de xs es 1. Por ejemplo,\r\n--    esSolucion [4,2,4]       ==  True\r\n--    esSolucion [2,3,4]       ==  False\r\n--    esSolucion (solucion 5)  ==  True\r\n-- ---------------------------------------------------------------------\r\n\r\nesSolucion xs = sum [1\/x | x <- xs] == 1\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>En la clase de hoy de Inform\u00e1tica de 1\u00ba del Grado en Matem\u00e1ticas se ha realizado el 2\u00ba examen de la evaluaci\u00f3n continua. A continuaci\u00f3n se muestra el examen junto con su soluci\u00f3n:<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","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":[186],"tags":[295],"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\/1729"}],"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=1729"}],"version-history":[{"count":4,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/1729\/revisions"}],"predecessor-version":[{"id":2897,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/1729\/revisions\/2897"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=1729"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=1729"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=1729"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}