elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Algoritmo para resolver sudoku incomprensible
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Algoritmo para resolver sudoku incomprensible  (Leído 3,025 veces)
kutcher

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Algoritmo para resolver sudoku incomprensible
« en: 4 Noviembre 2014, 18:48 pm »

Buenas me he topado con un código un poco complicado de seguir, la cuestión es que se me hace difícil entender como logra aislar el número exacto en la posición requerida sin la necesidad (según veo) de una búsqueda exhaustiva como es común en este tipo de algoritmos, aquí el código :

Código
  1. int trycell(int *x, int pos)
  2. {
  3.    int row = pos / 9;
  4.    int col = pos % 9;
  5.    int i, j, used = 0;
  6.  
  7.    if (pos == 81)
  8.        return 1;
  9.    if (x[pos])
  10.        return trycell(x, pos + 1);
  11.  
  12.    for (i = 0; i < 9; i++)
  13.        used |= 1 << (x[i * 9 + col] - 1);
  14.  
  15.    for (j = 0; j < 9; j++)
  16.        used |= 1 << (x[row * 9 + j] - 1);
  17.  
  18.    row = row / 3 * 3;
  19.    col = col / 3 * 3;
  20.  
  21.    for (i = row; i < row + 3; i++)
  22.        for (j = col; j < col + 3; j++)
  23.            used |= 1 << (x[i * 9 + j] - 1);
  24.  
  25.    for (x[pos] = 1; x[pos] <= 9; x[pos]++, used >>= 1)
  26.        if (!(used & 1) && trycell(x, pos + 1))
  27.            return 1;
  28.    x[pos] = 0;
  29.    return 0;
  30. }

Si pudieran aclararme como funciona mas o menos este código

Saludos kutcher


« Última modificación: 4 Noviembre 2014, 18:57 pm por kutcher » En línea

_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: Algoritmo para resolver sudoku incomprensible
« Respuesta #1 en: 5 Noviembre 2014, 20:48 pm »

Mas que entender codigo de otros, podrias hacer el tuyo. No creo que sea tan complicado el sudoku.
Cada cuadrado  pequeño debe sumar 45 sin repetir ninguna cifra del 1 al 9.
Cada fila debe sumar 45 sin repetir ninguna cifra del 1 al 9.

No tiene mas misterio. Si cumple esas condiciones esta resuleto.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Plis Necesito ayuda Para Programar Sudoku en Vb!!!!!!
Programación Visual Basic
Quenene 9 12,492 Último mensaje 2 Marzo 2006, 04:04 am
por Chief
Ayuda - Algoritmo Sudoku
Programación Visual Basic
VonN 8 6,830 Último mensaje 11 Julio 2009, 02:35 am
por h0oke
C/C++ RESOLVER SUDOKU
Programación C/C++
cypascal 4 8,855 Último mensaje 13 Enero 2013, 13:53 pm
por cypascal
El nuevo algoritmo de Google Street View puede resolver el 99,8 por ciento de...
Noticias
wolfbcn 0 1,329 Último mensaje 17 Abril 2014, 13:53 pm
por wolfbcn
necesito ayuda para resolver este algoritmo
Ejercicios
arapisa 2 4,298 Último mensaje 17 Marzo 2018, 23:49 pm
por dijsktra
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines