{"id":3569,"date":"2017-12-29T06:00:41","date_gmt":"2017-12-29T04:00:41","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=3569"},"modified":"2022-03-26T12:10:49","modified_gmt":"2022-03-26T10:10:49","slug":"ordenacion-segun-una-cadena","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/ordenacion-segun-una-cadena\/","title":{"rendered":"Ordenaci\u00f3n seg\u00fan una cadena"},"content":{"rendered":"<p>Dada una lista xs y una cadena cs de la misma longitud, la ordenaci\u00f3n de xs seg\u00fan cs consiste en emparejar los elementos de cs con los de xs (de forma que al menor elemento de cs le corresponde el menor de xs, al segundo de cs el segundo de xs, etc.) y ordenar los elementos de xs en el mismo orden que sus correspondientes elementos de cs. Por ejemplo, si xs es [6,4,2] y cs es \u00abCAB\u00bb entonces a &#8216;A&#8217; le corresponde el 2, a &#8216;B&#8217; el 4 y a &#8216;C&#8217; el 6; luego la ordenaci\u00f3n es [6,2,4].<\/p>\n<p>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\">\n   ordenacion :: Ord a => [a] -> String -> [a]\n<\/pre>\n<p>tal que (ordenacion xs ys) es la ordenaci\u00f3n de la lista xs seg\u00fan la cadena cs. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   ordenacion [6,4,2] \"CAB\"     ==  [6,2,4]\n   ordenacion [1,5,3] \"ABC\"     ==  [1,3,5]\n   ordenacion [1,5,3,7] \"ABEC\"  ==  [1,3,7,5]\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.List (sort)\nimport Data.Maybe (fromJust)\n\nordenacion :: Ord a => [a] -> String -> [a]\nordenacion xs cs =\n  [fromJust (lookup y diccionario) | y <- cs]\n  where diccionario = zip (sort cs) (sort xs)\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Dada una lista xs y una cadena cs de la misma longitud, la ordenaci\u00f3n de xs seg\u00fan cs consiste en emparejar los elementos de cs con los de xs (de forma que al menor elemento de cs le corresponde el menor de xs, al segundo de cs el segundo de xs, etc.) y ordenar los&#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,500,419,414,14],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3569"}],"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=3569"}],"version-history":[{"count":2,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3569\/revisions"}],"predecessor-version":[{"id":3793,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3569\/revisions\/3793"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=3569"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=3569"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=3569"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}