{"id":4736,"date":"2019-02-19T06:00:29","date_gmt":"2019-02-19T04:00:29","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=4736"},"modified":"2019-02-26T07:39:39","modified_gmt":"2019-02-26T05:39:39","slug":"mezcla-de-listas","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/mezcla-de-listas\/","title":{"rendered":"Mezcla de listas"},"content":{"rendered":"<p>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\"> \n   mezcla :: [[a]] -> [a]\n<\/pre>\n<p>tal que (mezcla xss) es la lista tomando sucesivamente los elementos de xss en la misma posici\u00f3n. Cuando una de las listas de xss es vac\u00eda, se continua con las restantes. por ejemplo,<\/p>\n<pre lang=\"text\"> \n   mezcla [[1,2],[3..7],[8..10]]            ==  [1,3,8,2,4,9,5,10,6,7]\n   mezcla [\"Estamos\",\"en\",\"2019\"]           ==  \"Ee2sn0t1a9mos\"\n   take 9 (mezcla [[3,6..],[5,7..],[0,1]])  ==  [3,5,0,6,7,1,9,9,12]\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.List (transpose)\n\n-- 1\u00aa soluci\u00f3n\nmezcla :: [[a]] -> [a]\nmezcla xss = aux (filter (not . null) xss)\n  where\n    aux []  = []\n    aux yss = map head yss ++ mezcla (map tail yss)\n\n-- 2\u00aa soluci\u00f3n\nmezcla2 :: [[a]] -> [a]\nmezcla2 = aux . filter (not . null)\n  where\n    aux []  = []\n    aux yss = map head yss ++ mezcla (map tail yss)\n\n-- 3\u00aa soluci\u00f3n\nmezcla3 :: [[a]] -> [a]\nmezcla3 = concatMap primeros . takeWhile (not . null) . iterate restos\n  where primeros = map head . filter (not . null)\n        restos   = map tail . filter (not . null)\n\n-- 4\u00aa soluci\u00f3n\nmezcla4 :: [[a]] -> [a]\nmezcla4 = concat . transpose\n<\/pre>\n<h4>Pensamiento<\/h4>\n<blockquote><p>\nCuatro cosas tiene el hombre<br \/>\nque no sirven en la mar:<br \/>\nancla, gobernalle y remos,<br \/>\ny miedo de naufragar.<\/p>\n<p>Antonio Machado\n<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Definir la funci\u00f3n mezcla :: [[a]] -> [a] tal que (mezcla xss) es la lista tomando sucesivamente los elementos de xss en la misma posici\u00f3n. Cuando una de las listas de xss es vac\u00eda, se continua con las restantes. por ejemplo, mezcla [[1,2],[3..7],[8..10]] == [1,3,8,2,4,9,5,10,6,7] mezcla [\u00abEstamos\u00bb,\u00bben\u00bb,\u00bb2019&#8243;] == \u00abEe2sn0t1a9mos\u00bb take 9 (mezcla [[3,6..],[5,7..],[0,1]]) == [3,5,0,6,7,1,9,9,12]&#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":[12,58,38,71,50,10,181,141,11,6,45,34,68],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/4736"}],"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=4736"}],"version-history":[{"count":3,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/4736\/revisions"}],"predecessor-version":[{"id":4778,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/4736\/revisions\/4778"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=4736"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=4736"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=4736"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}