{"id":1012,"date":"2015-01-28T06:00:29","date_gmt":"2015-01-28T04:00:29","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=1012"},"modified":"2015-02-04T06:50:26","modified_gmt":"2015-02-04T04:50:26","slug":"division-segun-una-propiedad","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/division-segun-una-propiedad\/","title":{"rendered":"Divisi\u00f3n seg\u00fan una propiedad"},"content":{"rendered":"<h4>Enunciado<\/h4>\n<p>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\">\n   divideSegun :: (a -> Bool) -> [a] -> [[a]]\n<\/pre>\n<p>tal que (divideSegun p xs) es la lista de los segmentos de xs cuyos elementos no cumplen la propiedad p. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   divideSegun even [3,5,2,7,6,8,9,1]  ==  [[3,5],[7],[9,1]]\n   divideSegun odd  [3,5,2,7,6,8,9,1]  ==  [[2],[6,8]]\n<\/pre>\n<p>Comprobar con QuickCheck que, para cualquier lista xs de n\u00fameros enteros, la concatenaci\u00f3n de los elementos de (divideSegun even xs) es la lista de los elementos de xs que no son pares.<\/p>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Test.QuickCheck\n\ndivideSegun :: (a -> Bool) -> [a] -> [[a]]\ndivideSegun p xs \n    | null ys   = []\n    | otherwise = ys : divideSegun p zs\n    where (ys,zs) = break p (dropWhile p xs)\n\n-- La propiedad es\nprop_divideSegun :: [Int] -> Bool\nprop_divideSegun xs =\n    concat (divideSegun even xs) == filter (not . even) xs\n\n-- La comprobaci\u00f3n es \n--    ghci> quickCheck prop_divideSegun\n--    +++ OK, passed 100 tests.\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Enunciado Definir la funci\u00f3n divideSegun :: (a -> Bool) -> [a] -> [[a]] tal que (divideSegun p xs) es la lista de los segmentos de xs cuyos elementos no cumplen la propiedad p. Por ejemplo, divideSegun even [3,5,2,7,6,8,9,1] == [[3,5],[7],[9,1]] divideSegun odd [3,5,2,7,6,8,9,1] == [[2],[6,8]] Comprobar con QuickCheck que, para cualquier lista xs de n\u00fameros&#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":[61,12,59,38,181,141,11,6,146],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/1012"}],"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=1012"}],"version-history":[{"count":4,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/1012\/revisions"}],"predecessor-version":[{"id":1041,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/1012\/revisions\/1041"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=1012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=1012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=1012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}