{"id":2285,"date":"2016-04-05T06:00:45","date_gmt":"2016-04-05T04:00:45","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=2285"},"modified":"2021-04-25T16:15:55","modified_gmt":"2021-04-25T14:15:55","slug":"clases-de-equivalencia-1","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/clases-de-equivalencia-1\/","title":{"rendered":"Clases de equivalencia"},"content":{"rendered":"<p>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\">\n   clasesEquivalencia :: [a] -> (a -> a -> Bool) -> [[a]]\n<\/pre>\n<p>tal que (clasesEquivalencia xs r) es la lista de las clases de equivalencia de xs respecto de la relaci\u00f3n de equivalencia r. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   \u03bb> clasesEquivalencia [1..20] (\\x y -> x `mod` 3 == y `mod` 3)\n   [[1,4,7,10,13,16,19],[2,5,8,11,14,17,20],[3,6,9,12,15,18]]\n   \u03bb> clasesEquivalencia [1..20] (\\x y -> (x - y) `mod` 5 == 0)\n   [[1,6,11,16],[2,7,12,17],[3,8,13,18],[4,9,14,19],[5,10,15,20]]\n   \u03bb> clasesEquivalencia [-4..4] (\\x y -> abs x == abs y)\n   [[-4,4],[-3,3],[-2,2],[-1,1],[0]]\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.List (partition)\n\nclasesEquivalencia :: [a] -> (a -> a -> Bool) -> [[a]]\nclasesEquivalencia [] r = []\nclasesEquivalencia ys@(x:xs) r =\n    us : clasesEquivalencia vs r\n    where (us,vs) = partition (r x) ys\n<\/pre>\n<h4>Soluci\u00f3n en Maxima<\/h4>\n<pre lang=\"text\">\nclasesEquivalencia (xs,r) :=\n  equiv_classes (setify (xs),r)$\n<\/pre>\n<p>La evaluaci\u00f3n de los ejemplos es<\/p>\n<pre lang=\"text\">\n(%i6) xs : makelist (k,k,1,10)$\n(%i7) clasesEquivalencia (xs, lambda ([x,y], is (remainder (x-y,3) = 0)));\n(%o7) {{1, 4, 7, 10}, {2, 5, 8}, {3, 6, 9}}\n(%i8) clasesEquivalencia (xs, lambda ([x,y], is (remainder (x-y,5) = 0)));\n(%o8) {{1, 6}, {2, 7}, {3, 8}, {4, 9}, {5, 10}}\n(%i9) clasesEquivalencia (makelist(k,k,-4,4), lambda ([x,y], is (abs (x) = abs (y))));\n(%o9) {{- 4, 4}, {- 3, 3}, {- 2, 2}, {- 1, 1}, {0}}\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Definir la funci\u00f3n clasesEquivalencia :: [a] -> (a -> a -> Bool) -> [[a]] tal que (clasesEquivalencia xs r) es la lista de las clases de equivalencia de xs respecto de la relaci\u00f3n de equivalencia r. Por ejemplo, \u03bb> clasesEquivalencia [1..20] (\\x y -> x `mod` 3 == y `mod` 3) [[1,4,7,10,13,16,19],[2,5,8,11,14,17,20],[3,6,9,12,15,18]] \u03bb> clasesEquivalencia [1..20]&#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":[11,339,6],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/2285"}],"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=2285"}],"version-history":[{"count":3,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/2285\/revisions"}],"predecessor-version":[{"id":2314,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/2285\/revisions\/2314"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=2285"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=2285"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=2285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}