{"id":1754,"date":"2015-11-23T07:16:52","date_gmt":"2015-11-23T05:16:52","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=1754"},"modified":"2015-11-30T07:26:40","modified_gmt":"2015-11-30T05:26:40","slug":"listas-de-igual-longitud","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/listas-de-igual-longitud\/","title":{"rendered":"Listas de igual longitud"},"content":{"rendered":"<p>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\">\n   mismaLongitud :: [[a]] -> Bool\n<\/pre>\n<p>tal que (mismaLongitud xss) se verifica si todas las listas de la lista de listas xss tienen la misma longitud. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   mismaLongitud [[1,2],[6,4],[0,0],[7,4]] == True\n   mismaLongitud [[1,2],[6,4,5],[0,0]]     == False\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.List (nub)    \n\n-- 1\u00aa soluci\u00f3n:\nmismaLongitud1 :: [[a]] -> Bool\nmismaLongitud1 []       = True\nmismaLongitud1 (xs:xss) = and [length ys == n | ys <- xss]\n    where n = length xs\n\n-- 2\u00aa soluci\u00f3n:\nmismaLongitud2 :: [[a]] -> Bool\nmismaLongitud2 xss = \n    and [length xs == length ys | (xs,ys) <- zip xss (tail xss)]\n\n-- 3\u00aa soluci\u00f3n:\nmismaLongitud3 :: [[a]] -> Bool\nmismaLongitud3 (xs:ys:xss) = \n    length xs == length ys && mismaLongitud3 (ys:xss)\nmismaLongitud3 _ = True           \n\n-- 4\u00aa soluci\u00f3n\nmismaLongitud4 :: [[a]] -> Bool\nmismaLongitud4 [] = True\nmismaLongitud4 (xs:xss) =\n    all (\\ys -> length ys == n) xss\n    where n = length xs \n\n-- 5\u00aa soluci\u00f3n\nmismaLongitud5 :: [[a]] -> Bool\nmismaLongitud5 xss = length (nub [length xs | xs <- xss]) == 1\n\n-- 6\u00aa soluci\u00f3n\nmismaLongitud6 :: [[a]] -> Bool\nmismaLongitud6 = null . drop 1 . nub . map length\n\n-- Comparaci\u00f3n de eficiencia\n--    \u03bb> mismaLongitud1 (replicate 20000 (replicate 20000 5))\n--    True\n--    (5.05 secs, 0 bytes)\n--    \u03bb> mismaLongitud2 (replicate 20000 (replicate 20000 5))\n--    True\n--    (9.98 secs, 0 bytes)\n--    \u03bb> mismaLongitud3 (replicate 20000 (replicate 20000 5))\n--    True\n--    (10.17 secs, 0 bytes)\n--    \u03bb> mismaLongitud4 (replicate 20000 (replicate 20000 5))\n--    True\n--    (5.18 secs, 0 bytes)\n--    \u03bb> mismaLongitud5 (replicate 20000 (replicate 20000 5))\n--    True\n--    (4.30 secs, 0 bytes)\n--    \u03bb> mismaLongitud6 (replicate 20000 (replicate 20000 5))\n--    True\n--    (4.19 secs, 0 bytes)\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Definir la funci\u00f3n mismaLongitud :: [[a]] -> Bool tal que (mismaLongitud xss) se verifica si todas las listas de la lista de listas xss tienen la misma longitud. Por ejemplo, mismaLongitud [[1,2],[6,4],[0,0],[7,4]] == True mismaLongitud [[1,2],[6,4,5],[0,0]] == False Soluciones import Data.List (nub) &#8212; 1\u00aa soluci\u00f3n: mismaLongitud1 :: [[a]] -> Bool mismaLongitud1 [] = True mismaLongitud1&#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":[5],"tags":[41,100,8,28,11,6,45,9],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/1754"}],"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=1754"}],"version-history":[{"count":4,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/1754\/revisions"}],"predecessor-version":[{"id":1793,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/1754\/revisions\/1793"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=1754"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=1754"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=1754"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}