{"id":5156,"date":"2018-02-15T11:07:01","date_gmt":"2018-02-15T16:07:01","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/icm00794\/?p=5156"},"modified":"2026-04-05T18:04:38","modified_gmt":"2026-04-05T23:04:38","slug":"s2eva2017tii_t1-citas-san-valentin","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-s2eva20\/s2eva2017tii_t1-citas-san-valentin\/","title":{"rendered":"s2Eva2017TII_T1 Citas San Valent\u00edn"},"content":{"rendered":"\n<p><em><strong>Ejercicio<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-2eva20\/2eva2017tii_t1-citas-san-valentin\/\" data-type=\"post\" data-id=\"5153\">2Eva2017TII_T1 Citas San Valent\u00edn<\/a><\/p>\n\n\n\n<p>Propuesta de soluci\u00f3n en <strong>Python<\/strong>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# CCPG1001-Fundamentos de programaci\u00f3n FIEC-ESPOL\n# 2da Evaluaci\u00f3n II T\u00e9rmino 2017\n# Tema 1. Citas San Valentin\n\ndef hayEmparejamiento(codigoP1, codigoP2, dicPersonas, aceptacion):\n    tanimoto = 0\n    aceptado = False\n    gen1 = dicPersonas&#x5B;codigoP1]&#x5B;'genero']\n    gen2 = dicPersonas&#x5B;codigoP2]&#x5B;'genero']\n    caract1 = dicPersonas&#x5B;codigoP1]&#x5B;'caracteristicas']\n    caract2 = dicPersonas&#x5B;codigoP2]&#x5B;'caracteristicas']\n    tanimoto = len(caract1&amp;caract2)\/len(caract1|caract2)\n    citaf = dicPersonas&#x5B;codigoP1]&#x5B;'citas']&#x5B;'fallidas']\n    citae = dicPersonas&#x5B;codigoP1]&#x5B;'citas']&#x5B;'exitosas']\n\n    if (gen1!=gen2 and\n        tanimoto&gt;=aceptacion and \n        not(codigoP2 in citaf) and\n        not(codigoP2 in citae)):\n        \n        aceptado = True\n        \n    respuesta = (tanimoto,aceptado)\n    return(respuesta)\n\ndef imprimirResultados(codigoPersona, dicPersonas,\n                       aceptacionMinimo, aceptacionMaximo):\n    narchivo = codigoPersona + '.txt'\n    archivo  = open(narchivo,'w')\n    quienes  = dicPersonas.keys()\n    gen1 = dicPersonas&#x5B;codigoPersona]&#x5B;'genero']\n    for otra in quienes:\n        gen2 = dicPersonas&#x5B;otra]&#x5B;'genero']\n        \n        if (gen1 != gen2 and\n            otra != codigoPersona):\n            \n            nombre = dicPersonas&#x5B;otra]&#x5B;'nombre']\n            linea = otra + '\n + nombre\n            caract = dicPersonas&#x5B;otra]&#x5B;'caracteristicas']\n            cadena = ''\n            \n            for unacaract in caract:\n                cadena = cadena + unacaract + ','\n                \n            cadena = cadena.strip(',')\n            linea = linea + '\n + cadena\n            tupla = hayEmparejamiento(codigoPersona,\n                                      otra,dicPersonas,\n                                      aceptacionMinimo)\n            tanimoto = tupla&#x5B;0]\n            aceptado = tupla&#x5B;1]\n            linea = linea + '\n + str(tanimoto)\n            responde = 'aceptar'\n            if aceptado != False:\n                responde = 'rechazar'\n            linea = linea + '\n + responde + '\\n'\n            archivo.write(linea)\n    archivo.close()\n    respuesta = 'Archivos creados'\n    return(respuesta)\n\ndef compatibles(codigoPersona, dicPersonas, aceptacion=0.43):\n    respuesta={}\n    quienes = dicPersonas.keys()\n    gen1 = dicPersonas&#x5B;codigoPersona]&#x5B;'genero']\n    for otra in quienes:\n        gen2 = dicPersonas&#x5B;otra]&#x5B;'genero']\n        if (gen1!= gen2 and otra != codigoPersona):\n            tupla = hayEmparejamiento(codigoPersona, otra,\n                                      dicPersonas, aceptacion)\n            tanimoto=tupla&#x5B;0]\n            if tanimoto&gt;=aceptacion:\n                nombre2 = dicPersonas&#x5B;otra]&#x5B;'nombre']\n                caract2 = dicPersonas&#x5B;codigoP2]&#x5B;'caracteristicas']\n                citasf2 = len(dicPersonas&#x5B;codigoP2]&#x5B;'citas']&#x5B;'fallidas'])\n                respuesta&#x5B;otra] = {'nombre':nombre2,\n                                   'caracteristicas':caract2,\n                                   'indice': tanimoto,\n                                   'fallidas': citasf2\n                                   }\n    return(respuesta)\n\n# PROGRAMA PRUEBA\n# INGRESO datos de prueba\ndicPersonas = {\n    'p1021': {'nombre': 'Carlos S.',\n              'genero': 'm',\n              'caracteristicas': {'alegre',\n                                  'fumador',\n                                  'hacker',\n                                  'deportista'},\n              'citas': {'fallidas': &#x5B;'P1902',\n                                     'P2893',\n                                     'P2310'],\n                        'exitosas': &#x5B;'P4025',\n                                     'P1001']}\n              },\n    'p1001': {'nombre': 'Andrea V.',\n              'genero': 'f',\n              'caracteristicas': {'farrero',\n                                  'programador',\n                                  'fabuloso',\n                                  'deportista'},\n              'citas': {'fallidas': &#x5B;'P1802'],\n                        'exitosas': &#x5B;'P1021',\n                                     'P1002']}\n              }\n    }\n\ncodigoP1 = 'p1021'\ncodigoP2 = 'p1001'\naceptacionMin = 0.1\naceptacionMax = 0.8\n\n# PROCEDIMIENTO\npareja = hayEmparejamiento(codigoP1,codigoP2,\n                           dicPersonas,\n                           aceptacionMin)\nresultado = imprimirResultados(codigoP1,\n                               dicPersonas,\n                               aceptacionMin,\n                               aceptacionMax)\nposibles = compatibles(codigoP1, dicPersonas,\n                       aceptacionMin)\n\n# Salida\nprint('emparejamiento de: ', codigoP1),\nprint(pareja)\nprint(resultado)\nprint('las parejas posibles: ')\nprint(posibles)\n\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 2Eva2017TII_T1 Citas San Valent\u00edn Propuesta de soluci\u00f3n en Python:<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-fp-ejemplos","format":"standard","meta":{"footnotes":""},"categories":[136],"tags":[58,157],"class_list":["post-5156","post","type-post","status-publish","format-standard","hentry","category-fp-s2eva20","tag-ejemplos-python","tag-fundamentos-programacion"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5156","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/comments?post=5156"}],"version-history":[{"count":3,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5156\/revisions"}],"predecessor-version":[{"id":23682,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5156\/revisions\/23682"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=5156"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=5156"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=5156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}