{"id":24428,"date":"2014-03-30T16:44:00","date_gmt":"2014-03-30T21:44:00","guid":{"rendered":"https:\/\/blog.espol.edu.ec\/algoritmos101\/?p=24428"},"modified":"2026-04-30T16:48:45","modified_gmt":"2026-04-30T21:48:45","slug":"retos-2017iit-fp","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-u08\/retos-2017iit-fp\/","title":{"rendered":"Retos 2017IIT FP"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\n<p><a href=\"#economia\">Econom\u00eda<\/a><\/p>\n\n\n\n<p><a href=\"#genetica\">Gen\u00e9tica<\/a><\/p>\n\n\n\n<p><a href=\"#robotica\">Rob\u00f3tica<\/a><\/p>\n\n\n\n<p><a href=\"#videojuegos\">Video Juegos<\/a><a name=\"economia\"><\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"economia\">Retos 2017IIT Econom\u00eda<\/h2>\n\n\n\n<p><em><strong>Propuesta de soluci\u00f3n<\/strong><\/em>, usando conceptos b\u00e1sicos.<\/p>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: <a href=\"http:\/\/programacion.espol.edu.ec\/static\/media\/uploads\/reto_econom%C3%ADa_enero_2018_.pdf\">http:\/\/programacion.espol.edu.ec\/static\/media\/uploads\/reto_econom%C3%ADa_enero_2018_.pdf<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"385\" height=\"98\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/01\/Pyweekend01.png\" alt=\"Pyweekend banner\" class=\"wp-image-20978\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"215\" height=\"213\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/01\/Pyweekend01Economia.png\" alt=\"Pyweekend banner Econom\u00eda\" class=\"wp-image-20979\" \/><\/figure>\n\n\n\n<p>Usted cuenta con una base de datos de accionistas que ha sido proporcionada por un organismo de control ecuatoriano <a href=\"https:\/\/goo.gl\/5kD5A2\">https:\/\/goo.gl\/5kD5A2<\/a> . <\/p>\n\n\n\n<p>Esta base contiene informaci\u00f3n relacionada con la participaci\u00f3n accionaria (local y extranjera) de empresas radicadas en el Ecuador. Sin embargo, existe un inconveniente: en algunas de las empresas el porcentaje total de accionistas supera el 100%.<\/p>\n\n\n\n<p>Por lo tanto, se pide:<\/p>\n\n\n\n<p>1. Identifique el n\u00famero total de y las empresas cuya suma total de acciones excede el 100%<\/p>\n\n\n\n<p><strong><em>Propuesta de soluci\u00f3n<\/em><\/strong>: Para encontrar esta respuesta es necesario leer el archivo y procesar cada registro (l\u00ednea). Sin embargo, al leer el archivo, se determina que hay errores en l\u00ednea por falta de datos.<\/p>\n\n\n\n<p>Se propone inicialmente separar los registros entre los validados y con errores<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Reto Economia\n\n# Lectura de Archivo\n# Separa registros validos, que tengan todos los campos\n\n# narchivo = input('nombre del archivo: ')\nnarchivorecibido = 'accionistas_nuevo'\nnarchivorecibido = narchivorecibido+'.csv'\nnarchivovalidado = 'accionista_validado.txt'\nnarchivoerrores  = 'accionista_errores.txt'\n\nleidos  = 0\nvalidos = 0\nerrores = 0\n\n# Abre archivos de trabajo\narchivorecibido = open(narchivorecibido, encoding=&quot;utf8&quot;)\narchivovalidado = open(narchivovalidado, 'w')\narchivoerrores  = open(narchivoerrores, 'w')\n\n# l\u00ednea encabezado\nlinea  = archivorecibido.readline()\npartes = linea.split(';')\n# columnas en cada registro\ncampos = len(partes) \narchivovalidado.write(linea)\narchivoerrores.write(linea)\n\nwhile not(linea==''):\n    linea  = archivorecibido.readline()\n    leidos = leidos + 1\n    sinsaltos = linea.strip('\\n')\n    partes  = sinsaltos.split(';')\n    tamano  = len(partes)\n    unerror = 0 \n    if (tamano == campos):\n        # Revisa que exista ruc\n        truc = len(partes&#x5B;0])\n        tparticipa = len(partes&#x5B;4])\n        if (truc&gt;0 and tparticipa&gt;0):\n            archivovalidado.write(linea)\n            validos = validos +1\n        else:\n            unerror = 1\n        \n    if (unerror == 1):\n        archivoerrores.write(linea)\n        errores = errores +1\n\narchivorecibido.close()\narchivovalidado.close()\narchivoerrores.close()\n\nprint('registros leidos: ', leidos)\nprint('validos: ', validos)\nprint('errores: ', errores)\nprint('revisar archivo de errores.txt generado')\n<\/pre><\/div>\n\n\n<p>obteniendo los siguientes resultados de los archivos separados:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>registros leidos:  437228\nvalidos:  427575\nerrores:  9646\nrevisar archivo de errores.txt generado\n<\/code><\/pre>\n\n\n\n<p>Se procesa los registros en 'accionista_validado.txt'<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# RETO ECONOMIA 02\n\n# Procesa los registros validos, que tengan todos los campos\n\n# narchivo = input('nombre del archivo: ')\nnarchivo = 'accionista_validado.txt'\n\nleidos   = 0\n# Abre archivos de trabajo\narchivo  = open(narchivo, 'r')\nacciones = {}\n\n# l\u00ednea encabezado\nlinea  = archivo.readline()\npartes = linea.split(';')\n\n# columnas en cada registro\ncampos = len(partes) \nwhile not(linea==''):\n    linea  = archivo.readline()\n    leidos = leidos + 1\n    # linea = linea.strip('\\n')\n    partes = linea.split(';')\n    tamano = len(partes)\n    unruc  = partes&#x5B;0]\n    participa = partes&#x5B;4]\n    if (len(participa)&gt;0):\n        if not(unruc in acciones):\n            acciones&#x5B;unruc] = 0\n        if (unruc in acciones):\n            acciones&#x5B;unruc] = acciones&#x5B;unruc] + float(participa)\n    linea = archivo.readline()\n\narchivo.close()\nprint('El n\u00famero de empresas encontrado es:')\nprint(len(acciones))\n\nexcede = &#x5B;]\nfor unruc in acciones:\n    if (acciones&#x5B;unruc]&gt;100.00000000000001):\n        excede.append(&#x5B;unruc,acciones&#x5B;unruc]])\nn = len(excede)\nprint('Empresas que exceden el 100.00000000000001 % de acciones:',n)\nfor i in range(0,n,1):\n    print(excede&#x5B;i])\n<\/pre><\/div>\n\n\n<p>con lo que las empresas con exceso de registro de accionistas es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>El n\u00famero de empresas encontrado es:\n60946\nEmpresas que exceden el 100.00000000000001 % de acciones: 14\n&#091;'0991317791001', 200.0]\n&#091;'0992297492001', 100.00000000000003]\n&#091;'0990261431001', 900.0]\n&#091;'0992829222001', 487.5]\n&#091;'0992719125001', 1575.0]\n&#091;'0992718641001', 1200.0]\n&#091;'1291750156001', 114.875]\n&#091;'0991282017001', 187.5]\n&#091;'0992685549001', 21350.0]\n&#091;'1792040833001', 2331.795]\n&#091;'1790084949001', 1250.0]\n&#091;'1792232929001', 112.5]\n&#091;'1791249704001', 115.0]\n&#091;'1791909038001', 200.0]\n&gt;&gt;&gt; <\/code><\/pre>\n\n\n\n<p>2. \u00bfPodr\u00eda indicar los motivos por los cuales esta suma excede el 100%? \u00bfExiste duplicaci\u00f3n de registros por ejemplo?<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>duplicaci\u00f3n de registros,\nerrores en la escritura de los valores\nregistros por venta de acciones sin marcar el cambio de propietario<\/code><\/pre>\n\n\n\n<p>3. \u00bfPodr\u00eda solucionar el problema con la informaci\u00f3n disponible? De ser positiva la respuesta, desarrolle el procedimiento para realizarlo y muestre los resultados.<\/p>\n\n\n\n<p>Una vez determinadas las empresas, se presenta sus registros para analizar caso por caso<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# RETO ECONOMIA 03\n\n# Procesa los registros validos, que tengan todos los campos\n\n# narchivo = input('nombre del archivo: ')\nnarchivo = 'accionista_validado.txt'\nbuscado  = '0991317791001'\n\nleidos = 0\n# Abre archivos de trabajo\narchivo =  open(narchivo, 'r')\nacciones = &#x5B;]\n\n# l\u00ednea encabezado\nlinea  = archivo.readline()\npartes = linea.split(';')\n\n# columnas en cada registro\ncampos = len(partes) \nwhile not(linea==''):\n    linea  = archivo.readline()\n    leidos = leidos + 1\n    # linea = linea.strip('\\n')\n    partes = linea.split(';')\n    tamano = len(partes)\n    unruc  = partes&#x5B;0]\n    participa = partes&#x5B;4]\n    if unruc == buscado:\n        acciones.append(linea)\n    linea = archivo.readline()\n\narchivo.close()\nprint('El n\u00famero de accionistas de empresa encontrado es:')\nprint(len(acciones))\nprint(acciones)\n<\/pre><\/div>\n\n\n<p>con lo que se puede observar que:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>El n\u00famero de accionistas de empresa encontrado es:\n2\n&#091;'0991317791001;CENTRO DE ASESORAMIENTO Y SEGURIDAD EMPRESARIAL (CENASE) CIA. LTDA.;0701547267;ECUADOR;50.0000000000000000000000000\\n', '0991317791001;CENTRO DE ASESORAMIENTO Y SEGURIDAD EMPRESARIAL (CENASE) CIA. LTDA.;1715182604;ECUADOR;150.0000000000000000000000000\\n']\n&gt;&gt;&gt; \n<\/code><\/pre>\n\n\n\n<p>donde se ve que hay problemas en el registro del segundo accionista con 150%.<\/p>\n\n\n\n<p>se observa otro caso como ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>El n\u00famero de accionistas de empresa encontrado es:\n2\n&#091;'0990261431001;SERVISEGUROS S.A.;0901692822;ECUADOR;855.0000000000000000000000000\\n', '0990261431001;SERVISEGUROS S.A.;0991448012001;ECUADOR;45.0000000000000000000000000\\n']\n<\/code><\/pre>\n\n\n\n<p>donde se determina que el primer registro est\u00e1 fuera de rango.<br>se puede continuar con los otros casos.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p>Adicionalmente, varios de los accionistas est\u00e1n ubicados en jurisdicciones de menor imposici\u00f3n o para\u00edsos fiscales (paraisosfiscales.csv).<br>Con esta informaci\u00f3n adicional se pide:<\/p>\n\n\n\n<p>4. \u00bfCu\u00e1ntas empresas ecuatorianas tienen al menos un accionista en para\u00edsos fiscales?<\/p>\n\n\n\n<p>5. \u00bfCu\u00e1ntas empresas ecuatorianas tienen accionistas con m\u00e1s del 51% en para\u00edsos fiscales?<\/p>\n\n\n\n<p>6. Genere un ranking de empresas ecuatorianas con accionistas en para\u00edsos fiscales.<\/p>\n\n\n\n<p>7. \u00bfCu\u00e1l es el porcentaje de accionistas que est\u00e1n ubicados en para\u00edsos fiscales?<\/p>\n\n\n\n<p>8. Genere un gr\u00e1fico para mostrar la proporci\u00f3n del total de empresas con accionistas en para\u00edsos fiscales y aquellas que no.<\/p>\n\n\n\n<p>9. Genere otro gr\u00e1fico para mostrar la proporci\u00f3n de empresas \u00fanicamente con accionistas locales vs aquellas que tienen al menos un accionista extranjero.<\/p>\n\n\n\n<p>Finalmente, se le adjunta una base adicional con los sectores econ\u00f3micos (sectoreseconomicos.csv) a los cuales pertenecen de las empresas en Ecuador.<br>Con esa informaci\u00f3n:<\/p>\n\n\n\n<p>10. \u00bfQu\u00e9 sectores econ\u00f3micos son los que mayor cantidad de accionistas tienen en para\u00edsos fiscales? Genere un ranking de estos sectores.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Entregables<\/h3>\n\n\n\n<p>Subir en la direcci\u00f3n https:\/\/goo.gl\/_______ un archivo rar con el formato NombreGrupo_Paralelo.rar lo siguiente:<\/p>\n\n\n\n<p>1. C\u00f3digo utilizado para responder a las preguntas<\/p>\n\n\n\n<p>2. Una presentaci\u00f3n en Power Point de sus hallazgos para ser presentada en 5 min. Utilice gr\u00e1ficos descriptivos (barras, pastel, etc) para crear una buena presentaci\u00f3n.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\n<p><a href=\"#economia\">Econom\u00eda<\/a><\/p>\n\n\n\n<p><a href=\"#genetica\">Gen\u00e9tica<\/a><\/p>\n\n\n\n<p><a href=\"#robotica\">Rob\u00f3tica<\/a><\/p>\n\n\n\n<p><a href=\"#videojuegos\">Video Juegos<\/a><a name=\"economia\"><\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"genetica\">Retos 2017IIT Gen\u00e9tica<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: <a href=\"http:\/\/programacion.espol.edu.ec\/static\/media\/uploads\/reto_genetica_(3).pdf\">http:\/\/programacion.espol.edu.ec\/static\/media\/uploads\/reto_genetica_(3).pdf<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"385\" height=\"98\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/01\/Pyweekend01.png\" alt=\"Pyweekend banner\" class=\"wp-image-20978\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"217\" height=\"234\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/01\/Pyweekend01Genetica.png\" alt=\"Pyweekend01 banner Gen\u00e9tica\" class=\"wp-image-20981\" \/><\/figure>\n\n\n\n<p>En este desaf\u00edo usted trabajar\u00e1 con secuencias de ADN. <br>Puede consultar m\u00e1s informaci\u00f3n acerca del ADN, sobre c\u00f3mo est\u00e1 compuesto, y algunas otras consideraciones en el siguiente <a href=\"https:\/\/es.khanacademy.org\/science\/biology\/dna-as-the-genetic-material\/dna-discovery-and-structure\/a\/discovery-of-the-structure-of-dna\">link<\/a> .<\/p>\n\n\n\n<p>Es posible representar informaci\u00f3n acerca de los nucle\u00f3tidos del ADN representadas como texto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u201cCTCCCAAACCCAATGTGAACGTTA\u201d<\/code><\/pre>\n\n\n\n<p>Donde C: Citosina; T. Timina; A: Adenina; G: Guanina.<\/p>\n\n\n\n<p>Usted posee una colecci\u00f3n de archivos de ADN en formato FASTA. Una secuencia bajo formato FASTA comienza con una descripci\u00f3n en una \u00fanica l\u00ednea (l\u00ednea de cabecera), seguida por l\u00edneas de datos de secuencia.<\/p>\n\n\n\n<p>La l\u00ednea de descripci\u00f3n se distingue de los datos de secuencia por un s\u00edmbolo '&gt;' (mayor que) en la primera columna. La palabra siguiente a este s\u00edmbolo es el identificador de la secuencia, y el resto de la l\u00ednea es la descripci\u00f3n (ambos son opcionales). No deber\u00eda existir espacio entre el '&gt;' y la primera letra del identificador.<\/p>\n\n\n\n<p>Se recomienda que todas las l\u00edneas de texto sean menores de 80 caracteres. La secuencia termina si aparece otra l\u00ednea comenzando con el s\u00edmbolo '&gt;'; esto indica el comienzo de otra secuencia. Un ejemplo simple de una secuencia en el formato FASTA puede ser:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;cytochrome_b\nGCGTCGCAGCCCCNNACCAAGGCGCCCGCCGGAGGACCAACCAAAACTCTTTTTGTATACCCCCTCGCGGGTTTTTTATAATCTGAGCCTTCTCGGCGCCTCTCGTAGGCGTTTCGAAAATGAATCAAAACTTTCAACAACGGATCTCTTGGTTCTGGCATCGATGAAGAACGCAGCGAAATGCGATAAGTAATGTGAATTGCAGAATTCAGTGAATCATCGAATCTTTGAACGCACATTGCGCCCGCCAGTATTCTGGCGGGCATGCCTGTCCGAGCGTCATTTCAACCCTCGAACCCC<\/code><\/pre>\n\n\n\n<p>Un ejemplo de archivo FASTA con secuencias gen\u00e9ticas perteneciente a un ser humano se encuentra en <a href=\"https:\/\/goo.gl\/n1S8dN\">https:\/\/goo.gl\/n1S8dN<\/a> .<\/p>\n\n\n\n<p>Un investigador de BioIngenier\u00eda de la ESPOL, posee una base datos de Genes en Formato FASTA. Los archivos est\u00e1n ubicados en la siguiente direcci\u00f3n:<\/p>\n\n\n\n<p><a href=\"https:\/\/goo.gl\/PyeuaA\">https:\/\/goo.gl\/PyeuaA<\/a><\/p>\n\n\n\n<p>Este investigador necesita automatizar algunas tareas, las cuales se describen a continuaci\u00f3n:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Actividad 1<\/h3>\n\n\n\n<p>Se desea obtener un nuevo archivo con la secuencia original de la cadena gen\u00e9tica, la cadena reversa, la complementaria y la reversa complementaria.<\/p>\n\n\n\n<p>Para conocer c\u00f3mo realizar esta tarea, puede consultar informaci\u00f3n en internet. En los siguientes links ( <a href=\"http:\/\/www.biologia.arizona.edu\/molecular_bio\/problem_sets\/nucleic_acids\/08t.html\">link 1<\/a>, <a href=\"http:\/\/www.bioinformatics.nl\/molbi\/SCLResources\/sequence_notation.htm\">link 2<\/a>) puede encontrar alguna informaci\u00f3n \u00fatil.<\/p>\n\n\n\n<p>Ud debe realizar esto para todos los archivos de genes disponibles en el repositorio de Genes.<\/p>\n\n\n\n<p>Ejemplo del nuevo archivo Sample1_full.fasta :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;Sample1\nGGGGAAAAAAAATTTATATAT\n&gt;Sample1_complement\nCCCCTTTTTTTTAAATATATA\n&gt;Sample1_reverse\nTATATATTTAAAAAAAAGGGG\n&gt;Sample1_reverse_complement\nATATATAAATTTTTTTTCCCC<\/code><\/pre>\n\n\n\n<p><em>Fig. 1 Ejemplo de un archivo fasta con cadenas reversa, complementaria y reversa complementaria<\/em><\/p>\n\n\n\n<p>Puede encontrar un ejemplo de un archivo completo en <a href=\"https:\/\/goo.gl\/DAVUYa\">https:\/\/goo.gl\/DAVUYa<\/a> .<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Actividad 2<\/h3>\n\n\n\n<p>En la actualidad existen herramientas online que pueden identificar a qu\u00e9 especie de ser vivo pertenece una determinada cadena de un gen. El Centro Nacional para la Informaci\u00f3n Biotecnol\u00f3gica (NCBI) provee una interfaz para realizar esta tarea utilizando genes en formato FASTA a trav\u00e9s de su herramienta BLAST.<\/p>\n\n\n\n<p>BLAST (Basic Local Alignment Search Tool), posee una interfaz web que permite realizar identificaci\u00f3n de especies. Las siguientes im\u00e1genes describen el proceso:<\/p>\n\n\n\n<p>1. Copiar el gen de la cadena original del gen en formato FASTA. Ejm. Fig 2<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"780\" height=\"473\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/01\/PyweekendRetoGenetica01.png\" alt=\"Pyweekend Reto Gen\u00e9tica archivo en txt\" class=\"wp-image-20983\" \/><\/figure>\n\n\n\n<p><em>Fig 2. Ejemplo de un archivo fasta con un Gen desconocido<\/em><\/p>\n\n\n\n<p>2. Ir al sitio: <a href=\"https:\/\/blast.ncbi.nlm.nih.gov\/Blast.cgi\">https:\/\/blast.ncbi.nlm.nih.gov\/Blast.cgi<\/a><br>3. Seleccionar el link Nucleotide Blast<br>4. Pegar la cadena FASTA en el \u00e1rea de texto correspondiente. Ejem. Fig.3<br>5. Seleccionar el bot\u00f3n BLAST al final de la p\u00e1gina web<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"775\" height=\"411\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/01\/PyweekendRetoGenetica02.png\" alt=\"Pyweekend Reto Gen\u00e9tica sitio fuente\" class=\"wp-image-20984\" \/><\/figure>\n\n\n\n<p><em>Fig. 3 Interfaz de la herramienta BLAST de NCBI<\/em><\/p>\n\n\n\n<p>6. La p\u00e1gina se redirecciona, despu\u00e9s de algunos segundos, se muestra una pantalla como la de la figura 4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1053\" height=\"420\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/01\/PyweekendRetoGenetica03.png\" alt=\"Pyweekend Reto Gen\u00e9tica 03\" class=\"wp-image-20985\" \/><\/figure>\n\n\n\n<p>7. En el apartado de Descripci\u00f3n, existe una lista de las posibles especies que contengan el gen consultado en su c\u00f3digo gen\u00e9tico. En el ejemplo anterior se observa que la especie corresponde a Trichoderma Harzianum con una posible identidad del 100%.<\/p>\n\n\n\n<p>8. Si necesita observar un video detallado de todo el proceso descrito, lo puede observar en la siguiente direcci\u00f3n: <a href=\"https:\/\/goo.gl\/qWSoVJ\">https:\/\/goo.gl\/qWSoVJ<\/a> .<\/p>\n\n\n\n<p>El investigador desea conocer la lista de especies a la que pertenecen los genes de los que se tiene registros en archivos ubicados en <a href=\"https:\/\/goo.gl\/PyeuaA\">https:\/\/goo.gl\/PyeuaA<\/a> . Su tarea consiste en automatizar todo el proceso de b\u00fasqueda de identidad de especies a trav\u00e9s de BLAST. Se conoce de la existencia de una librer\u00eda llamada BioPython, la cual hace posible realizar la consulta BLAST a trav\u00e9s de este lenguaje de programaci\u00f3n. Para esta tarea, ud debe identificar las especies utilizando BLAST a trav\u00e9s de BioPython.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Actividad 3<\/h3>\n\n\n\n<p>Se desea contar con un diagrama de barras o pastel de la cantidad de Nucle\u00f3tidos (Timina, Adenina, Guanina, Citosina) de las cadenas pertenecientes a cada especie.<br>Colocar 3 ejemplos de estos gr\u00e1ficos en su presentaci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Entregables<\/h3>\n\n\n\n<p>Subir en la direcci\u00f3n <a href=\"https:\/\/goo.gl\/4j4Tjn\">https:\/\/goo.gl\/4j4Tjn<\/a> un archivo rar con el formato NombreGrupo_Paralelo.rar lo siguiente:<\/p>\n\n\n\n<p>1. C\u00f3digo utilizado y archivos generados.<br>2. Una presentaci\u00f3n en Power Point de sus hallazgos para ser presentada en 5 min.<\/p>\n\n\n\n<p>En la presentaci\u00f3n<br>\u25cf Explicar el algoritmo que utilizaron para utilizar Python y Blast.<br>\u25cf Mostrar los gr\u00e1ficos de la actividad 3.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\n<p><a href=\"#economia\">Econom\u00eda<\/a><\/p>\n\n\n\n<p><a href=\"#genetica\">Gen\u00e9tica<\/a><\/p>\n\n\n\n<p><a href=\"#robotica\">Rob\u00f3tica<\/a><\/p>\n\n\n\n<p><a href=\"#videojuegos\">Video Juegos<\/a><a name=\"economia\"><\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"robotica\">Retos 2017IIT Rob\u00f3tica<\/h2>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"385\" height=\"98\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/01\/Pyweekend01.png\" alt=\"Pyweekend banner\" class=\"wp-image-20978\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"228\" height=\"253\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/01\/Pyweekend01Robotica.png\" alt=\"Pyweekend 01 banner Rob\u00f3tica\" class=\"wp-image-20986\" \/><\/figure>\n\n\n\n<p><strong>Referencia<\/strong>: <a href=\"http:\/\/programacion.espol.edu.ec\/static\/media\/uploads\/reto_rob%C3%B3tica_(2).pdf\">http:\/\/programacion.espol.edu.ec\/static\/media\/uploads\/reto_rob%C3%B3tica_(2).pdf<\/a><br>El reto simula un cuarto de dimensiones 1200 x 700. <\/p>\n\n\n\n<p>Dentro del cuarto se encuentra un robot en la esquina inferior izquierda y una meta en la esquina superior derecha, tal como se muestra en la Figura 1.<\/p>\n\n\n\n<p>El objetivo del reto consiste en mover el robot desde su punto inicial hasta la meta, evitando los obst\u00e1culos que se puedan encontrar en el cuarto.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"662\" height=\"400\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/01\/PyweekendRetoRobotica01.png\" alt=\"Pyweekend Reto Rob\u00f3tica 01\" class=\"wp-image-20987\" \/><\/figure>\n\n\n\n<p><em>Figura 1. Ambiente de pruebas del reto.<\/em><\/p>\n\n\n\n<p>El robot tiene forma circular (di\u00e1metro = 51) y cuenta con los siguientes m\u00e9todos (funciones):<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Percepci\u00f3n<\/h3>\n\n\n\n<p><strong>robot.get_pos()<\/strong><\/p>\n\n\n\n<p>Retorna un tupla indicando la ubicaci\u00f3n del centro del robot dentro del cuarto, seg\u00fan el sistema de coordenadas de la Figura 2.<\/p>\n\n\n\n<p>Por ejemplo, en su posici\u00f3n inicial robot.get_pos() retorna: (35, 665).<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"722\" height=\"468\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/01\/PyweekendRetoRobotica02.png\" alt=\"Pyweekend Reto Rob\u00f3tica 02\" class=\"wp-image-20988\" \/><\/figure>\n\n\n\n<p><em>Figura 2. Sistema de Coordenadas<\/em><\/p>\n\n\n\n<p><strong>robot.get_angle()<\/strong><\/p>\n\n\n\n<p>Retorna el \u00e1ngulo en el que se encuentra orientado el robot. El robot puede retornar valores positivos o negativos dependiendo de hacia d\u00f3nde realiz\u00f3 el giro partiendo desde cero.<\/p>\n\n\n\n<p>El valor cero representa que el robot se encuentra orientado hacia arriba, a partir de esta posici\u00f3n se consideran como positivos los giros hacia la izquierda y como negativos los giros hacia la derecha (Figura 3). Los valores de \u00e1ngulo siempre se mantienen entre -360 y +360.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"833\" height=\"272\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/01\/PyweekendRetoRobotica03.png\" alt=\"Pyweekend Reto Rob\u00f3tica 03\" class=\"wp-image-20989\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"835\" height=\"267\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/01\/PyweekendRetoRobotica03a.png\" alt=\"Pyweekend Reto Rob\u00f3tica 03a\" class=\"wp-image-20990\" \/><\/figure>\n\n\n\n<p><a href=\"http:\/\/blog.espol.edu.ec\/ccpg1001\/files\/2018\/07\/PyweekendRetoRobotica03a.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5577\" src=\"http:\/\/blog.espol.edu.ec\/ccpg1001\/files\/2018\/07\/PyweekendRetoRobotica03a.png\" alt=\"\" width=\"835\" height=\"267\"><\/a><br><em>Figura 3. Valor de \u00e1ngulo del robot cuando realiza: <\/em><em>giro a la derecha (fila superior), giro a la izquierda (fila inferior)<\/em><\/p>\n\n\n\n<p><strong>robot.get_collision()<\/strong><\/p>\n\n\n\n<p>Retorna un valor booleano que indica si el robot ha chocado contra alg\u00fan obst\u00e1culo.<\/p>\n\n\n\n<p><strong>robot.read_sensors()<\/strong><\/p>\n\n\n\n<p>El robot consta de un anillo de sonares que le permiten conocer la distancia a los objetos en su ambiente. El anillo se sonares est\u00e1 compuesto por 13 sensores de distancia ubicados cada 15 grados, comenzando desde la izquierda del robot y finalizando a la derecha. El m\u00e1ximo alcance de cada sensor es de 200.<\/p>\n\n\n\n<p>El m\u00e9todo read_sensors() retorna una lista con los valores de cada uno de los sensores. Por ejemplo, para el robot de la Figura 4, robot.read_sensors() retorna [170, 175, 195, 200, 200, 200, 200, 200, 200, 200, 115, 135, 200]<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"564\" height=\"321\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/01\/PyweekendRetoRobotica04.png\" alt=\"Pyweekend Reto Rob\u00f3tica 04\" class=\"wp-image-20991\" \/><\/figure>\n\n\n\n<p><em>Figura 4. Lectura de sonares del robot<\/em><\/p>\n\n\n\n<p><strong>robot.get_traces()<\/strong><\/p>\n\n\n\n<p>Retorna una lista de tuplas con las posiciones recorridas por el robot. En la Figura 5 se representa esta lista por medio de puntos en azul.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"277\" height=\"271\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/01\/PyweekendRetoRobotica05.png\" alt=\"Pyweekend Reto Rob\u00f3tica 05\" class=\"wp-image-20992\" \/><\/figure>\n\n\n\n<p><em>Figura 5. Recorrido del robot (traces)<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Actuadores<\/h3>\n\n\n\n<p>En el reto se simula a un robot de manejo diferencial (2 motores, uno de cada lado) sin embargo se ha limitado el control de los motores, por lo cual el movimiento del robot se puede realizar por medio de 2 funciones solamente.<\/p>\n\n\n\n<p><strong>robot.spin(r_step_theta)<\/strong><\/p>\n\n\n\n<p>Permite girar al robot un n\u00famero de grados determinados a partir de su orientaci\u00f3n actual. Si el par\u00e1metro es negativo, el robot girar\u00e1 hacia la derecha (horario), y si es positivo girar\u00e1 hacia la izquierda (anti horario).<\/p>\n\n\n\n<p>La variable <code>global r_step_theta<\/code> tiene un valor por defecto de 7.5 grados.<\/p>\n\n\n\n<p><strong>robot.move_fwd()<\/strong><\/p>\n\n\n\n<p>Permite mover al robot hacia adelante (en la orientaci\u00f3n a la cual se encuentra actualmente). El robot se desplazar\u00e1 5 unidades en la pantalla.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Implementaci\u00f3n de la soluci\u00f3n<\/h3>\n\n\n\n<p>Al iniciar el reto se proveer\u00e1 a su equipo de un c\u00f3digo que carga la simulaci\u00f3n y un ambiente de prueba.<\/p>\n\n\n\n<p>Su misi\u00f3n es implementar la funci\u00f3n start() que se encarga de mover el robot para que logre llegar a la meta.<\/p>\n\n\n\n<p>El programa se detendr\u00e1 autom\u00e1ticamente cuando el robot alcance la meta y llamar\u00e1 a la funci\u00f3n report().<\/p>\n\n\n\n<p>En la funci\u00f3n report, su equipo puede almacenar todos los datos que crea necesarios para ser utilizados en la exposici\u00f3n de su respuesta. Adem\u00e1s, puede realizar optimizaciones de la ruta generada.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"757\" height=\"146\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/01\/PyweekendRetoRobotica06.png\" alt=\"Pyweekend Reto Rob\u00f3tica 06\" class=\"wp-image-20993\" \/><\/figure>\n\n\n\n<p>En la exposici\u00f3n de la soluci\u00f3n se requiere que se describa el algoritmo que utilizaron para lograr el objetivo y que muestren una gr\u00e1fica del camino que el robot debe seguir para llegar a la meta en base a la ejecuci\u00f3n de su programa.<\/p>\n\n\n\n<p>La meta se encuentra en las coordenadas (1150,20).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00f3digo del Proyecto<\/h3>\n\n\n\n<p>El c\u00f3digo para ejecutar el simulador del robot lo puede encontrar en: <a href=\"https:\/\/goo.gl\/FzkFmi\">https:\/\/goo.gl\/FzkFmi<\/a> .<\/p>\n\n\n\n<p>Para ejecutarlo, previamente debe tener instalado Pygame. Si no lo tiene instalado en su m\u00e1quina, por favor instalarlo utilizando el siguiente comando: <strong>pip install pygame<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Entregables<\/h3>\n\n\n\n<p>Subir en la direcci\u00f3n https:\/\/goo.gl\/QCexV4 un archivo rar con el formato NombreGrupo_Paralelo.rar lo siguiente:<\/p>\n\n\n\n<p>1. C\u00f3digo utilizado<\/p>\n\n\n\n<p>2. Una presentaci\u00f3n visual para ser presentada en 5 min (Ejm: Power Point). Esta presentaci\u00f3n, adem\u00e1s de la descripci\u00f3n del algoritmo que present\u00f3, debe incluir:<\/p>\n\n\n\n<p>a. Capturas de 2 escenarios en los que se utiliza su algoritmo (traces y tiempo).<\/p>\n\n\n\n<p>En la presentaci\u00f3n Adem\u00e1s de lo solicitado, realizar una demo del robot simulado utilizando su algoritmo.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\n<p><a href=\"#economia\">Econom\u00eda<\/a><\/p>\n\n\n\n<p><a href=\"#genetica\">Gen\u00e9tica<\/a><\/p>\n\n\n\n<p><a href=\"#robotica\">Rob\u00f3tica<\/a><\/p>\n\n\n\n<p><a href=\"#videojuegos\">Video Juegos<\/a><a name=\"economia\"><\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"videojuegos\">Retos 2017IIT Video Juegos<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: <a href=\"http:\/\/programacion.espol.edu.ec\/static\/media\/uploads\/reto_videjuegos_(2).pdf\">http:\/\/programacion.espol.edu.ec\/static\/media\/uploads\/reto_videjuegos_(2).pdf<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"385\" height=\"98\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/01\/Pyweekend01.png\" alt=\"Pyweekend banner\" class=\"wp-image-20978\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"330\" height=\"220\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/01\/Pyweekend01Videojuegos.png\" alt=\"Pyweekend 01 Videojuegos\" class=\"wp-image-20994\" \/><\/figure>\n\n\n\n<p>Ud posee una versi\u00f3n de Super Mario Bros. implementada en Pygame. <\/p>\n\n\n\n<p>EL c\u00f3digo se lo puede descargar en <a href=\"https:\/\/goo.gl\/8xvKgZ\">https:\/\/goo.gl\/8xvKgZ<\/a> .<\/p>\n\n\n\n<p>Esta versi\u00f3n de Mario en Python muestra el primer mundo de este juego cl\u00e1sico.<\/p>\n\n\n\n<p>Para que este demo funcione, ud debe instalar Pygame previamente.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"920\" height=\"354\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/01\/PyweekendRetoVideojuego01.png\" alt=\"Pyweekend Reto Videojuego 01\" class=\"wp-image-20995\" \/><\/figure>\n\n\n\n<p>Su tarea para este reto consiste en:<\/p>\n\n\n\n<p>1. Modernizar la apariencia de los personajes del juego (Mario, Goomba, etc). Pues esta versi\u00f3n cuenta con la apariencia de los personajes tradicionales. Para realizar esta tarea, considere el concepto de Sprite Templates ( link ).<\/p>\n\n\n\n<p>2. Modificar el mundo de Mario. Es decir, crear nuevos obst\u00e1culos, colocar enemigos en nuevos lugares. No existen limitantes al respecto, puede crear el mundo que ud considere m\u00e1s divertido.<\/p>\n\n\n\n<p>La evaluaci\u00f3n de este reto, tomar\u00e1 en cuenta \u00b4la creatividad de su grupo en el dise\u00f1o del mundo y la actualizaci\u00f3n de los personajes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Entregables<\/h3>\n\n\n\n<p>Subir en la direcci\u00f3n https:\/\/goo.gl\/ywTNPq un archivo rar con el formato NombreGrupo_Paralelo.rar lo siguiente:<\/p>\n\n\n\n<p>1. C\u00f3digo desarrollado.<\/p>\n\n\n\n<p>2. Una presentaci\u00f3n visual r\u00e1pida de 2min de lo m\u00e1s relevante que modific\u00f3 o a\u00f1adi\u00f3 al c\u00f3digo.<\/p>\n\n\n\n<p>Nota: En la presentaci\u00f3n de su soluci\u00f3n Ud. debe mostrar una demo del juego.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\n<p><a href=\"#economia\">Econom\u00eda<\/a><\/p>\n\n\n\n<p><a href=\"#genetica\">Gen\u00e9tica<\/a><\/p>\n\n\n\n<p><a href=\"#robotica\">Rob\u00f3tica<\/a><\/p>\n\n\n\n<p><a href=\"#videojuegos\">Video Juegos<\/a><a name=\"economia\"><\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>Econom\u00eda Gen\u00e9tica Rob\u00f3tica Video Juegos Retos 2017IIT Econom\u00eda Propuesta de soluci\u00f3n, usando conceptos b\u00e1sicos. Referencia: http:\/\/programacion.espol.edu.ec\/static\/media\/uploads\/reto_econom%C3%ADa_enero_2018_.pdf Usted cuenta con una base de datos de accionistas que ha sido proporcionada por un organismo de control ecuatoriano https:\/\/goo.gl\/5kD5A2 . Esta base contiene informaci\u00f3n relacionada con la participaci\u00f3n accionaria (local y extranjera) de empresas radicadas en el Ecuador. [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"wp-custom-template-entrada-fp-unidades","format":"standard","meta":{"footnotes":""},"categories":[109],"tags":[],"class_list":["post-24428","post","type-post","status-publish","format-standard","hentry","category-fp-u08"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/24428","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=24428"}],"version-history":[{"count":1,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/24428\/revisions"}],"predecessor-version":[{"id":24429,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/24428\/revisions\/24429"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=24428"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=24428"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=24428"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}