{"id":4973,"date":"2019-05-01T06:00:09","date_gmt":"2019-05-01T04:00:09","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=4973"},"modified":"2021-04-25T16:02:34","modified_gmt":"2021-04-25T14:02:34","slug":"periodo-de-una-lista-2019","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/periodo-de-una-lista-2019\/","title":{"rendered":"Per\u00edodo de una lista"},"content":{"rendered":"<p>El <strong>per\u00edodo de una lista<\/strong> xs es la lista m\u00e1s corta ys tal que xs se puede obtener concatenando varias veces la lista ys. Por ejemplo, el per\u00edodo \u00ababababab\u00bb es \u00abab\u00bb ya que \u00ababababab\u00bb se obtiene repitiendo tres veces la lista \u00abab\u00bb.<\/p>\n<p>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\"> \n   periodo :: Eq a => [a] -> [a]\n<\/pre>\n<p>tal que (periodo xs) es el per\u00edodo de xs. Por ejemplo,<\/p>\n<pre lang=\"text\"> \n   periodo \"ababab\"      ==  \"ab\"\n   periodo \"buenobueno\"  ==  \"bueno\"\n   periodo \"oooooo\"      ==  \"o\"\n   periodo \"sevilla\"     ==  \"sevilla\"\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.List (isPrefixOf, inits)\n\n-- 1\u00aa soluci\u00f3n\n-- ===========\n\nperiodo1 :: Eq a => [a] -> [a]\nperiodo1 xs = take n xs\n    where l = length xs\n          n = head [m | m <- divisores l, \n                        concat (replicate (l `div` m) (take m xs)) == xs]\n\n-- (divisores n) es la lista de los divisores de n. Por ejemplo,\n--    divisores 96  ==  [1,2,3,4,6,8,12,16,24,32,48,96]\ndivisores :: Int -> [Int]\ndivisores n = [x | x <- [1..n], n `mod` x == 0]\n\n-- 2\u00aa soluci\u00f3n\n-- ===========\n\nperiodo2 :: Eq a => [a] -> [a]\nperiodo2 xs = take n xs\n    where l = length xs\n          n = head [m | m <- divisores l, \n                        xs `isPrefixOf` cycle (take m xs)]\n<\/pre>\n<h4>Pensamiento<\/h4>\n<blockquote><p>\nEsta luz de Sevilla ... Es el palacio<br \/>\ndonde nac\u00ed, con su rumor de fuente.<\/p>\n<p>Antonio Machado\n<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>El per\u00edodo de una lista xs es la lista m\u00e1s corta ys tal que xs se puede obtener concatenando varias veces la lista ys. Por ejemplo, el per\u00edodo \u00ababababab\u00bb es \u00abab\u00bb ya que \u00ababababab\u00bb se obtiene repitiendo tres veces la lista \u00abab\u00bb. Definir la funci\u00f3n periodo :: Eq a => [a] -> [a] tal que&#8230;<\/p>\n","protected":false},"author":1,"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":[4],"tags":[8,12,71,89,19,47],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/4973"}],"collection":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/comments?post=4973"}],"version-history":[{"count":3,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/4973\/revisions"}],"predecessor-version":[{"id":5030,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/4973\/revisions\/5030"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=4973"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=4973"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=4973"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}