{"id":7456,"date":"2022-10-24T06:00:23","date_gmt":"2022-10-24T04:00:23","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=7456"},"modified":"2022-12-14T12:26:09","modified_gmt":"2022-12-14T10:26:09","slug":"base-de-dato-de-actividades","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/base-de-dato-de-actividades\/","title":{"rendered":"Base de datos de actividades"},"content":{"rendered":"<p>Las bases de datos sobre actividades de personas pueden representarse mediante listas de elementos de la forma (a,b,c,d), donde a es el nombre de la persona, b su actividad, c su fecha de nacimiento y d la de su fallecimiento. Un ejemplo es la siguiente que usaremos a lo largo de este ejercicio,<\/p>\n<pre lang=\"text\">\n   personas :: [(String,String,Int,Int)]\n   personas = [(\"Cervantes\",\"Literatura\",1547,1616),\n               (\"Velazquez\",\"Pintura\",1599,1660),\n               (\"Picasso\",\"Pintura\",1881,1973),\n               (\"Beethoven\",\"Musica\",1770,1823),\n               (\"Poincare\",\"Ciencia\",1854,1912),\n               (\"Quevedo\",\"Literatura\",1580,1654),\n               (\"Goya\",\"Pintura\",1746,1828),\n               (\"Einstein\",\"Ciencia\",1879,1955),\n               (\"Mozart\",\"Musica\",1756,1791),\n               (\"Botticelli\",\"Pintura\",1445,1510),\n               (\"Borromini\",\"Arquitectura\",1599,1667),\n               (\"Bach\",\"Musica\",1685,1750)]\n<\/pre>\n<p>Definir las funciones<\/p>\n<pre lang=\"text\">\n   nombres   :: [(String,String,Int,Int)] -> [String]\n   musicos   :: [(String,String,Int,Int)] -> [String]\n   seleccion :: [(String,String,Int,Int)] -> String -> [String]\n   musicos'  :: [(String,String,Int,Int)] -> [String]\n   vivas     :: [(String,String,Int,Int)] -> Int -> [String]\n<\/pre>\n<p>tales que<\/p>\n<ul>\n<li><code>nombres bd<\/code> es la lista de los nombres de las personas de la base de datos <code>bd<\/code>. Por ejemplo,<\/li>\n<\/ul>\n<pre lang=\"text\">\n     \u03bb> nombres personas\n     [\"Cervantes\",\"Velazquez\",\"Picasso\",\"Beethoven\",\"Poincare\",\n      \"Quevedo\",\"Goya\",\"Einstein\",\"Mozart\",\"Botticelli\",\"Borromini\",\n      \"Bach\"]\n<\/pre>\n<ul>\n<li><code>musicos bd<\/code> es la lista de los nombres de los m\u00fasicos de la base de datos <code>bd<\/code>. Por ejemplo,<\/li>\n<\/ul>\n<pre lang=\"text\">\n     musicos personas  ==  [\"Beethoven\",\"Mozart\",\"Bach\"]\n<\/pre>\n<ul>\n<li><code>seleccion bd m<\/code> es la lista de los nombres de las personas de la base de datos <code>bd<\/code> cuya actividad es <code>m<\/code>. Por ejemplo,<\/li>\n<\/ul>\n<pre lang=\"text\">\n     \u03bb> seleccion personas \"Pintura\"\n     [\"Velazquez\",\"Picasso\",\"Goya\",\"Botticelli\"]\n     \u03bb> seleccion personas \"Musica\"\n     [\"Beethoven\",\"Mozart\",\"Bach\"]\n<\/pre>\n<ul>\n<li><code>musicos' bd<\/code> es la lista de los nombres de los m\u00fasicos de la base de datos <code>bd<\/code>. Por ejemplo,<\/li>\n<\/ul>\n<pre lang=\"text\">\n     musicos' personas  ==  [\"Beethoven\",\"Mozart\",\"Bach\"]\n<\/pre>\n<ul>\n<li><code>vivas bd a<\/code> es la lista de los nombres de las personas de la base de datos <code>bd<\/code> que estaban vivas en el a\u00f1o <code>a<\/code>. Por ejemplo,<\/li>\n<\/ul>\n<pre lang=\"text\">\n     \u03bb> vivas personas 1600\n     [\"Cervantes\",\"Velazquez\",\"Quevedo\",\"Borromini\"]\n<\/pre>\n<p><b>Soluciones<\/b><\/p>\n<p>A continuaci\u00f3n se muestran las <a href=\"#haskell\">soluciones en Haskell<\/a> y las <a href=\"#python\">soluciones en Python<\/a>.<\/p>\n<p><a name=\"haskell\"><\/a><br \/>\n<b>Soluciones en Haskell<\/b><\/p>\n<pre lang=\"haskell\">\npersonas :: [(String,String,Int,Int)]\npersonas = [(\"Cervantes\",\"Literatura\",1547,1616),\n            (\"Velazquez\",\"Pintura\",1599,1660),\n            (\"Picasso\",\"Pintura\",1881,1973),\n            (\"Beethoven\",\"Musica\",1770,1823),\n            (\"Poincare\",\"Ciencia\",1854,1912),\n            (\"Quevedo\",\"Literatura\",1580,1654),\n            (\"Goya\",\"Pintura\",1746,1828),\n            (\"Einstein\",\"Ciencia\",1879,1955),\n            (\"Mozart\",\"Musica\",1756,1791),\n            (\"Botticelli\",\"Pintura\",1445,1510),\n            (\"Borromini\",\"Arquitectura\",1599,1667),\n            (\"Bach\",\"Musica\",1685,1750)]\n\nnombres :: [(String,String,Int,Int)] -> [String]\nnombres bd = [x | (x,_,_,_) <- bd]\n\nmusicos :: [(String,String,Int,Int)] -> [String]\nmusicos bd = [x | (x,\"Musica\",_,_) <- bd]\n\nseleccion :: [(String,String,Int,Int)] -> String -> [String]\nseleccion bd m = [ x | (x,m',_,_) <- bd, m == m' ]\n\nmusicos' :: [(String,String,Int,Int)] -> [String]\nmusicos' bd = seleccion bd \"Musica\"\n\nvivas :: [(String,String,Int,Int)] -> Int -> [String]\nvivas bd a = [x | (x,_,a1,a2) <- bd, a1 <= a, a <= a2]\n<\/pre>\n<p>El c\u00f3digo se encuentra en <a href=\"https:\/\/github.com\/jaalonso\/Exercitium\/blob\/main\/src\/Base_de_dato_de_actividades.hs\">GitHub<\/a>.<\/p>\n<p><a name=\"python\"><\/a><br \/>\n<b>Soluciones en Python<\/b><\/p>\n<pre lang=\"python\">\nBD = list[tuple[str, str, int, int]]\n\npersonas: BD = [\n    (\"Cervantes\", \"Literatura\", 1547, 1616),\n    (\"Velazquez\", \"Pintura\", 1599, 1660),\n    (\"Picasso\", \"Pintura\", 1881, 1973),\n    (\"Beethoven\", \"Musica\", 1770, 1823),\n    (\"Poincare\", \"Ciencia\", 1854, 1912),\n    (\"Quevedo\", \"Literatura\", 1580, 1654),\n    (\"Goya\", \"Pintura\", 1746, 1828),\n    (\"Einstein\", \"Ciencia\", 1879, 1955),\n    (\"Mozart\", \"Musica\", 1756, 1791),\n    (\"Botticelli\", \"Pintura\", 1445, 1510),\n    (\"Borromini\", \"Arquitectura\", 1599, 1667),\n    (\"Bach\", \"Musica\", 1685, 1750)]\n\ndef nombres(bd: BD) -> list[str]:\n    return [p[0] for p in bd]\n\ndef musicos(bd: BD) -> list[str]:\n    return [p[0] for p in bd if p[1] == \"Musica\"]\n\ndef seleccion(bd: BD, m: str) -> list[str]:\n    return [p[0] for p in bd if p[1] == m]\n\ndef musicos2(bd: BD) -> list[str]:\n    return seleccion(bd, \"Musica\")\n\ndef vivas(bd: BD, a: int) -> list[str]:\n    return [p[0] for p in bd if p[2] <= a <= p[3]]\n<\/pre>\n<p>El c\u00f3digo se encuentra en <a href=\"https:\/\/github.com\/jaalonso\/Exercitium-Python\/blob\/main\/src\/base_de_dato_de_actividades.py\">GitHub<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Las bases de datos sobre actividades de personas pueden representarse mediante listas de elementos de la forma (a,b,c,d), donde a es el nombre de la persona, b su actividad, c su fecha de nacimiento y d la de su fallecimiento. Un ejemplo es la siguiente que usaremos a lo largo de este ejercicio, personas ::&#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":[581],"tags":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/7456"}],"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=7456"}],"version-history":[{"count":4,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/7456\/revisions"}],"predecessor-version":[{"id":7664,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/7456\/revisions\/7664"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=7456"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=7456"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=7456"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}