Comprobación de Sudoku - sumas suficientes

¿Son suficientes las siguientes condiciones para verificar si la solución de Sudoku con ( salida extendida ) es válida?

  • suma de valores en cada fila, columna y subcuadrado es igual a 45 y
  • la suma de los cuadrados de los valores en cada fila, columna y subcuadrado es igual a 285

Por salida extendida me refiero a que se podría cometer el error, de modo que cada valor podría ser del rango <-1000,1000>, por ejemplo. Como puede ver, es una especie de generalización de la posible salida de sudoku, pero las reglas de Sudoku no cambian .

Si necesita información adicional o quiere saber mi motivación por favor pregunte.

ok, no tengo respuesta, pero información que invalida mi pregunta math.stackexchange.com/questions/157682/… mi condición podría sustituirse tomando sumas de 2^valor, pero no estoy seguro al 100%
Sí, como se muestra en la pregunta a la que se vincula, si marca todas las filas, columnas y subcuadrados con el 2 k 1 ponderar y obtener 511 cada vez, tienes un Sudoku válido.

Respuestas (2)

En otras palabras, estás preguntando si existe algún conjunto de 9 enteros.

a b C d mi F gramo h j

tal que

a + b + C + d + mi + F + gramo + h + j = 45

y simultáneamente

a 2 + b 2 + C 2 + d 2 + mi 2 + F 2 + gramo 2 + h 2 + j 2 = 285

aparte de la solución trivial 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 .

En Mathematica, eso es

FindInstance[
    a^2 + b^2 + c^2 + d^2 + e^2 + f^2 + g^2 + h^2 + j^2 = 285
        && a + b + c + d + e + f + g + h + j = 45,
    {a,b,c,d,e,f,g,h,j},
    Integers
]

pero no tengo acceso a Mathematica, así que no sé qué se me ocurrió.

Sin embargo, un programa de computadora trivial puede encontrar todas las respuestas fácilmente debido a esa segunda ecuación. Sabemos que todos los X 2 s son cantidades positivas, por lo que ninguna de las X s posiblemente puede estar fuera del rango [ dieciséis , dieciséis ] .

int main()
{
 for (int a=-16; a <= 16; ++a) {
  for (int b=a; b <= 16; ++b) {
   for (int c=b; c <= 16; ++c) {
    for (int d=c; d <= 16; ++d) {
     for (int e=d; e <= 16; ++e) {
      for (int f=e; f <= 16; ++f) {
       for (int g=f; g <= 16; ++g) {
        for (int h=g; h <= 16; ++h) {
         for (int j=h; j <= 16; ++j) {
          if (a+b+c+d+e+f+g+h+j != 45) continue;
          if (a*a + b*b + c*c + d*d + e*e + f*f + g*g + h*h + j*j != 285) continue;
          printf("%d %d %d %d %d %d %d %d %d\n", a,b,c,d,e,f,g,h,j);
         }
        }
       }
      }
     }
    }
   }
  }
 }
}

Este programa tarda seis décimas de segundo en ejecutarse en mi MacBook Pro y encuentra 80 soluciones distintas:

-2 4 6 6 6 6 6 6 7
-2 5 5 5 6 6 6 7 7
-1 2 5 6 6 6 7 7 7
-1 2 6 6 6 6 6 6 8
-1 3 4 5 6 6 7 7 8
-1 3 5 5 5 6 6 8 8
-1 3 5 5 6 6 6 6 9
-1 4 4 4 5 7 7 7 8
-1 4 4 4 6 6 6 8 8
-1 4 4 5 5 5 7 8 8
-1 4 4 5 5 6 6 7 9
0 1 4 6 6 7 7 7 7
0 1 5 5 6 6 7 7 8
0 2 3 5 6 7 7 7 8
0 2 3 6 6 6 6 8 8
0 2 4 4 6 6 7 8 8
0 2 4 5 5 6 7 7 9
0 2 5 5 5 5 6 8 9
0 3 3 4 5 7 7 8 8
0 3 3 4 6 6 7 7 9
0 3 3 5 5 5 8 8 8
0 3 3 5 5 6 6 8 9
0 3 4 4 4 6 8 8 8
0 3 4 4 4 7 7 7 9
0 3 4 4 5 5 7 8 9
0 3 4 4 6 6 6 6 10
0 3 4 5 5 5 6 7 10
0 4 4 4 4 6 6 7 10
0 4 4 4 5 5 5 9 9
1 1 3 5 6 6 7 8 8
1 1 3 6 6 6 6 7 9
1 1 4 4 5 7 7 8 8
1 1 4 4 6 6 7 7 9
1 1 4 5 5 5 8 8 8
1 1 4 5 5 6 6 8 9
1 1 5 5 5 6 6 6 10
1 2 2 4 7 7 7 7 8
1 2 2 5 5 7 7 8 8
1 2 2 5 6 6 7 7 9
1 2 3 3 6 7 7 8 8
1 2 3 4 5 6 7 8 9
1 2 3 5 5 6 6 7 10
1 2 4 4 5 5 6 9 9
1 2 4 4 5 5 7 7 10
1 2 4 5 5 5 5 8 10
1 3 3 3 4 7 8 8 8
1 3 3 3 6 6 6 7 10
1 3 3 4 4 5 8 8 9
1 3 3 4 4 6 6 9 9
1 3 3 4 4 6 7 7 10
1 3 3 4 5 5 6 8 10
1 3 4 4 4 4 7 9 9
1 3 4 4 5 5 6 6 11
1 4 4 4 4 5 5 7 11
2 2 2 3 6 6 8 8 8
2 2 2 3 6 7 7 7 9
2 2 2 4 4 7 8 8 8
2 2 2 4 6 6 6 7 10
2 2 2 5 5 5 6 9 9
2 2 2 5 5 5 7 7 10
2 2 3 3 4 7 7 8 9
2 2 3 3 5 5 8 8 9
2 2 3 3 5 6 6 9 9
2 2 3 3 5 6 7 7 10
2 2 3 4 4 5 7 9 9
2 2 3 4 4 6 6 8 10
2 2 3 5 5 5 6 6 11
2 2 4 4 4 4 7 8 10
2 2 4 4 4 6 6 6 11
2 2 4 4 5 5 5 7 11
2 3 3 3 3 6 8 8 9
2 3 3 3 4 5 7 8 10
2 3 3 3 5 6 6 6 11
2 3 3 4 4 5 5 9 10
2 3 3 4 4 5 6 7 11
2 4 4 4 4 4 4 8 11
3 3 3 3 4 4 6 9 10
3 3 3 4 4 4 5 8 11
3 3 4 4 4 5 5 5 12
3 4 4 4 4 4 4 6 12

Por salida extendida te refieres a números enteros, ¿verdad?

De lo contrario las ecuaciones X + y + z = 45 y X 2 + y 2 + z 2 = 285 tener solución real ver aquí .

sí enteros hjk,hj