{"id":1917,"date":"2012-02-29T15:47:33","date_gmt":"2012-02-29T15:47:33","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/?p=1917"},"modified":"2012-03-01T15:48:30","modified_gmt":"2012-03-01T15:48:30","slug":"i1m2011-4%c2%ba-examen-de-la-evaluacion-continua","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/i1m2011-4%c2%ba-examen-de-la-evaluacion-continua\/","title":{"rendered":"I1M2011: 4\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 4\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-- 4\u00ba examen de evaluaci\u00f3n continua (29 de febrero de 2012)\r\n-- ---------------------------------------------------------------------\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 1. [2.5 puntos] En el enunciado de uno de los problemas de\r\n-- las Olimpiadas matem\u00e1ticas de Brasil se define el primitivo de un\r\n-- n\u00famero como sigue:\r\n--    Dado un n\u00famero natural N, multiplicamos todos sus d\u00edgitos,\r\n--    repetimos este procedimiento hasta que quede un solo d\u00edgito al\r\n--    cual llamamos primitivo de N. Por ejemplo para 327: 3x2x7 = 42 y \r\n--    4x2 = 8. Por lo tanto, el primitivo de 327 es 8.\r\n--\r\n-- Definir la funci\u00f3n \r\n--    primitivo :: Integer -> Integer\r\n-- tal que (primitivo n) es el primitivo de n. Por ejemplo.\r\n--    primitivo 327  ==  8\r\n-- ---------------------------------------------------------------------\r\n\r\nprimitivo :: Integer -> Integer\r\nprimitivo n | n < 10    = n\r\n            | otherwise = primitivo (producto n)\r\n\r\n-- (producto n) es el producto de las cifras de n. Por ejemplo,\r\n--    producto 327  ==  42\r\nproducto :: Integer -> Integer\r\nproducto = product . cifras\r\n\r\n-- (cifras n) es la lista de las cifras de n. Por ejemplo,\r\n--    cifras 327  ==  [3,2,7]\r\ncifras :: Integer -> [Integer]\r\ncifras n = [read [y] | y <- show n]\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 2. [2.5 puntos] Definir la funci\u00f3n\r\n--    sumas :: Int -> [Int] -> [Int]\r\n-- tal que (sumas n xs) es la lista de los n\u00fameros que se pueden obtener\r\n-- como suma de n, o menos, elementos de xs. Por ejemplo,\r\n--    sumas 0 [2,5]    ==  [0]\r\n--    sumas 1 [2,5]    ==  [2,5,0]\r\n--    sumas 2 [2,5]    ==  [4,7,2,10,5,0]\r\n--    sumas 3 [2,5]    ==  [6,9,4,12,7,2,15,10,5,0]\r\n--    sumas 2 [2,3,5]  ==  [4,5,7,2,6,8,3,10,5,0]\r\n-- ---------------------------------------------------------------------\r\n\r\nsumas :: Int -> [Int] -> [Int]\r\nsumas 0 _  = [0]\r\nsumas _ [] = [0]  \r\nsumas n (x:xs) = [x+y | y <- sumas (n-1) (x:xs)] ++ sumas n xs \r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 3. [2.5 puntos] Los \u00e1rboles binarios se pueden representar\r\n-- mediante el siguiente tipo de datos\r\n--    data Arbol = H  \r\n--               | N Int Arbol Arbol\r\n-- Por ejemplo, el \u00e1rbol\r\n--            9\r\n--           \/ \\ \r\n--          \/   \\ \r\n--         3     7   \r\n--        \/ \\   \/ \\\r\n--       \/   \\ H   H\r\n--      2     4   \r\n--     \/ \\   \/ \\  \r\n--    H   H H   H\r\n-- se representa por\r\n--    N 9 (N 3 (N 2 H H) (N 4 H H)) (N 7 H H)\r\n-- Definir la funci\u00f3n\r\n--    ramaIzquierda :: Arbol -> [Int]\r\n-- tal que (ramaIzquierda a) es la lista de los valores de los nodos de\r\n-- la rama izquierda del \u00e1rbol a. Por ejemplo,\r\n--    ghci> ramaIzquierda (N 9 (N 3 (N 2 H H) (N 4 H H)) (N 7 H H))\r\n--    [9,3,2]\r\n-- ---------------------------------------------------------------------\r\n\r\ndata Arbol = H  \r\n           | N Int Arbol Arbol\r\n\r\nramaIzquierda :: Arbol -> [Int]\r\nramaIzquierda H         = []\r\nramaIzquierda (N x i d) = x : ramaIzquierda i\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 4. [2.5 puntos] Un primo permutable es un n\u00famero primo tal\r\n-- que todos los n\u00fameros obtenidos permutando sus cifras son primos. Por\r\n-- ejemplo, 337 es un primo permutable ya que 337, 373 y 733 son\r\n-- primos. \r\n-- \r\n-- Definir la funci\u00f3n  \r\n--    primoPermutable :: Integer -> Bool\r\n-- tal que (primoPermutable x) se verifica si x es un primo\r\n-- permutable. Por ejemplo, \r\n--    primoPermutable 17  ==  True\r\n--    primoPermutable 19  ==  False\r\n-- ---------------------------------------------------------------------\r\n\r\nprimoPermutable :: Integer -> Bool\r\nprimoPermutable x = and [primo y | y <- permutacionesN x]\r\n\r\n-- (permutacionesN x) es la lista de los n\u00fameros obtenidos permutando\r\n-- las cifras de x. Por ejemplo,\r\npermutacionesN :: Integer -> [Integer]\r\npermutacionesN x = [read ys | ys <- permutaciones (show x)]\r\n\r\n-- (intercala x ys) es la lista de las listas obtenidas intercalando x\r\n-- entre los elementos de ys. Por ejemplo, \r\n--    intercala 1 [2,3]  ==  [[1,2,3],[2,1,3],[2,3,1]]\r\nintercala :: a -> [a] -> [[a]]\r\nintercala x [] = [[x]]\r\nintercala x (y:ys) = (x:y:ys) : [y:zs | zs <- intercala x ys]\r\n\r\n-- (permutaciones xs) es la lista de las permutaciones de la lista\r\n-- xs. Por ejemplo, \r\n--    permutaciones \"bc\"   ==  [\"bc\",\"cb\"]\r\n--    permutaciones \"abc\"  ==  [\"abc\",\"bac\",\"bca\",\"acb\",\"cab\",\"cba\"]\r\npermutaciones :: [a] -> [[a]]\r\npermutaciones []     = [[]]\r\npermutaciones (x:xs) = \r\n    concat [intercala x ys | ys <- permutaciones xs]\r\n\r\n-- (primo x) se verifica si x es primo.\r\nprimo :: Integer -> Bool\r\nprimo x = x == head (dropWhile (<x) primos)\r\n\r\n-- primos es la lista de los n\u00fameros primos. \r\nprimos :: [Integer ]\r\nprimos = criba [2..]\r\n    where criba :: [Integer] -> [Integer]\r\n          criba (p:xs) = p : criba [x | x <- xs, x `mod` p \/= 0]\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 4\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":"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":[1],"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\/1917"}],"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=1917"}],"version-history":[{"count":1,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/1917\/revisions"}],"predecessor-version":[{"id":1918,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/1917\/revisions\/1918"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=1917"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=1917"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=1917"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}