Sudokux es un programa escrito en java que es capas de resolver cualquier sudoku que tengas por ahí guardado y no allas sido capas de resolver.
Distribuido bajo licencia creative commons.
Y lo bueno de todo es multiplataforma.
Dejo el source code el nombre del autor y demas datos estan en el source del programa:
import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; // Sudokux 1.0 - Pablo Martínez Insua // // Programa registrado. // Licencia: -https://creativecommons.org/licenses/by-nc-sa/3.0/deed.es_PE public class Sudokux { private static int[][] casilla; JFrame ventana = new JFrame("Sudokux 1.0"); JMenuBar menus = new JMenuBar(); JMenu menuArchivo = new JMenu("Archivo"); JMenu menuHelp = new JMenu("Ayuda"); JMenuItem archivoSalir = new JMenuItem("Salir"); JMenuItem helpAcercaDe = new JMenuItem("Acerca de"); Font fontRespuesta = new Font("Verdana", Font.BOLD, 20); JButton resolver = new JButton("Resolver"); JButton borrar = new JButton("Borrar"); JTextField numeros[][] = new JTextField[10][10]; String solucion; public static void main(String[] args){ casilla = new int[10][10]; for(int col=0; col<9; col++) for(int fil=0; fil<9 ; fil++) casilla[fil][col] = 0; Sudokux mostrarVentana = new Sudokux(); } public Sudokux(){ configurar(); acciones(); } void configurar(){ menuArchivo.add(archivoSalir); menuHelp.add(helpAcercaDe); menus.add(menuArchivo); menus.add(menuHelp); for(int i=1; i<10; i++){ for(int j=1; j<10; j++){ numeros[i][j] = new JTextField(1); ventana.add(numeros[i][j]); numeros[i][j].setFont(fontRespuesta); } } ventana.add(menus); ventana.setJMenuBar(menus); ventana.add(resolver); ventana.add(borrar); ventana.setVisible(true); ventana.setSize(300, 420); ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ventana.setLayout(new FlowLayout(FlowLayout.CENTER)); } void acciones(){ archivoSalir.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ {FNAMEL}">System.{FNAMEL}">exit(0); } }); helpAcercaDe.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ JOptionPane.showMessageDialog(null, "Programa: Sudokux\nAutor: Pablo Martínez Insua\nVersión: 1.0", "Acerca de", JOptionPane.INFORMATION_MESSAGE); } }); resolver.addMouseListener(new MouseAdapter(){ public void mousePressed(MouseEvent e){ recoger_datos(); resuelve(1,1); for (int col=1; col<10; col++){ for (int fil=1; fil<10 ; fil++){ numeros[fil][col].setText(""+casilla[fil][col]); } } } }); borrar.addMouseListener(new MouseAdapter(){ public void mousePressed(MouseEvent e){ for (int col=1; col<10; col++){ for (int fil=1; fil<10 ; fil++){ numeros[fil][col].setText(""); casilla[fil][col] = 0; } } } }); } void recoger_datos(){ int tiene = 1; for (int col=1; col<10; col++){ for (int fil=1; fil<10 ; fil++){ if(!numeros[fil][col].{FNAMEL}">getText().equals("")) casilla[fil][col] = Integer.parseInt(numeros[fil][col].{FNAMEL}">getText()); tiene = 0; } } if(tiene==1){ JOptionPane.showMessageDialog(null, "Introduce el sudoku a resolver.", "Error", JOptionPane.WARNING_MESSAGE); } } private static boolean resuelve(int fil, int col){ boolean resuelto = false, casillaSegura = false; int num = 1; if (casilla[fil][col]!=0) { casillaSegura = true; num=9; } while(!resuelto && num<10) { if(!casillaSegura) casilla[fil][col] = num; if(es_valida(fil,col)) { if(fil==9 && col==9) resuelto = true; else if (fil<9) resuelto = resuelve(fil+1, col); else if(fil==9) resuelto = resuelve(1, col+1); } num++; } if (!resuelto && !casillaSegura) casilla[fil][col] = 0; return resuelto; } private static boolean es_valida(int fil, int col){ for(int i=1; i<10; i++) if(fil!=i && casilla[fil][col] == casilla[i][col]) return false; for (int i=1; i<10; i++) if (col!=i && casilla[fil][col] == casilla[fil][i] ) return false; int cuadroColumna = (int)(Math.{FNAMEL}">floor((col-1)/3)*3)+1, cuadroFila = (int)(Math.{FNAMEL}">floor((fil-1)/3)*3)+1; for(int i=cuadroColumna; i
Espero les sirva de algo aunque sea para revisar el source 😉
Visto en cibernodo.net
El código esta incompleto.
Agradecería que alguien me lo enviara a mi correo: [email protected]
Gracias por adelantado.
que tipo de solución usa?? algoritmos genéticos redes neuronales o algo similar
Hola, implemente algo en java para resolver sudokus, tal vez les sirva tambien
https://usandojava.blogspot.com/2012/09/resolviendo-sudokus-paso-paso-usando.html