{"id":2353,"date":"2016-04-22T06:00:01","date_gmt":"2016-04-22T04:00:01","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=2353"},"modified":"2016-04-29T06:03:44","modified_gmt":"2016-04-29T04:03:44","slug":"conflictos-de-horarios","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/conflictos-de-horarios\/","title":{"rendered":"Conflictos de horarios"},"content":{"rendered":"<p>Los horarios de los cursos se pueden representar mediante matrices donde las filas indican los curso, las columnas las horas de clase y el valor correspondiente al curso i y la hora j es verdadero indica que i tiene clase a la hora j.<\/p>\n<p>En Haskell, podemos usar la matrices de la librer\u00eda Data.Matrix y definir el tipo de los horarios por<\/p>\n<pre lang=\"text\">\n   type Horario = Matrix Bool\n<\/pre>\n<p>Un ejemplo de horario es<\/p>\n<pre lang=\"text\">\n   ejHorarios1 :: Horario\n   ejHorarios1 = fromLists [[True,  True,  False, False],\n                            [False, True,  True,  False],\n                            [False, False, True,  True]]\n<\/pre>\n<p>en el que el 1\u00ba curso tiene clase a la 1\u00aa y 2\u00aa hora, el 2\u00ba a la 2\u00aa y a la 3\u00aa y el 3\u00ba a la 3\u00aa y a la 4\u00aa.<\/p>\n<p>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\">\n   cursosConflictivos :: Horario -> [Int] -> Bool\n<\/pre>\n<p>tal que (cursosConflictivos h is) se verifica para si los cursos de la lista is hay alguna hora en la que m\u00e1s de uno tiene clase a dicha hora. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   cursosConflictivos ejHorarios1 [1,2]  ==  True\n   cursosConflictivos ejHorarios1 [1,3]  ==  False\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.Matrix\n\ntype Horario = Matrix Bool\n\nejHorarios1 :: Horario\nejHorarios1 = fromLists [[True,  True,  False, False],\n                         [False, True,  True,  False],\n                         [False, False, True,  True]]\n\n--    horaConflictiva ejHorarios1 [1,2]   2  ==  True\n--    horaConflictiva ejHorarios1 [1,3]   2  ==  False\n--    horaConflictiva ejHorarios1 [1,2,3] 1  ==  False\nhoraConflictiva :: Horario -> [Int] -> Int -> Bool\nhoraConflictiva h is j =\n  length [i | i <- is, h ! (i,j)] > 1\n\ncursosConflictivos :: Horario -> [Int] -> Bool\ncursosConflictivos h is =\n  or [horaConflictiva h is j | j <- [1..n]]\n  where n = ncols h\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Los horarios de los cursos se pueden representar mediante matrices donde las filas indican los curso, las columnas las horas de clase y el valor correspondiente al curso i y la hora j es verdadero indica que i tiene clase a la hora j. En Haskell, podemos usar la matrices de la librer\u00eda Data.Matrix y&#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":[8,96,28,42,99,169],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/2353"}],"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=2353"}],"version-history":[{"count":3,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/2353\/revisions"}],"predecessor-version":[{"id":2381,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/2353\/revisions\/2381"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=2353"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=2353"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=2353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}