Generador de sudoku

  • 0 Respuestas
  • 317 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Conectado Adalher

  • *
  • Underc0der
  • Mensajes: 105
  • Actividad:
    63.33%
  • Reputación 0
    • Ver Perfil

Generador de sudoku

  • en: Agosto 31, 2019, 09:13:57 pm
Hola,

se escribió un generador de sudoku. Pensé que valiese la pena que el fuera presentado aquí.

El genera un vector completo. Qué campos individuales se eliminan y de qué manera, eso depende de ti.

Código:
Código: Java
  1. private int[][] createSudoku()
  2.     {
  3.         int[][] field = new int[9][9];
  4.        
  5.         for(int i = 0; i < field.length; i++)
  6.         {
  7.             int[] rand;
  8.             do {
  9.                 rand = createRandomRange();
  10.                 You are not allowed to view links. Register or Login.arraycopy(rand, 0, field[i], 0, rand.length);
  11.             }
  12.             while(!proofIntField(field));
  13.         }
  14.         return field;
  15.     }
  16.    
  17.     private boolean proofIntField(int[][] field)
  18.     {
  19.         for(int i = 0; i < field.length; i++)
  20.         {
  21.             if(!proofNoDuplicate(field[i])) {
  22.                 return false;
  23.             }
  24.         }
  25.        
  26.         for(int i = 0; i < 9; i++)
  27.         {
  28.             int[] temp = new int[9];
  29.             for(int j = 0; j < 9; j++)
  30.             {
  31.                 temp[j] = field[j][i];
  32.             }
  33.             if(!proofNoDuplicate(temp)) {
  34.                 return false;
  35.             }
  36.         }
  37.        
  38.         for(int i = 0; i < 9; i += 3)
  39.         {
  40.             for(int j = 0; j < 9; j += 3)
  41.             {
  42.                 int[] temp = new int[9];
  43.                 int h = 0;
  44.                 for(int k = 0; k < 3; k++)
  45.                 {
  46.                     for(int g = 0; g < 3; g++)
  47.                     {
  48.                         temp[h] = field[i+k][j+g];
  49.                         h++;
  50.                     }
  51.                 }
  52.                 if(!proofNoDuplicate(temp)) {
  53.                     return false;
  54.                 }
  55.             }
  56.         }
  57.         return true;
  58.     }
  59.    
  60.     private boolean proofNoDuplicate(int[] field)
  61.     {
  62.         int[] temp = new int[9];
  63.         for(int i = 0; i < field.length; i++)
  64.         {
  65.             if(field[i] != 0) {
  66.                 for(int j:temp)
  67.                 {
  68.                     if(j == field[i]) {
  69.                         return false;
  70.                     }
  71.                 }
  72.                 temp[i] = field[i];
  73.             }
  74.         }
  75.         return true;
  76.     }
  77.    
  78.     private int[] createRandomRange()
  79.     {
  80.         int[] field = new int[9];
  81.         ArrayList<Integer> list = new ArrayList<Integer>();
  82.         for(int i = 1; i <= 9; i++)
  83.         {
  84.             list.add(i);
  85.         }
  86.         You are not allowed to view links. Register or Login.shuffle(list);
  87.         for(int i = 0; i < 9; i++)
  88.         {
  89.             field[i] = list.get(i).intValue();
  90.         }
  91.         return field;
  92.     }
  93.  

Quizás se ayudó a alguien con eso.


Saludos
« Última modificación: Septiembre 01, 2019, 03:34:51 am por Denisse »

 

[Java] Generador de contraseñas + si es fuerte o no

Iniciado por hackmin

Respuestas: 6
Vistas: 10386
Último mensaje Abril 13, 2016, 10:14:12 am
por Mr_Pack
Generador de contraseñas (Update 1)

Iniciado por Adalher

Respuestas: 3
Vistas: 569
Último mensaje Agosto 29, 2019, 09:14:17 am
por Bartz
Generador de quinielas

Iniciado por ProcessKill

Respuestas: 0
Vistas: 2891
Último mensaje Febrero 24, 2010, 04:23:19 pm
por ProcessKill