{"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-09-25T14:14:54","modified_gmt":"2026-09-25T19:14:54","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<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>Incluye en la soluci\u00f3n a las respuestas del Tema 1 y Tema 2 para simplificar el algoritmo.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; first-line: 79; title: ; notranslate\" title=\"\">\nsolucion = original(tamano)\ntablero = desordena(tamano)\n<\/pre><\/div>\n\n\n<p>Se empieza solicitando indicar el n\u00famero de la ficha a mover en el tablero,<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"437\" height=\"335\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2014\/11\/rompecabezaDesliza01.jpg\" alt=\"rompecabezas fichas num\u00e9ricas deslizante\" class=\"wp-image-21934\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: plain; first-line: 85; title: ; notranslate\" title=\"\">\n    ficha = int(input('\u00bfFicha a mover?: '))\n    dondeficha = ubica(tablero,tamano,ficha)\n    dondecero = ubica(tablero,tamano,0)\n<\/pre><\/div>\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt; resolver\n\u00bfTama\u00f1o del tablero?: 3\n Turno: 1\n8 2 6\n5 4 0\n1 7 3\n\u00bfFicha a mover?:5\nTurno: 2\n8 2 6\n0 4 5\n1 7 3\n\u00bfFicha a mover?:8<\/code><\/pre>\n\n\n\n<p>con lo que se puede encontrar la fila y columna donde se encuentra la ficha y donde est\u00e1 la posici\u00f3n vac\u00eda.<\/p>\n\n\n\n<p>Si la filas o columnas se comparten entre <code><strong>dondeficha<\/strong><\/code> y <strong><code>dondecero<\/code><\/strong> de puede mover la ficha por fila o columna.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: plain; first-line: 89; title: ; notranslate\" title=\"\">\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<\/pre><\/div>\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\n<p>Al unir los componentes se tiene como resultado:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><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 en la soluci\u00f3n a las respuestas del Tema 1 y Tema 2 para simplificar el algoritmo. Se empieza solicitando indicar el n\u00famero de la ficha a mover en el tablero, con lo que se puede encontrar la fila y columna donde se encuentra la ficha y donde est\u00e1 la [&hellip;]<\/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":8,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1629\/revisions"}],"predecessor-version":[{"id":26034,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1629\/revisions\/26034"}],"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}]}}