Constellation Knowledge Network - Preguntas y respuestas sobre Bagua - ¿Cómo aplicar el cálculo iterativo de Excel? No tengo ninguna idea sobre esto en este momento.

¿Cómo aplicar el cálculo iterativo de Excel? No tengo ninguna idea sobre esto en este momento.

Cómo usar Excel para cálculos iterativos

Cómo usar Excel para cálculos iterativos

Como todos sabemos, el Sudoku es un rompecabezas de lógica (me obsesioné completamente con él hace tres años) que requiere que coloques los números del 1 al 9 en una cuadrícula de acuerdo con ciertas reglas (puedes encontrar más información sobre el Sudoku en línea).

Mientras era investigador en el equipo de Excel, Coridan escribió que la hoja de cálculo utilizaba fórmulas de Excel para resolver Sudoku y la puso a disposición en línea (aquí). Las hojas de cálculo de Dan son geniales y se resuelven con muchos videojuegos. No utiliza VBA ni otros scripts para resolver el problema, sino que se basa en Excel con sus capacidades de cálculo iterativo. Es muy bueno y se ha convertido en una descarga popular, pero hay una cosa acerca de la hoja de cálculo que me gustaría ver si puedo mejorar lo compleja que es en realidad. De hecho, cada celda tenía su propia fórmula diferente y terminó teniendo que usar fórmulas creadas por VBA porque VBA, que mantiene y depura, no escribe todas estas fórmulas diferentes y no es posible una forma automática.

Al mirar la hoja de cálculo de Dan, siento que mi propia versión del solucionador de Sudoku no solo se usa para resolver fórmulas, sino también donde las fórmulas son relativamente comprensibles. Hay varias fórmulas únicas. No hace falta decir que esto se ha vuelto difícil de configurar, pero creo que aprendí mucho sobre cómo probar diferentes enfoques para crear un modelo iterativo como este que funcione bien y al mismo tiempo se mantenga y comprenda razonablemente. Me parece que incluso podría haber una forma razonablemente beneficiosa de aprender fórmulas abstractas que tenga en cuenta el lenguaje de fórmulas de Excel. Tenía la intención de escribir un blog sobre el proceso de creación de esta hoja de cálculo y cómo usar fórmulas iterativas para demostrar el poder del lenguaje de fórmulas de Excel, porque muestra referencias circulares útiles y cálculos iterativos, y porque pensé que sería genial hacer eso aquí Ser innecesario es algo muy interesante. Mucha gente ha creado solucionadores más potentes, muchas hojas de cálculo, algunas simplemente usando fórmulas, pero quería intentar explicar cómo crear una solución y, con suerte, compartir algunas fórmulas que la gente encontrará útiles.

Requisitos previos

Crear una hoja de cálculo para resolver Sudoku no es una hoja de cálculo de nivel básico. Además de buenas fórmulas, también es necesario comprender el concepto de iteración. Chris ya ha hecho un excelente trabajo explicando este tema en su publicación anterior sobre la iteración y el juego de la vida de Conway, así que en lugar de repetirme, simplemente asumiré que ya entiendes la iteración. En segundo lugar, tuvimos que usar ámbitos con nombres en gran medida y, para hacer algunas cosas por mí, el nuevo administrador de nombres fue muy beneficioso (consulte Mejoras en la construcción de fórmulas, Parte 4: Definición de los nombres de algunos libros relacionados) y tuve que asumir el trabajo y conocimiento común de ámbitos con nombres (pero tengo que demostrar algunas habilidades que pueden ser nuevas fórmulas empíricas, incluso para los usuarios). Finalmente, debes estar al menos familiarizado con la notación de matrices en Excel.

Establecer un comité de auditoría

Para aquellos que no han perdido, voy a empezar a construir una serie de placas base, realmente espero usarlas en Danke: una inversión en placa 9x9, una solución de tableros de 9x9, valor posible de 27x27 tableros por caja. Hago esto cambiando la altura de las filas, el ancho de las columnas, las fuentes, la escala, etc. Todas las celdas son cuadrados pequeños, luego uso bordes y relleno para obtener el siguiente resultado:

El tablero de entrada y solución sensible es muy intuitivo (el tablero de entrada está en la esquina superior izquierda, donde puedes ingresar una solución por resolver) rompecabezas, la solución es la respuesta correcta que el tablero quiere mostrar). La placa podría valer la pena. Llamé a la oficina de RMS, pero fue un poco problemático. Esto es 27x27 porque cada caja se coloca en una celda de 3x3 en el tablero RMS y se resuelve con ella. Si cada 9 celdas representa un número del 1 al 9 sigue siendo el valor real de la solución correspondiente, el rango de valores posibles para la celda de entrada/solución en una celda específica está todo en una "celda grande" de 3 × 3, es decir no en blanco Colección de números. De lo contrario, el propósito/uso de este comité debería quedar claro más adelante. Ahora, llenemos cada celda grande de arriba con todos los valores posibles a partir de las 8:59.

Rellenar la Oficina de Valor Válido

Queremos rellenar los distintos números del 1 al 9 creando una única fórmula. Sobre esta base, ubique la fórmula de la columna continua y luego agregaremos espacios en blanco lógicos con números no válidos. Esta fórmula es un poco más complicada que una fórmula típica en una hoja de cálculo, por lo que primero desglosaré la fórmula completa. Esto se ve así:

=mod(column(A1)-1,3)+1+mod(column(A1)-1,3)*3

Cuando esto es al ingresar la celda RMS office en la esquina superior izquierda, se carga todo el RMS office, lo que hace que el resultado sea el siguiente:

Ten en cuenta que lo que tienes que hacer es pegar la fórmula especial fórmula o CTRL | entrada, de lo contrario arruinará todo el buen formato.

Rompiendo esta fórmula, filas y columnas devuelven (du) una referencia a la fila o columna y les pasan alguna. Por estas funciones del cuadro A1, porque en esta fórmula, significa que nos van a dar un número comenzando con el aumento. La fórmula de la primera parte utiliza la función modular para convertir la columna numérica en números del 0 al 2, luego suma 1 para obtener del 1 al 3.

Para hacer esto, sumamos un 0, 3 o 6, determinando el número de fila en función del resultado de la función de módulo utilizada por la función de fila.

En segundo lugar, debido a que es un poco como una fórmula retorcida y vamos a tener que usarla en todas partes, tomaremos prestada esta fórmula y la sacaremos de la celda y la colocaremos en un rango con nombre. Esto nos permite abstraer todas las fórmulas lógicas en un nombre simple y comprensible. A falta de un nombre mejor, lo llamaré "One Keto Base" y tendré exactamente la misma fórmula que acabamos de establecer. Dado que el contexto de las referencias relativas (es decir, si son la celda actual) se compone de la celda en la que se encontraba cuando creó el rango con nombre, inicialmente seleccione la celda A1 y luego cree el nuevo rango con nombre para que su fórmula se use en todo momento. Es muy importante que el balance sea válido.

Por eso colocamos todas las tablas alrededor del fregadero en tres filas y tres columnas.

Ahora podemos poner nuestro nuevo nombre en el buró para probar, así:

Presionar CTRL+ aquí es la forma más fácil de establecer los valores válidos para todas las celdas del método de fórmula. Primero, seleccione todo el juego y luego ingréselo en la fórmula. Sin presionar teclas, simplemente presione Ctrl+Enter dos veces para completar todas las celdas que acaba de ingresar en la fórmula (no confunda sus formatos).

Construir una oficina de liquidación

Consideraremos el RMS básico dejando un cuadro y cómo se ve nuestra solución actual (en lugar de escribir), pero para hacer esto, necesitamos algo para arreglar el tablero. Al menos en primer lugar, la solución contendrá seguramente todas las cajas de la oficina de insumos. Haga esto primero de la manera más sencilla, para captar la situación en blanco. En el Panel de soluciones, hagamos que todas las celdas sean iguales y usemos referencias relativas en el panel de entrada de celda correspondiente, a menos que la celda de entrada esté vacía. La forma más sencilla es utilizar la siguiente fórmula (en la tabla que se muestra, esta sería la celda D16):

= If(MUEBLES MUEBLES, MUEBLES MUEBLES, "")

Nuevamente, use Ctrl+Enter para llenar las celdas apropiadas. Ahora tenemos las bases para hacer que nuestro uso de ámbitos con nombre sea más reutilizable y significativo.

Al igual que nuestro nombre onetonine, dejemos que el concepto abstracto se refiera a cualquier solución que se introduzca correctamente en la celda desde la celda, lo que convierte al comité en un nombre. Necesitamos hacer algo así para todos los tableros en algún momento, así que comenzaremos a hacer rangos de nombres para cada tablero (elegí in_board, sol_board, val_board) y luego desbloquearemos los tableros (in_cell_from_sol) en un tablero de entrada de nombre, simple = ¡principal! Clase D4, luego use esta fórmula de cambio = if (in_cell_from_sol, in_cell_from_sol, " "). Tenga en cuenta que esto requiere un D16.

Por supuesto, hasta ahora simplemente hemos hecho que nuestra fórmula desaparezca, pero créeme, este concepto se ha convertido en una rutina viva. Lo único que es un poco problemático es hacer la misma unidad RMS y resolver la unidad de placa. El nombre de sol_cell_from_val es:

= index(sol_board, break((column(main!A1)-1)/3) 1, break((column(main!A1)-1)/3) +1 )

Esto debe estar determinado por el P4 de la celda. En esta fórmula, las coordenadas convertidas de la celda actual en la ronda 27x27 se colocan en el tablero de 9x9 usando operadores e INT, y luego el índice se usa para obtener las coordenadas correspondientes a la celda sol_board.

La forma de probar estas dos fórmulas es hacer clic en el Administrador de nombres en el cuadro Referencias de la Oficina RMS de una unidad diferente. Dependiendo de en qué celda te encuentres, verás "hormigas danzantes" (protuberancias en movimiento) de diferentes celdas: la celda quiere la solución correspondiente.

Ahora que hay algunos conceptos básicos que nos ayudarán a resolver un rompecabezas real, consulte cómo permitir que la entrada se difunda hacia el tablero de solución y el RMB. Esto es confuso, lo ingresaremos usando:

El tablero de soluciones debería verse así. Para que la raíz cuadrática media funcione, usamos la siguiente fórmula para todas las celdas de placa válidas:

= If (sol _ cell _ from _ val

Esto significa que las celdas de memoria existentes son El valor presente está enmascarado si la celda se resuelve y el valor no es el valor unario actual.

Esto le dará:

Ahora estamos listos para hacer algo que realmente ayude. Se trata de encontrar soluciones basadas en las reglas y estrategias del juego.

Consulta las soluciones de algunas líneas.

La regla principal del juego es que en cualquier fila. , columna o cuadro de 3x3, No puede haber dos números iguales Empezaremos agregando la regla de que no puede haber más de un número en ninguna fila y luego en las columnas y el cuadro grande, por ejemplo, en. la segunda celda grande en la primera fila 4, 2, 7 o 9 puede no deberse a esta regla. Podríamos hacer esto estableciendo el RMS en blanco de cualquier celda en 1), que no existe en la solución (y esto). es lo que tiene la celda final de Onetone RMS. Fórmulas), 2), la solución de línea contiene algunos comités iguales al valor actual de Onetone.

Tenga en cuenta que la condición n.° 1 ya pasó de la visualización uno a uno (es decir, no hay forma de resolver la celda grande actual), por lo que todo lo que podemos hacer es introducir la lógica n.° 2. Esta lógica se puede expresar como:

= If (COUNTIF (sol_row_from_val, Onetone) "0," ", Onetone)

donde sol_row_from_val es:

= index (sol_board, break((column(main!a 65438+a 1)-1)/3)1+0,0)

Nuevamente, esto debe ingresarse desde P-4. >

Entonces, combinando estos, obtenemos:

= If (sol _ cell _ from _ val

Lo cual no es simple, al menos comprensible, pero te da una A El tablero de valores válido se ve así:

Ampliar a las columnas y cuadro grande (3x3).

Cuando vamos a comprar se aplica la regla "no hay dos números idénticos en una columna". Con el mismo método que "no hay dos números idénticos en un cuadro grande", nos encontraremos con dos problemas: 1. No puedes crear sol_bigbox_from_val para usar el índice directamente, porque el índice solo devuelve una celda, una fila o un rango de valores. Una columna o un rango completo y 2. Esto comenzará a crear las tres tediosas fórmulas CONTAR.SI o 'd juntas.

Para resolver el primer problema, puede usar compensación, como puede hacer aquí. - pero dado que la compensación es inestable, causará problemas de rendimiento en el futuro. Una mejor solución sería eliminar la alianza que mencionó dos veces (usando la alianza en el operador de dos puntos de Excel), para obtener un rango de 3x3. nos da la siguiente fórmula para sol_bigbox_from_val (entrada de P-4):

= index(sol_board, break((column(main!a 1) -1)/9)* 3+1, break( (columna(principal!grid a 1)-1)/9)* 3+1): index(sol_board, break((columna(principal!A1)-1) /9) * 3 +3, break((columna( principal!A1) -1)/9) * 3 +3)

Ahora podemos elegir esta fórmula, excepto que es más fácil de dividir, la línea y la división parcial significa que cada 9 líneas estarás. una entrada RMS, baje el bloque de tres líneas para resolver la entrada con una columna de expresión similar, completando la segunda cita exactamente con la primera, pero está desplazada dos filas hacia abajo entre las columnas, de modo que tenga un cuadrado de 3x3.

Ahora que tenemos esto, podemos escribir una fórmula grande que incluya el valor onetonino que ya existe en cualquier fila, columna o cuadro grande, pero aquí usaremos la abstracción nuevamente para crear la fórmula básica. más simple. Creemos un nuevo nombre llamado solución_in_rcb como "En la celda de solución y mi. ¿Hay filas, columnas o cuadros grandes dentro del número de teléfono? " Este nombre solo devuelve verdadero o falso (como parte del experimento, la condición n.° 2 no es un párrafo) y, aunque no es corto, en realidad es bastante sencillo de escribir:

= o (COUNTIF (sol_row_from_val , ONETONINE) "0,COUNTIF (sol_col_from_val,ONETONINE)" 0)

Utiliza este nuevo nombre para hacer de nuestra nueva fórmula una celda válida:

= If (sol _ cell _ from _ val

Esto no solo es más fácil de entender que esta fórmula, sino que también conduce a algo claro donde solo hay una solución posible:

Así que podemos mirar algunas soluciones, pero la clave es alimentar a estos comités con las soluciones. Aquí es donde entra en juego la iteración. La próxima vez usaremos la iteración y algunos trucos de fórmulas para resolver algunos Sudoku.

上篇: Gallo 2018 adivinación_Gallo 2018 下篇: El último txt de las obras completas de Da Qin.
Artículos populares