{"id":803,"date":"2014-12-12T06:00:26","date_gmt":"2014-12-12T04:00:26","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=803"},"modified":"2021-04-25T17:06:48","modified_gmt":"2021-04-25T15:06:48","slug":"juego-de-bloques-con-letras-14-15","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/juego-de-bloques-con-letras-14-15\/","title":{"rendered":"Juego de bloques con letras"},"content":{"rendered":"<h4>Introducci\u00f3n<\/h4>\n<p>Para el juego de los bloques se dispone de un conjunto de bloques con una letra en cada una de sus dos caras. El objetivo del juego consiste en formar palabras sin que se pueda usar un bloque m\u00e1s de una vez y sin diferenciar may\u00fasculas de min\u00fasculas. Por ejemplo, si se tiene tres bloques de forma que el 1\u00ba tiene las letras A y B, el 2\u00aa la N y la O y el 3\u00ba la O y la A entonces se puede obtener la palabra ANA de dos formas: una con los bloques 1, 2 y 3 y otra con los 3, 2 y 1.<\/p>\n<h4>Enunciado<\/h4>\n<pre lang=\"text\">\n-- Definir la funci\u00f3n \n--    soluciones :: [String] -> String -> [[String]]\n-- tal que (soluciones bs cs) es la lista de las soluciones del juego de\n-- los bloque usando los bloques bs (cada bloque es una cadena de dos\n-- letras may\u00fasculas) para formar la palabra cs. Por ejemplo,\n--    ghci> soluciones [\"AB\",\"NO\",\"OA\"] \"ANA\"\n--    [[\"AB\",\"NO\",\"OA\"],[\"OA\",\"NO\",\"AB\"]]\n--    ghci> soluciones [\"AB\",\"NE\",\"OA\"] \"Bea\"\n--    [[\"AB\",\"NE\",\"OA\"]]\n--    ghci> soluciones [\"AB\",\"NE\",\"OA\"] \"EvA\"\n--    []\n--    ghci> soluciones [\"AB\",\"NO\",\"OA\",\"NC\"] \"ANA\"\n--    [[\"AB\",\"NO\",\"OA\"],[\"AB\",\"NC\",\"OA\"],[\"OA\",\"NO\",\"AB\"],[\"OA\",\"NC\",\"AB\"]]\n--    ghci> soluciones [\"AB\",\"NO\",\"OA\",\"NC\"] \"Anca\"\n--    [[\"AB\",\"NO\",\"NC\",\"OA\"],[\"OA\",\"NO\",\"NC\",\"AB\"]]\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.List (delete)\nimport Data.Char (toUpper)\n\nsoluciones :: [String] -> String -> [[String]]\nsoluciones _ []      = [[]]\nsoluciones bs (c:cs) = [b:rs | b <- bs, \n                               toUpper c `elem` b,\n                               rs <- soluciones (delete b bs) cs]\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n Para el juego de los bloques se dispone de un conjunto de bloques con una letra en cada una de sus dos caras. El objetivo del juego consiste en formar palabras sin que se pueda usar un bloque m\u00e1s de una vez y sin diferenciar may\u00fasculas de min\u00fasculas. Por ejemplo, si se tiene tres&#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":[7],"tags":[35,8,25,6,137],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/803"}],"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=803"}],"version-history":[{"count":6,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/803\/revisions"}],"predecessor-version":[{"id":6344,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/803\/revisions\/6344"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=803"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=803"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=803"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}