{"id":2444,"date":"2012-12-20T16:15:59","date_gmt":"2012-12-20T16:15:59","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/?p=2444"},"modified":"2013-03-08T05:47:36","modified_gmt":"2013-03-08T05:47:36","slug":"i1m2012-2%c2%ba-examen-de-la-evaluacion-continua","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/i1m2012-2%c2%ba-examen-de-la-evaluacion-continua\/","title":{"rendered":"I1M2012: 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-12\">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 (20 de diciembre de 2012)\r\n-- ---------------------------------------------------------------------\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 1. Un entero positivo n es libre de cuadrado si no es\r\n-- divisible por ning\u00fan m^2 > 1. Por ejemplo, 10 es libre de cuadrado\r\n-- (porque 10 = 2*5) y 12 no lo es (ya que es divisible por 2^2). \r\n-- Definir la funci\u00f3n  \r\n--    libresDeCuadrado :: Int -> [Int]\r\n-- tal que (libresDeCuadrado n) es la lista de los primeros n n\u00fameros\r\n-- libres de cuadrado. Por ejemplo,\r\n--    libresDeCuadrado 15  ==  [1,2,3,5,6,7,10,11,13,14,15,17,19,21,22]\r\n-- ---------------------------------------------------------------------\r\n\r\nlibresDeCuadrado :: Int -> [Int]\r\nlibresDeCuadrado n = \r\n    take n [n | n <- [1..], libreDeCuadrado n]\r\n\r\n-- (libreDeCuadrado n) se verifica si n es libre de cuadrado. Por\r\n-- ejemplo, \r\n--    libreDeCuadrado 10  ==  True\r\n--    libreDeCuadrado 12  ==  False\r\nlibreDeCuadrado :: Int -> Bool\r\nlibreDeCuadrado n =\r\n    null [m | m <- [2..n], rem n (m^2) == 0]\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 2. Definir la funci\u00f3n\r\n--    duplicaPrimo :: [Int] -> [Int]\r\n-- tal que (duplicaPrimo xs) es la lista obtenida sustituyendo cada\r\n-- n\u00famero primo de xs por su doble. Por ejemplo,\r\n--    duplicaPrimo [2,5,9,7,1,3]  ==  [4,10,9,14,1,6]\r\n-- --------------------------------------------------------------------- \r\n\r\nduplicaPrimo :: [Int] -> [Int]\r\nduplicaPrimo []     = []\r\nduplicaPrimo (x:xs) | primo x   = (2*x) : duplicaPrimo xs\r\n                    | otherwise = x : duplicaPrimo xs\r\n\r\n-- (primo x) se verifica si x es primo. Por ejemplo,\r\n--    primo 7  ==  True\r\n--    primo 8  ==  False\r\nprimo :: Int -> Bool\r\nprimo x = divisores x == [1,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 :: Int -> [Int]\r\ndivisores x = [y | y <- [1..x], rem x y == 0]\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 3. Definir la funci\u00f3n\r\n--    ceros :: Int -> Int \r\n-- tal que (ceros n) es el n\u00famero de ceros en los que termina el n\u00famero\r\n-- n. Por ejemplo, \r\n--    ceros 3020000  ==  4\r\n-- ---------------------------------------------------------------------\r\n\r\nceros :: Int -> Int \r\nceros n | rem n 10 \/= 0 = 0\r\n        | otherwise     = 1 + ceros (div n 10)\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 4. [Problema 387 del Proyecto Euler]. Un n\u00famero de Harshad\r\n-- es un entero divisible entre la suma de sus d\u00edgitos. Por ejemplo, 201\r\n-- es un n\u00famero de Harshad porque es divisible por 3 (la suma de sus\r\n-- d\u00edgitos). Cuando se elimina el \u00faltimo d\u00edgito de 201 se obtiene 20 que\r\n-- tambi\u00e9n es un n\u00famero de Harshad. Cuando se elimina el \u00faltimo d\u00edgito\r\n-- de 20 se obtiene 2 que tambi\u00e9n es un n\u00famero de Harshad. Los n\u00famero\r\n-- como el 201 que son de Harshad y que los n\u00fameros obtenidos eliminando\r\n-- sus \u00faltimos d\u00edgitos siguen siendo de Harshad se llaman n\u00fameros de\r\n-- Harshad hereditarios por la derecha. Definir la funci\u00f3n\r\n--    numeroHHD :: Int -> Bool\r\n-- tal que (numeroHHD n) se verifica si n es un n\u00famero de Harshad\r\n-- hereditario por la derecha. Por ejemplo,\r\n--    numeroHHD 201  ==  True\r\n--    numeroHHD 140  ==  False\r\n--    numeroHHD 1104 ==  False\r\n-- Calcular el mayor n\u00famero de Harshad hereditario por la derecha con\r\n-- tres d\u00edgitos.\r\n-- ---------------------------------------------------------------------\r\n\r\n-- (numeroH n) se verifica si n es un n\u00famero de Harshad.\r\n--    numeroH 201  ==  True\r\nnumeroH :: Int -> Bool\r\nnumeroH n = rem n (sum (digitos n)) == 0\r\n\r\n-- (digitos n) es la lista de los d\u00edgitos de n. Por ejemplo,\r\n--    digitos 201  ==  [2,0,1]\r\ndigitos :: Int -> [Int]\r\ndigitos n = [read [d] | d <- show n]\r\n\r\nnumeroHHD :: Int -> Bool \r\nnumeroHHD n | n < 10    = True\r\n            | otherwise = numeroH n &#038;&#038; numeroHHD (div n 10) \r\n\r\n-- El c\u00e1lculo es\r\n--    ghci> head [n | n <- [999,998..100], numeroHHD n]\r\n--    902\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":[1],"tags":[298],"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\/2444"}],"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=2444"}],"version-history":[{"count":3,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/2444\/revisions"}],"predecessor-version":[{"id":2715,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/2444\/revisions\/2715"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=2444"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=2444"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=2444"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}