{"id":3475,"date":"2017-12-04T06:00:26","date_gmt":"2017-12-04T04:00:26","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=3475"},"modified":"2017-12-12T08:28:50","modified_gmt":"2017-12-12T06:28:50","slug":"mayusculas-y-minusculas-alternadas","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/mayusculas-y-minusculas-alternadas\/","title":{"rendered":"May\u00fasculas y min\u00fasculas alternadas"},"content":{"rendered":"<p>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\">\n   alternadas :: String -> (String,String)\n<\/pre>\n<p>tal que (alternadas cs) es el par de cadenas (xs,ys) donde xs es la cadena obtenida escribiendo alternativamente en may\u00fascula o min\u00fascula las letras de la palabra cs (que se supone que es una cadena de letras min\u00fasculas) e ys se obtiene an\u00e1logamente pero empezando en min\u00fascula. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   \u03bb> alternadas \"salamandra\"\n   (\"SaLaMaNdRa\",\"sAlAmAnDrA\")\n   \u03bb> alternadas \"solosequenosenada\"\n   (\"SoLoSeQuEnOsEnAdA\",\"sOlOsEqUeNoSeNaDa\")\n   \u03bb> alternadas (replicate 30 'a')\n   (\"AaAaAaAaAaAaAaAaAaAaAaAaAaAaAa\",\"aAaAaAaAaAaAaAaAaAaAaAaAaAaAaA\")\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.Char (toUpper)\n\n-- 1\u00aa soluci\u00f3n\nalternadas :: String -> (String,String)\nalternadas []     = ([],[])\nalternadas (x:xs) = (toUpper x : zs, x : ys)\n  where (ys,zs) = alternadas xs\n\n-- 2\u00aa soluci\u00f3n\nalternadas2 :: String -> (String,String)\nalternadas2 xs =\n  ( [f x | (f,x) <- zip (cycle [toUpper,id]) xs]\n  , [f x | (f,x) <- zip (cycle [id,toUpper]) xs]\n  )\n\n-- Comparaci\u00f3n de eficiencia\n--    \u03bb> import Data.List\n--    \u03bb> let (xs,ys) = alternadas (replicate (10^6) 'a') in nub (xs ++ ys)\n--    \"Aa\"\n--    (4.81 secs, 616,143,320 bytes)\n--    \u03bb> let (xs,ys) = alternadas2 (replicate (10^6) 'a') in nub (xs ++ ys)\n--    \"Aa\"\n--    (3.23 secs, 528,144,752 bytes)\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Definir la funci\u00f3n alternadas :: String -> (String,String) tal que (alternadas cs) es el par de cadenas (xs,ys) donde xs es la cadena obtenida escribiendo alternativamente en may\u00fascula o min\u00fascula las letras de la palabra cs (que se supone que es una cadena de letras min\u00fasculas) e ys se obtiene an\u00e1logamente pero empezando en min\u00fascula&#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":[8,166,11,6,137,9,76],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3475"}],"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=3475"}],"version-history":[{"count":4,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3475\/revisions"}],"predecessor-version":[{"id":3528,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3475\/revisions\/3528"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=3475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=3475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=3475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}