{"id":1629,"date":"2014-11-09T16:55:25","date_gmt":"2014-11-09T21:55:25","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/icm00794\/?p=1629"},"modified":"2026-04-05T18:18:58","modified_gmt":"2026-04-05T23:18:58","slug":"s3eva2010tii_t3-juego-de-rompecabezas","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-s3eva10\/s3eva2010tii_t3-juego-de-rompecabezas\/","title":{"rendered":"s3Eva2010TII_T3 Juego de rompecabezas"},"content":{"rendered":"\n<p><em><strong>Ejercicio<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-3eva10\/3eva2010tii_t3-juego-de-rompecabezas\/\" data-type=\"post\" data-id=\"2611\">3Eva2010TII_T3 Juego de Rompecabezas<\/a><\/p>\n\n\n\n<p>Incluye respuestas del tema 1 y Tema 2<\/p>\n\n\n\n<p>Propuesta de soluci\u00f3n en <strong>Python<\/strong>:<\/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_IIT2010_T3 Rompecabezas, desordena y ubica\n# Tarea: identificar donde se podr\u00e1 usar lazo &quot;for&quot;\n# opcional, el tama\u00f1o de matriz nxm se puede obtener con\n# numpy.shape(matriz) y se obtiene un arreglo con n y m\n\nimport numpy\nimport random\n\n# Tema 1. funcion desordena(n)\n# dado el tama\u00f1o de matriz cuadrada, pone numeros aleatorios\n# No repetidos entre 0 y n*n-1\ndef desordena(n):\n    matriz = numpy.zeros(shape=(n,n), dtype=int)\n    numero = 1\n    maximo = n*n-1\n    while not(numero&gt;maximo):\n        fila = int(random.random()*n)+0\n        columna = int(random.random()*n)+0\n        if (matriz&#x5B;fila,columna]==0):\n            matriz&#x5B;fila,columna]=numero\n            numero = numero+1\n    return(matriz)\n\n# Tema 2. ubica un numero k en la matriz de nxn\ndef ubica(matriz,n,k):\n    donde = numpy.zeros(2, dtype=int)\n    encontre = 0\n    fila = 0\n    while not(fila&gt;=n or encontre==1):\n        columna = 0\n        while not(columna&gt;=n or encontre==1):\n            if (matriz&#x5B;fila,columna]==k):\n                encontre = 1\n                donde&#x5B;0] = fila\n                donde&#x5B;1] = columna\n            columna = columna+1\n        fila = fila+1\n    return(donde)\n\n# funcion matrizigual, compara dos matrices A y B\n# de igual tamano nxn\ndef matrizigual(A,B,n):\n    resuelto = 1\n    fila = 0\n    while not(fila&gt;=n or resuelto==0):\n        columna = 0\n        while not(columna&gt;=n or resuelto==0):\n            if (A&#x5B;fila,columna]!=B&#x5B;fila,columna]):\n                resuelto = 0\n            columna = columna+1\n        fila = fila+1\n    return(resuelto)\n\n# funcion solucion del rompecabeza\n# Usado para comparar con la solucion\ndef original(n):\n    matriz = numpy.zeros(shape=(n,n), dtype=int)\n    numero = 1\n    fila = 0\n    while not(fila&gt;=n):\n        columna = 0\n        while not(columna&gt;=n):\n            matriz&#x5B;fila, columna] = numero\n            numero = numero+1\n            columna = columna+1\n        fila = fila+1\n    matriz&#x5B;n-1,n-1] = 0\n    return(matriz)\n\n\n# Tema 3. Juego del Rompecabeza\n# Programa para jugar el Rompecabeza\n\ntamano = int(input('\u00bfTama\u00f1o del tablero?: '))\n\nresuelto = 0\nturno = 1\nsolucion = original(tamano)\ntablero = desordena(tamano)\n\nwhile not(resuelto==1):\n    print(turno)\n    print(tablero)\n    ficha = int(input('\u00bfFicha a mover?: '))\n    dondeficha = ubica(tablero,tamano,ficha)\n    dondecero = ubica(tablero,tamano,0)\n\n    if (dondeficha&#x5B;0]==dondecero&#x5B;0] or dondeficha&#x5B;1]==dondecero&#x5B;1]):\n        temporal = ficha\n        tablero&#x5B;dondeficha&#x5B;0],dondeficha&#x5B;1]] = 0\n        tablero&#x5B;dondecero&#x5B;0],dondecero&#x5B;1]] = temporal\n    turno = turno+1\n    if (matrizigual(tablero,solucion,tamano)==1):\n        resuelto = 1\n        print('Ganaste...! ')\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 3Eva2010TII_T3 Juego de Rompecabezas Incluye respuestas del tema 1 y Tema 2 Propuesta de soluci\u00f3n en Python: 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":[138],"tags":[58,157],"class_list":["post-1629","post","type-post","status-publish","format-standard","hentry","category-fp-s3eva10","tag-ejemplos-python","tag-fundamentos-programacion"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1629","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=1629"}],"version-history":[{"count":4,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1629\/revisions"}],"predecessor-version":[{"id":23713,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1629\/revisions\/23713"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=1629"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=1629"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=1629"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}