{"id":491,"date":"2014-07-16T07:00:05","date_gmt":"2014-07-16T05:00:05","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=491"},"modified":"2015-05-01T09:03:23","modified_gmt":"2015-05-01T07:03:23","slug":"producto-de-matrices-como-listas-de-listas","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/producto-de-matrices-como-listas-de-listas\/","title":{"rendered":"Producto de matrices como listas de listas"},"content":{"rendered":"<pre lang=\"text\">\n-- Las matrices pueden representarse mediante una lista de listas donde\n-- cada una de las lista representa una fila  de la matriz. Por ejemplo,\n-- la matriz\n--    |1 0 -2|\n--    |0 3 -1|\n-- puede representarse por [[1,0,-2],[0,3,-1]]. \n-- \n-- Definir la funci\u00f3n\n--    producto :: Num a => [[a]] -> [[a]] -> [[a]]\n-- tal que (producto p q) es el producto de las matrices p y q. Por\n-- ejemplo, \n--    ghci> producto [[1,0,-2],[0,3,-1]] [[0,3],[-2,-1],[0,4]]\n--    [[0,-5],[-6,-7]]\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.List (transpose)\n\nproducto :: Num a => [[a]] -> [[a]] -> [[a]]\nproducto p q = \n    [[sum [x*y | (x,y) <- zip fil col] | col <- transpose q] | fil <- p]\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>&#8212; Las matrices pueden representarse mediante una lista de listas donde &#8212; cada una de las lista representa una fila de la matriz. Por ejemplo, &#8212; la matriz &#8212; |1 0 -2| &#8212; |0 3 -1| &#8212; puede representarse por [[1,0,-2],[0,3,-1]]. &#8212; &#8212; Definir la funci\u00f3n &#8212; producto :: Num a => [[a]] -> [[a]]&#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":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/491"}],"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=491"}],"version-history":[{"count":2,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/491\/revisions"}],"predecessor-version":[{"id":662,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/491\/revisions\/662"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=491"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=491"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=491"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}