{"id":1943,"date":"2016-02-02T17:15:56","date_gmt":"2016-02-02T22:15:56","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/icm00794\/?p=1943"},"modified":"2026-04-05T18:37:41","modified_gmt":"2026-04-05T23:37:41","slug":"s3eva2015tii_t4-orientar-codigo-qr-quick-response-code","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-s3eva20\/s3eva2015tii_t4-orientar-codigo-qr-quick-response-code\/","title":{"rendered":"s3Eva2015TII_T4 Orientar c\u00f3digo QR (Quick Response Code)"},"content":{"rendered":"\n<p><em><strong>Ejercicio<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-3eva20\/3eva2015tii_t4-orientar-codigo-qr-quick-response-code\/\" data-type=\"post\" data-id=\"2693\">3Eva2015TII_T4 Orientar c\u00f3digo QR (Quick Response Code)<\/a><\/p>\n\n\n\n<p>Propuesta de soluci\u00f3n en <strong>Python<\/strong> para 3ra Eva. II T\u00e9rmino 2015 Tema 3 y 4.<\/p>\n\n\n\n<p>Los archivos para probar el algoritmo son:<\/p>\n\n\n\n<p><a href=\"https:\/\/www.dropbox.com\/s\/pta5iuzn7j5b39q\/codigoQR.txt?dl=0\">codigoQR.txt<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.dropbox.com\/s\/pf3art4dk3nblax\/referenciaQR.txt?dl=0\">referenciaQR.txt<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Algoritmo en Python<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# ICM00794-Fundamentos de Computaci\u00f3n - FCNM-ESPOL\n# 3Eva_IIT2015_T3 funciones matrices rotar, extraer\n# propuesta: edelros@espol.edu.ec\n# version con lazos y condicionales. \n# tarea: simplificar lazos con 'for'\n\nimport numpy as np\n\n# Tema 3 a)\ndef rotando(matriz,k):\n\n    #cuenta rotaciones\n    cuenta = 0    \n    while not(cuenta&gt;=k):\n        n,m = matriz.shape \n        tabla = numpy.zeros(shape=(m,n),dtype=int)\n\n        # inicia rotaci\u00f3n\n        i = 0 \n        while not(i&gt;=n):\n            j = 0\n            while not(j&gt;=m):\n                f = j\n                c = (n-1)-i\n                tabla&#x5B;f,c] = matriz&#x5B;i,j]\n                j = j + 1\n            i = i + 1\n        \n        matriz = np.copy(tabla)\n        cuenta = cuenta + 1\n    return(matriz)\n\n# Tema 3 b) funcion para extraer una esquina \n# de tama\u00f1o t de una matriz\n# k=0 ;esquina superior izquierda \n# k=1 ;esquina superior derecha\n# k=3 ;esquina inferior izquierda \n# k=2 ;esquina inferior derecha\n\ndef extraeresquina(matriz,k,t):\n    n,m = matriz.shape\n    esquina = np.zeros(shape=(t,t), dtype=int)\n    i = 0\n    while not(i&gt;=t):\n        j = 0\n        while not(j&gt;=t):\n            if (k==0):\n                f = i\n                c = j\n            if (k==1):\n                f = i\n                c = (m-t)+j\n            if (k==2):\n                f = (n-t)+i\n                c = (m-t)+j\n            if (k==3):\n                f = (n-t)+i\n                c = j\n            esquina&#x5B;i,j]=matriz&#x5B;f,c]\n            j = j+1\n        i = i+1   \n    return(esquina)\n\n# Tema 4 ------------------------------\n\n# Programa para orientar el codigo QR\n\n# INGRESO por lectura desde un archivo\ncodigo     = np.loadtxt('codigo.txt',dtype=int)\nreferencia = np.loadtxt('referencia.txt',dtype=int)\n\n# PROCEDIMIENTO\n\n# comparando c\u00f3digo y esquinas de referencia\n# resultados por esquina\nt,r = referencia.shape\ncompara = np.zeros(4, dtype=int) \n\n#compara esquinas\nk = 0  \nwhile not(k&gt;=4):\n    esquina    = extraeresquina(codigo,k,t)\n    esqgirada  = rotando(referencia,k)\n    compara&#x5B;k] = np.array_equal(esquina,esqgirada)\n    k = k + 1\n    \n# Selecciona la rotacion\nif (compara&#x5B;0]==1 and compara&#x5B;1]==1\n    and compara&#x5B;2]==0 and compara&#x5B;3]==1):\n    orientado = rotando(codigo,0)\n    \nif (compara&#x5B;0]==1 and compara&#x5B;1]==0\n    and compara&#x5B;2]==1 and compara&#x5B;3]==1):\n    orientado = rotando(codigo,1)\n    \nif (compara&#x5B;0]==0 and compara&#x5B;1]==1\n    and compara&#x5B;2]==1 and compara&#x5B;3]==1):\n    orientado = rotando(codigo,2)\n    \nif (compara&#x5B;0]==1 and compara&#x5B;1]==1\n    and compara&#x5B;2]==1 and compara&#x5B;3]==0):\n    orientado = rotando(codigo,3)\n\n# SALIDA\nprint(orientado)\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 3Eva2015TII_T4 Orientar c\u00f3digo QR (Quick Response Code) Propuesta de soluci\u00f3n en Python para 3ra Eva. II T\u00e9rmino 2015 Tema 3 y 4. Los archivos para probar el algoritmo son: codigoQR.txt referenciaQR.txt Algoritmo 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":[143],"tags":[58,157],"class_list":["post-1943","post","type-post","status-publish","format-standard","hentry","category-fp-s3eva20","tag-ejemplos-python","tag-fundamentos-programacion"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1943","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=1943"}],"version-history":[{"count":4,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1943\/revisions"}],"predecessor-version":[{"id":23771,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1943\/revisions\/23771"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=1943"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=1943"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=1943"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}