{"id":1862,"date":"2012-01-25T18:08:06","date_gmt":"2012-01-25T18:08:06","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/?p=1862"},"modified":"2013-03-08T05:48:56","modified_gmt":"2013-03-08T05:48:56","slug":"i1m2011-3%c2%ba-examen-de-la-evaluacion-continua","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/i1m2011-3%c2%ba-examen-de-la-evaluacion-continua\/","title":{"rendered":"I1M2011: 3\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 3\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-- 3\u00ba examen de evaluaci\u00f3n continua (25 de enero de 2012)\r\n-- ---------------------------------------------------------------------\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 1.1. [2 puntos] Un n\u00famero es muy compuesto si tiene m\u00e1s\r\n-- divisores que sus anteriores. Por ejemplo, 12 es muy compuesto porque\r\n-- tiene 6 divisores (1, 2, 3, 4, 6, 12) y todos los n\u00fameros del 1 al 11\r\n-- tienen menos de 6 divisores. \r\n-- \r\n-- Definir la funci\u00f3n\r\n--    esMuyCompuesto :: Int -> Bool\r\n-- tal que (esMuyCompuesto x) se verifica si x es un n\u00famero muy\r\n-- compuesto. Por ejemplo,\r\n--    esMuyCompuesto 24  ==  True\r\n--    esMuyCompuesto 25  ==  False\r\n-- Calcular  el menor n\u00famero muy compuesto de 4 cifras.\r\n-- ---------------------------------------------------------------------\r\n\r\nesMuyCompuesto :: Int -> Bool\r\nesMuyCompuesto x = \r\n    and [numeroDivisores y < n | y <- [1..x-1]]\r\n    where n = numeroDivisores x\r\n\r\n-- (numeroDivisores x) es el n\u00famero de divisores de x. Por ejemplo,\r\n--    numeroDivisores 24  ==  8\r\nnumeroDivisores :: Int -> Int\r\nnumeroDivisores = length . divisores\r\n\r\n-- (divisores x) es la lista de los divisores de x. Por ejemplo,\r\n--    divisores 24  ==  [1,2,3,4,6,8,12,24]\r\ndivisores :: Int -> [Int]\r\ndivisores x = [y | y <- [1..x], mod x y == 0]\r\n\r\n-- Los primeros n\u00fameros muy compuestos son\r\n--    ghci> take 14 [x | x <- [1..], esMuyCompuesto x]\r\n--    [1,2,4,6,12,24,36,48,60,120,180,240,360,720]\r\n\r\n-- El c\u00e1lculo del menor n\u00famero muy compuesto de 4 cifras es\r\n--    ghci> head [x | x <- [1000..], esMuyCompuesto x]\r\n--    1260\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 1.2. [1 punto] Definir la funci\u00f3n\r\n--    muyCompuesto :: Int -> Int\r\n-- tal que (muyCompuesto n) es el n-\u00e9simo n\u00famero muy compuesto. Por\r\n-- ejemplo, \r\n--    muyCompuesto 10  ==  180\r\n-- ---------------------------------------------------------------------\r\n\r\nmuyCompuesto :: Int -> Int\r\nmuyCompuesto n =\r\n    [x | x <- [1..], esMuyCompuesto x] !! n\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 2.1. [2 puntos] [Problema 37 del proyecto Euler] Un n\u00famero\r\n-- primo es truncable si los n\u00fameros que se obtienen eliminado cifras,\r\n-- de derecha a izquierda, son primos. Por ejemplo, 599 es un primo\r\n-- truncable porque 599, 59 y 5 son primos; en cambio, 577 es un primo\r\n-- no truncable porque 57 no es primo.  \r\n-- \r\n-- Definir la funci\u00f3n \r\n--    primoTruncable :: Int -> Bool\r\n-- tal que (primoTruncable x) se verifica si x es un primo\r\n-- truncable. Por ejemplo,\r\n--    primoTruncable 599  ==  True\r\n--    primoTruncable 577  ==  False\r\n-- ---------------------------------------------------------------------\r\n\r\nprimoTruncable :: Int -> Bool\r\nprimoTruncable x \r\n    | x < 10    = primo x\r\n    | otherwise = primo x &#038;&#038; primoTruncable (x `div` 10)\r\n\r\n-- (primo x) se verifica si x es primo.\r\nprimo :: Int -> Bool\r\nprimo x = x == head (dropWhile (<x) primos)\r\n\r\n-- primos es la lista de los n\u00fameros primos. \r\nprimos :: [Int ]\r\nprimos = criba [2..]\r\n    where criba :: [Int] -> [Int]\r\n          criba (p:xs) = p : criba [x | x <- xs, x `mod` p \/= 0]\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 2.2. [1.5 puntos] Definir la funci\u00f3n\r\n--    sumaPrimosTruncables :: Int -> Int\r\n-- tal que (sumaPrimosTruncables n) es la suma de los n primeros primos\r\n-- truncables. Por ejemplo,\r\n--    sumaPrimosTruncables 10  ==  249\r\n-- Calcular la suma de los 20 primos truncables.\r\n-- ---------------------------------------------------------------------\r\n\r\nsumaPrimosTruncables :: Int -> Int\r\nsumaPrimosTruncables n = \r\n    sum (take n [x | x <- primos, primoTruncable x])\r\n\r\n-- El c\u00e1lculo es\r\n--    ghci> sumaPrimosTruncables 20\r\n--    2551\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 3.1. [2 puntos] Los n\u00fameros enteros se pueden ordenar como\r\n-- sigue \r\n--    0, -1, 1, -2, 2, -3, 3, -4, 4, -5, 5, -6, 6, -7, 7, ...\r\n-- Definir la constante\r\n--    enteros :: [Int]\r\n-- tal que enteros es la lista de los enteros con la ordenaci\u00f3n\r\n-- anterior. Por ejemplo,\r\n--    take 10 enteros  ==  [0,-1,1,-2,2,-3,3,-4,4,-5]\r\n-- ---------------------------------------------------------------------\r\n\r\nenteros :: [Int]\r\nenteros = 0 : concat [[-x,x] | x <- [1..]]\r\n\r\n-- Otra definicici\u00f3n, por iteraci\u00f3n, es\r\nenteros_1 :: [Int]\r\nenteros_1 = iterate siguiente 0\r\n    where siguiente x | x >= 0    = -x-1\r\n                      | otherwise = -x\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 3.2. [1.5 puntos] Definir la funci\u00f3n\r\n--    posicion :: Int -> Int\r\n-- tal que (posicion x) es la posici\u00f3n del entero x en la ordenaci\u00f3n\r\n-- anterior. Por ejemplo,\r\n--    posicion 2  ==  4\r\n-- ---------------------------------------------------------------------\r\n\r\nposicion :: Int -> Int\r\nposicion x = length (takeWhile (\/=x) enteros)\r\n\r\n-- Definici\u00f3n por recursi\u00f3n\r\nposicion_1 :: Int -> Int\r\nposicion_1 x = aux enteros 0\r\n    where aux (y:ys) n | x == y    = n\r\n                       | otherwise = aux ys (n+1)\r\n\r\n-- Definici\u00f3n por comprensi\u00f3n\r\nposicion_2 :: Int -> Int\r\nposicion_2 x = head [n | (n,y) <- zip [0..] enteros, y == x]\r\n\r\n-- Definici\u00f3n directa\r\nposicion_3 :: Int -> Int\r\nposicion_3 x | x >= 0    = 2*x\r\n             | otherwise = 2*(-x)-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 3\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\/1862"}],"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=1862"}],"version-history":[{"count":3,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/1862\/revisions"}],"predecessor-version":[{"id":2863,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/1862\/revisions\/2863"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=1862"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=1862"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=1862"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}