{"id":1004,"date":"2010-12-20T17:26:34","date_gmt":"2010-12-20T17:26:34","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/?p=1004"},"modified":"2013-03-08T05:50:05","modified_gmt":"2013-03-08T05:50:05","slug":"i1m2010-tercer-examen-de-la-evaluacion-continua","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/i1m2010-tercer-examen-de-la-evaluacion-continua\/","title":{"rendered":"I1M2010: Tercer examen de la evaluacion continua"},"content":{"rendered":"<p>En la clase de hoy de <a href=\"http:\/\/www.cs.us.es\/~jalonso\/cursos\/i1m-10\">Inform\u00e1tica de 1\u00ba del Grado en Matem\u00e1ticas<\/a> se ha realizado el tercer examen de la evaluaci\u00f3n continua.<\/p>\n<p>Las notas se han publicado en la <a href=\"https:\/\/ev2.us.es\/webct\/logon\/804142662041\">WebCT<\/a>.<\/p>\n<p>El resumen estad\u00edstico del resultado del examen es el siguiente<\/p>\n<table border=\"1\">\n<tr>\n<td>Suspensos       <\/td>\n<td>  0 <\/td>\n<td> 00.0% <\/td>\n<\/tr>\n<tr>\n<td>Aprobados       <\/td>\n<td>  8 <\/td>\n<td> 42.1% <\/td>\n<\/tr>\n<tr>\n<td>Notables        <\/td>\n<td>  8 <\/td>\n<td> 42.1% <\/td>\n<\/tr>\n<tr>\n<td>Sobresalientes  <\/td>\n<td>  3 <\/td>\n<td> 15.8% <\/td>\n<\/tr>\n<tr>\n<td>Total           <\/td>\n<td> 19<\/td>\n<\/tr>\n<\/table>\n<p>El porcentaje de aprobados (sobre presentados) es 100.0 y la nota media es 7.<\/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 (20 de diciembre de 2010)\r\n-- ---------------------------------------------------------------------\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 1. [2.5 puntos] Definir por recursi\u00f3n la funci\u00f3n \r\n--    sumaR :: Num b => (a -> b) -> [a] -> b\r\n-- tal que (suma f xs) es la suma de los valores obtenido aplicando la\r\n-- funci\u00f3n f a lo elementos de la lista xs. Por ejemplo,\r\n--    sumaR (*2)  [3,5,10]  ==  36\r\n--    sumaR (\/10) [3,5,10]  ==  1.8\r\n -- ---------------------------------------------------------------------\r\n\r\nsumaR :: Num b => (a -> b) -> [a] -> b\r\nsumaR f []     = 0\r\nsumaR f (x:xs) = f x + sumaR f xs \r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 2. [2.5 puntos] Definir por plegado la funci\u00f3n \r\n--    sumaP :: Num b => (a -> b) -> [a] -> b\r\n-- tal que (suma f xs) es la suma de los valores obtenido aplicando la\r\n-- funci\u00f3n f a lo elementos de la lista xs. Por ejemplo,\r\n--    sumaP (*2)  [3,5,10]  ==  36\r\n--    sumaP (\/10) [3,5,10]  ==  1.8\r\n-- ---------------------------------------------------------------------\r\n\r\nsumaP :: Num b => (a -> b) -> [a] -> b\r\nsumaP f = foldr (\\x y -> (f x) + y) 0\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 3. [2.5 puntos] El enunciado del problema 1 de la Olimpiada\r\n-- Iberoamericana de Matem\u00e1tica Universitaria del 2006 es el siguiente:\r\n--    Sean m y n n\u00fameros enteros mayores que 1. Se definen los conjuntos \r\n--    P(m) = {1\/m, 2\/m,..., (m-1)\/m} y P(n) = {1\/n, 2\/n,..., (n-1)\/n}.\r\n--    Encontrar la distancia entre P(m) y P(n), que se define como\r\n--    m\u00edn {|a - b| : a en P(m), b en P(n)}.\r\n-- Definir la funci\u00f3n distancia tal que (distancia m n) es la distancia\r\n-- entre P(m) y P(n). Por ejemplo,\r\n--    distancia 2 7 == 7.142857e-2\r\n--    distancia 2 8 == 0.0\r\n-- ---------------------------------------------------------------------\r\n\r\ndistancia :: Float -> Float -> Float\r\ndistancia m n = \r\n    minimum [abs (i\/m - j\/n) | i <- [1..m-1], j <- [1..n-1]]\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 4. [2.5 puntos] El enunciado del problema 580 de \"N\u00fameros y\r\n-- algo m\u00e1s..\" es el siguiente: \r\n--    \u00bfCu\u00e1l es el menor n\u00famero que puede expresarse como la suma de 9,\r\n--    10 y 11 n\u00fameros consecutivos?  \r\n-- (El problema se encuentra en http:\/\/goo.gl\/1K3t7 )\r\n-- A lo largo de los distintos apartados de este ejercicio se resolver\u00e1\r\n-- el problema.\r\n-- ---------------------------------------------------------------------\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 4.1. Definir la funci\u00f3n\r\n--    consecutivosConSuma :: Int -> Int -> [[Int]]\r\n-- tal que (consecutivosConSuma x n) es la lista de listas de n n\u00fameros\r\n-- consecutivos cuya suma es x. Por ejemplo,\r\n--    consecutivosConSuma 12 3  ==  [[3,4,5]]\r\n--    consecutivosConSuma 10 3  ==  []\r\n-- ---------------------------------------------------------------------\r\n\r\nconsecutivosConSuma :: Int -> Int -> [[Int]]\r\nconsecutivosConSuma x n = \r\n    [[y..y+n-1] | y <- [1..x], sum [y..y+n-1] == x]\r\n\r\n-- Se puede hacer una definici\u00f3n sin b\u00fasqueda, ya que por la f\u00f3rmula de\r\n-- la suma de progresiones aritm\u00e9ticas, la expresi\u00f3n\r\n--    sum [y..y+n-1] == x\r\n-- se reduce a\r\n--    (y+(y+n-1))n\/2 = x\r\n-- De donde se puede despejar la y, ya que\r\n--    2yn+n^2-n = 2x\r\n--    y = (2x-n^2+n)\/2n\r\n-- De la anterior anterior se obtiene la siguiente definici\u00f3n de\r\n-- consecutivosConSuma que no utiliza b\u00fasqueda.\r\n\r\nconsecutivosConSuma' :: Int -> Int -> [[Int]]\r\nconsecutivosConSuma' x n\r\n    | z >= 0 && mod z (2*n) == 0 = [[y..y+n-1]]\r\n    | otherwise                  = []\r\n    where z = 2*x-n^2+n\r\n          y = div z (2*n)\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 4.2. Definir la funci\u00f3n \r\n--    esSuma :: Int -> Int -> Bool\r\n-- tal que (esSuma x n) se verifica si x es la suma de n n\u00fameros\r\n-- naturales consecutivos. Por ejemplo,\r\n--    esSuma 12 3  ==  True\r\n--    esSuma 10 3  ==  False\r\n-- ---------------------------------------------------------------------\r\n\r\nesSuma :: Int -> Int -> Bool\r\nesSuma x n = consecutivosConSuma x n \/= []\r\n\r\n-- Tambi\u00e9n puede definirse directamente sin necesidad de\r\n-- consecutivosConSuma como se muestra a continuaci\u00f3n.\r\nesSuma' :: Int -> Int -> Bool\r\nesSuma' x n = or [sum [y..y+n-1] == x | y <- [1..x]]\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 4.3. Definir la funci\u00f3n\r\n--    menorQueEsSuma :: [Int] -> Int\r\n-- tal que (menorQueEsSuma ns) es el menor n\u00famero que puede expresarse\r\n-- como suma de tantos n\u00fameros consecutivos como indica ns. Por ejemplo, \r\n--    menorQueEsSuma [3,4]  ==  18\r\n-- Lo que indica que 18 es el menor n\u00famero se puede escribir como suma\r\n-- de 3 y de 4 n\u00fameros consecutivos. En este caso, las sumas son \r\n-- 18 = 5+6+7 y 18 = 3+4+5+6.\r\n-- ---------------------------------------------------------------------\r\n\r\nmenorQueEsSuma :: [Int] -> Int\r\nmenorQueEsSuma ns = \r\n    head [x | x <- [1..], and [esSuma x n | n <- ns]]\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 4.4. Usando la funci\u00f3n menorQueEsSuma calcular el menor\r\n-- n\u00famero que puede expresarse como la suma de 9, 10 y 11 n\u00fameros\r\n-- consecutivos.\r\n-- ---------------------------------------------------------------------\r\n\r\n-- La soluci\u00f3n es\r\n--    *Main> menorQueEsSuma [9,10,11]\r\n--    495\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 tercer examen de la evaluaci\u00f3n continua. Las notas se han publicado en la WebCT. El resumen estad\u00edstico del resultado del examen es el siguiente Suspensos 0 00.0% Aprobados 8 42.1% Notables 8 42.1% Sobresalientes 3 15.8% Total 19&#8230;<\/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":[133],"tags":[65,270,287],"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\/1004"}],"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=1004"}],"version-history":[{"count":6,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/1004\/revisions"}],"predecessor-version":[{"id":2959,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/1004\/revisions\/2959"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=1004"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=1004"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=1004"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}