{"id":3764,"date":"2013-10-18T16:44:50","date_gmt":"2013-10-18T14:44:50","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/?p=3764"},"modified":"2013-10-21T09:46:02","modified_gmt":"2013-10-21T07:46:02","slug":"i1m2013-ejercicios-de-definiciones-por-comprension-3","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/i1m2013-ejercicios-de-definiciones-por-comprension-3\/","title":{"rendered":"I1M2013: Ejercicios de definiciones por comprensi\u00f3n (3)"},"content":{"rendered":"<p>En la clase de hoy del curso <a href=\"http:\/\/www.cs.us.es\/~jalonso\/cursos\/i1m-13\">Inform\u00e1tica (de 1\u00ba de Grado en Matem\u00e1ticas)<\/a> se han comentado las soluciones de los ejercicios 15 a 19 de la 4\u00aa relaci\u00f3n sobre definiciones por comprensi\u00f3n. <\/p>\n<p>Los ejercicios y sus soluciones se muestran a continuaci\u00f3n<br \/>\n<!--more--><\/p>\n<pre lang=\"haskell\">\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 15.1. Definir la funci\u00f3n unitarios tal (unitarios n) es\r\n-- la lista de n\u00fameros [n,nn, nnn, ....]. Por ejemplo. \r\n--    take 7 (unitarios 3) == [3,33,333,3333,33333,333333,3333333]\r\n--    take 3 (unitarios 1) == [1,11,111]\r\n-- ---------------------------------------------------------------------\r\n\r\nunitarios x = [x*(div (10^n-1) 9) | n <- [1 ..]]\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 15.2. Definir la funci\u00f3n multiplosUnitarios tal que\r\n-- (multiplosUnitarios x y n) es la lista de los n primeros m\u00faltiplos de\r\n-- x cuyo \u00fanico d\u00edgito es y. Por ejemplo,\r\n--    multiplosUnitarios 7 1 2  == [111111,111111111111]\r\n--    multiplosUnitarios 11 3 5 == [33,3333,333333,33333333,3333333333]\r\n-- ---------------------------------------------------------------------\r\n\r\nmultiplosUnitarios x y n = take n [z | z <- unitarios y, mod z x == 0]\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 16. Definir la funci\u00f3n primosEntre tal que (primosEntre x y)\r\n-- es la lista de los n\u00famero primos entre x e y (ambos inclusive). Por\r\n-- ejemplo, \r\n--    primosEntre 11 44  ==  [11,13,17,19,23,29,31,37,41,43]\r\n-- ---------------------------------------------------------------------\r\n\r\nprimosEntre x y = [n | n <- [x..y], primo n]\r\n\r\n-- (primo x) se verifica si x es primo. Por ejemplo,\r\n--    primo 30  == False\r\n--    primo 31  == True  \r\nprimo n = factores n == [1, n]\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 17. Definir la funci\u00f3n cortas tal que (cortas xs) es la\r\n-- lista de las palabras m\u00e1s cortas (es decir, de menor longitud) de la\r\n-- lista xs. Por ejemplo,\r\n--    ghci> cortas [\"hoy\", \"es\", \"un\", \"buen\", \"dia\", \"de\", \"sol\"]\r\n--    [\"es\",\"un\",\"de\"]\r\n-- ---------------------------------------------------------------------\r\n\r\ncortas xs = [x | x <- xs, length x == n]\r\n    where n = minimum [length x | x <- xs]\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 18. 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-- \r\n-- Definir la funci\u00f3n libresDeCuadrado tal que (libresDeCuadrado n) es\r\n-- la lista de los primeros n n\u00fameros 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 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 n =\r\n    null [m | m <- [2..n], rem n (m^2) == 0]\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 19. Definir la funci\u00f3n masOcurrentes tal que\r\n-- (masOcurrentes xs) es la lista de los elementos de xs que ocurren el\r\n-- m\u00e1ximo n\u00famero de veces. Por ejemplo,\r\n--    masOcurrentes [1,2,3,4,3,2,3,1,4] == [3,3,3]\r\n--    masOcurrentes [1,2,3,4,5,2,3,1,4] == [1,2,3,4,2,3,1,4]\r\n--    masOcurrentes \"Salamanca\"         == \"aaaa\"\r\n-- ---------------------------------------------------------------------\r\n\r\nmasOcurrentes xs = [x | x <- xs, ocurrencias x xs == m]\r\n    where m = maximum [ocurrencias x xs | x <-xs]\r\n\r\n-- (ocurrencias x xs) es el n\u00famero de ocurrencias de x en xs. Por\r\n-- ejemplo, \r\n--    ocurrencias 1 [1,2,3,4,3,2,3,1,4]  ==  2\r\nocurrencias x xs = length [x' | x' <- xs, x == x']  \r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>En la clase de hoy del curso Inform\u00e1tica (de 1\u00ba de Grado en Matem\u00e1ticas) se han comentado las soluciones de los ejercicios 15 a 19 de la 4\u00aa relaci\u00f3n sobre definiciones por comprensi\u00f3n. Los ejercicios y sus soluciones se muestran a continuaci\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":[222],"tags":[270,300],"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\/3764"}],"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=3764"}],"version-history":[{"count":1,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/3764\/revisions"}],"predecessor-version":[{"id":3765,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/3764\/revisions\/3765"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=3764"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=3764"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=3764"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}