Introducción
Para los no iniciados
Sudoku
es un adictivo juego de números que se ha vuelto muy
popular
últimamente. La mayoría de los periódicos locales publican un rompecabezas diario, millones de personas en todo el mundo pueden verse inclinadas sobre él de camino al trabajo y de regreso. El juego tradicionalmente es una cuadrícula de 9x9, el objetivo es asegurarse de que cada fila, columna y caja 3x3 contengan todos los números del 1 al 9. El juego comienza con algunos números predefinidos en celdas aleatorias; el número lleno depende de la dificultad, cuanto menor sea el nivel, mayor será el número de celdas prellenadas. Luego, dependerá de ti y de tus habilidades de deducción resolver los números restantes.
Hay muchos
Solucionadores
disponibles, notablemente ausente estaba una versión en ABAP. Como ejercicio, pensé en escribir uno con un front-end de BSP
Solucionador de Sudoku
Un requisito previo para resolver el rompecabezas es asegurarse de que se pueda resolver. Cada celda debe validarse con las celdas en la caja en la que se encuentra más la fila y columna intersectadas, asegurándose de que el valor no entre en conflicto con otra entrada y que haya al menos un valor posible alcanzable.
Hay muchos enfoques diferentes para resolver un rompecabezas de Sudoku, la mayoría de ellos utilizan un algoritmo de búsqueda de
Vuelta atrás
. La vuelta atrás incorpora un enfoque de
Búsqueda en profundidad (DFS)
, comenzando en la primera celda, prueba todos los valores posibles hasta encontrar uno que funcione, luego pasa a la siguiente celda; si agotas todos los valores posibles, retrocede a la celda anterior y prueba el siguiente valor.
Creando Nuevos Juegos
Crear nuevos juegos es relativamente sencillo una vez que se haya determinado el solucionador. Hay 3 etapas
1. Llenar 3 cajas sin ninguna intersección con valores aleatorios del 1 al 9
2. Utilizar el solucionador para encontrar la solución
3. Eliminar celdas al azar hasta alcanzar el número de pistas asociadas con el nivel de habilidad
El Código
El código ahora está disponible como un fragmento de SAPlink.
Quitar espacios en una consulta SQL
Quitar espacios en una consulta SQL
Cuando trabajamos con consultas SQL, a menudo nos encontramos con la necesidad de limpiar o mani...
Transacciones MIGO y MIRO en SAP MM
Transacciones MIGO y MIRO en SAP MM
1. ¿Qué es la transacción MIGO?
La transacción MIGO (Entrada de Mercancías) se utiliza para registrar las mercancías que...
Hola a todos,
¿Alguien puede decirme sobre java.lang.NullPointerException?
Cuándo recibiremos este tipo de error y cómo solucionarlo.
Si obtenemos este error, ¿dónde debemo...
Pasos para abrir y cerrar período - MM FI CO
Muchos de nosotros luchamos con los cambios de períodos en nuestros entornos DEV y QA, aquí tienes una referencia rápida para abrir y...