Jerry's Blog  1.4.210
mi propio
Versión 3
Publicado versión 3.0 del Analizador de Sudoku
mie 7 octubre 2020  2:26pmSudoku

Cuando se hace clic en los botones 'Analizar', 'Sugerencia', 'Vistazo', o 'Resolver', el Analizador de Sudoku envia un paquetito de Ajax al servidor. La 'X' en A.J.A.X. en este caso significa 'executable' (ejecutable), un programa que anda en el servidor de hospedaje de cyberjerry.info como nativo ejecutable o binario de BSD. El binario ejecuta la tarea pedido y devuelve a su computadora otro paquetito, para acabar el trámite de Ajax. Este programa se escrito en C y ensamblaje, compilado en el servidor usando gcc, para ejecución muy rápido. (El análisis de Sudoku correría muy despacio en un lenguaje de escritura.) El parte original y central del programa, escrito en el código ensamblaje, resuelve el Sudoku por instrucciones simples y rápidas de AND, OR, y XOR en bucles repetitivos y apretados. Su mandado es resolver la cuadrícula del Sudoku, o agotar todas las posibilidades en tratar de resolverlo. Al encontrar una solución, sigue en bucles repetitivos buscando más soluciones. Así puede informar el programa de C si la cuadrícula tiene una solución, varias soluciones, o ninguna. Su tarea secundaria es construir la tabla empleada en hacer la Cuadrícula de eliminación.

Este módulo de ensamblaje sencillo mas eficaz podía (casi siempre) hacer su tarea bien rápido. Dado una cuadrícula vacía o casi vacía, aún el programa más rápido gastaría mucho tiempo en intentar todas las posibilidades, pero podría seguir en generar muchas soluciones (tanto como un millón o más por segundo) hasta que el programa de C dice "¡Basta!". Dado una cuadrícula con varias celdas ya rellenas, y por lo tanto menos celdas a resolver, podía agotar todas las posibilidades en exponencialmente menos tiempo. Donde gastaría varios días para generar todas las soluciones para una cuadrícula vacía, podría hacerlo en dos segundos - menos que un segundo en el servidor rápido - para una cuadrícula con 60 o menos celdas vacías. Entonces podía informar el programa de C definitivamente que la cuadrícula tiene una solución, varias soluciones, o ninguna. Entonces el programa de C podía usar esta información para empezar a analizar la cuadrícula y, en el caso de un Sudoku de una sola solución, podía ayudar el operador humano con paso a paso sugerencias. Así se nació el Analizador de Sudoku.

El campo mediano era un poco problemático, donde la cuadrícula tenía entre 8 y 20 celdas rellenas. Depende de su configuración, las 8 a 20 celdas podrían en unos casos prevenir el módulo de ensamblaje de generar soluciones rápidamente. Al mismo tiempo, tantas celdas vacías significaría que el código de ensamblaje haría exponencialmente más bucles repetitivos en tratar de agotar todas las posibilidades, y el servidor probablemente mataría el programa por gastar mucho tiempo. Ninguna de las cuadrículas problemáticas eran válidos Sudokus de una sola solución; o tenía no solución o varias soluciones. O, yo pensaba así. Por eso, hace pocos años, para evitar el error del servidor, añadí un contador de bucles, diciendo el código de ensamblaje parar si no encuentre una solución después de 120 millones de bucles, y el programa de C diría al operador que la cuadrícula "no tiene solución o demasiadas para analizar."

Este código de ensamblaje ya ha sido al centro de mi atención por varias semanas. Escrito hace más o menos 15 años, era el primer parte de lo que con tiempo llegó a ser el Analizador de Sudoku. En el interín, yo seguía mejorar y corregir problemas en la página interactiva y en la lógica de análisis y sugerencia, pero el módulo de ensamblaje se quedía mayormente sin cambio. Entonces, como notado en el artículo de blog previo, Señor Manuel Navarro De La Hoz de Colombia me mandó una cosa que yo nunca hube encontrado: un Sudoku de una sola solución con solamente 17 celdas rellenas. Por las razones ya mencionadas arriba, mi módulo de ensamblaje no pudo resolverlo ni agotar todas las posibilidades entre los límites de bucles. Supe lo que tuve que hacer: tuve que volver al comienzo y hacer más inteligente y más rápido el código central de ensamblaje.

El código nuevo es más complejo y más analítico que el viejo. En lugar de tratar de resolver cada cuadrícula en la misma manera sencilla, ya examina la cuadrícula para ordenar sus celdas vacías según sus dígitos posibles. De manera similar, más que siempre tratar los dígitos 1 por 9 por orden numérico, los pone por un orden más probable a dar rápidamente resultas válidas. Por último, al probar la nueva lógica, fue obvio que agrandar el límite más de pocos millones de bucles logra casi nada. Por eso, mi nueva lógica trata de cumplir su trabajo en menos de 8 millones de bucles. Si falla, podría intentar otra vez con otro orden de dígitos y celdas, entonces otro orden, y otro. Ahora, en 99.77% de los casos, hace todo con menos de 20,000 bucles, y debe nunca hacer más de 20 millones de bucles, incluso en el peor de los casos, así el servidor no debe quejarse que está consumiendo demasiado tiempo del processor.

Desde lo anterior consiste en cambios radicales a la rutina central de ensamblaje, señala nueva publicación mayor del Analizador de Sudoku, la versión número 3.0.000. En esta misma publicación, hay otros pocos cambios menores del parte del binario escrito en C y de la interfaz al lado del cliente. Un nuevo rasgo que puede observar es que, arriba de la cuadrícula de eliminación, ya puede hacer clic en 'Estads' para ver cuantos bucles y cuanto tiempo usa el binario cada vez está llamado. El tiempo total de Ajax está allí para referencia; los nuevos cambios afectan solamente la velocidad y eficiencia del binario al lado del servidor. No tengo control sobre el proceso Ajax, que depende en la velocidad de su conexión y de todos los servidores que pasan el paquetito de Ajax de acá para allá entre su computadora y el servidor de cyberjerry.info.

Bueno, reconozco con agradecimiento la inteligencia de Señor Navarro, y su respuesta exitosa de mi Reto, pero de ninguna manera estoy renunciando la declaración que mi Analizador de Sudoku es lo mejor del internet. Ya era lo mejor, y ahora, gracias a Señor Navarro, es aún mejor. El sitio donde él encontró el Sudoku que dejó (temporalmente) perplejo mi Analizador de Sudoku fue nada más que una colección de Sudokus y sus soluciones predeterminados. No ayuda ni sugerencias paso a paso, ni análisis, nada.

Mientras estoy escribiendo este artículo, también estoy andando un programa en mi computadora del hogar para generar Sudokus de varias configuraciones de celdas rellenas y vacías, para seguir probando mi nueva lógica. En este momento, este programa ha generado más o menos 90 millones de cuadrículas; la nueva lógica está analizando toditos sin fallar, y sin gastar mucho tiempo. No digo que el Analizador de Sudoku ya está sin defectos, ni que 3.0.000 será su versión final. Pero, si usted encuentre un problema, o si nunca encuentre otro analizador que realice como mi Analizador de Sudoku, ¡favor de informarme!

 
El Retador Exitoso
El primer respuesto exitoso al Reto de Sudoku
dom 23 agosto 2020  10:06amSudoku

Hace pocos días, un visitante* astuto a mi página de Sudoku respondió exitosamente al Reto de Sudoku, el primero visitante de hacerlo. Halló el Sudoku mostrado que el Analizador no pudo resolver, y me dijo como resolverlo:

este sudoku lo saque de la pagina https://www.sudoku-online.org de categoria sudoku extremo #717, y su analizar dice que no tiene una solución, sin embargo por metodo analitico encuentro que F6 = 4 debido al 4 de E3 y el 4 de G5, tambien encuentro que I9 = 5 debido al 5 de D8 y al 5 de H4, al colocar estos dos números, ahora si dice que tiene solución única lo anterior esta pasando por que su analizador no está realizando el método más sencillo que es de eliminación directa o único número de la caja, mira la celda I1 = 8 se obtiene por ese método

*El Retador es:

Manuel Navarro De La Hoz
lugar de nacimiento: Galapa del departamento de Atlántico, país Colombia
su canal de YouTube: Mr cocogames

He revisado este Sudoku y he confirmado que mi Analizador sí falla en resolverlo, y que Señor Navarro ha describido un método correcto para resolverlo. Como prometí, aquí estoy reconociendo el éxito y las habilidades superiores de Sr Navarro, y también estoy trabajando para corregir este problema del Analizador.

¡Felicidades y gracias a Sr Navarro!

  3 comentarios
rev. sab 29 ago  8:30am
 
Reto Respondido (2)
El primero respuesto exitoso al Reto de Sudoku
mie 19 agosto 2020  7:34pmSudoku

Lo he confirmado: Alguien ha contestado con buen éxito el gran Reto de Sudoku. Es decir, un visitante ha resuelto paso a paso un Sudoku que el CyberJerry Analizador de Sudoku (el 'Analizador') no podía analizar. Espero publicar más detalles pronto.

 
Ordinariato
Como puede nacir una iglesia peregrina
mie 5 agosto 2020  5:11pmFe/Filosofía

No sería razonable ni justo pedir sacerdotes y obispos en 2020 dejar su estilo de vida y estado social y llegar a ser pobres peregrinos sin hogar. Asimismo, la mayoría de los hogares católicos de hoy en día no son capaces de ser iglesias domésticas de verdad, con el marido funcionando como pastor y sacerdote. Se necesitará tiempo, tal vez varias generaciones. Pero ya hay unos que pueden comenzar. Aquí hay una vía en que se podría desarrollar el sueño:

En algún lugar un obispo podría pedir permiso a fundar un ordinariato (vea caja). O un sacerdote podría pedirlo, y también ordinación (leer artículo)

 
Sacerdotes Amateures
Sueños de una iglesia sin propriedades
jue 30 julio 2020  7:51pmFe/Filosofía

Ya hay comunidades cristianos que no tienen nombre formal, ni edificios iglesiales, nada de los accesorios normales de una iglesia. Sus reuniones semanales incluyen de vez en cuando una visita pastoral de un anciano u 'obispo'. El anciano tiene un territorio bien delimitado adentro de cual él se va como peregrino, predicando, enseñando, aconsejando, y acepta tal comida y alojamiento como lo ofrecen. No tiene su propio hogar, por eso es soltero. Puede tener solamente la ropa, los libros, y los artículos personales que puede levantar en una maleta, nada más.

¿Por qué no pueden ser similar las normas católicas? El grupo local es (leer artículo)

  0 comentarios
rev. mie 5 ago  6:35pm
 
Doctrinas, Canones, Edificios
Pensamientos radicales sobre las propiedades de la iglesia
jue 23 julio 2020  4:34pmFe/Filosofía

El pánico pleno sobre covid-19 ha llegado a Nicaragua, después de varios meses de retuercen las manos los ministros religiosos. Que yo sepa, no se cerrada ninguna iglesia por completo, tal vez debido sólo a que Daniel Ortega no ha mandado así. En mi parroquia se suspenden las misas cotidianas. La puerta principal está cerrada con candado, incluso los domingos. Los feligreses muy fieles tienen que entrar y salir por la capillita al lado, y por un 'puesto de control' para desinfectar las manos y los zapatos. Los que quieren recibir la comunión tienen que someterse una segunda limpieza de alcohol de las manos; se prohibe recibir la comunión (leer artículo)

 
4 Retos de Sudoku
Para vencer, resolver uno
lun 6 julio 2020  12:42pmSudoku

Ya que está más y más difícil a encontrar cuadrículas de Sudoku que el CyberJerry Analizador de Sudoku (el 'Analizador') no puede analizar paso a paso, el gran Reto de Sudoku también llega a ser más difícil. Para ayudarle un poco, abajo están cuatro cuadrículas de Sudoku que el Analizador no puede analizar paso a paso. Solamente tiene que resolver uno de estos deductivamente (sin adivinaciones) para clasificarse como retador exitoso. Haga clic en cualquier cuadrícula abajo para verla en el Analizador. Ambos el y usted deben poder a resolver varias celdas. Pero, después de unos pasos, el Analizador ya (leer artículo)

  0 comentarios
rev. vie 17 jul  7:56pm
No tengas miedo de perder a quien no se siente afortunado de tenerte

Copyright (c) 2017-2020 Gerald DePyper - Jinotega, Nicaragua, C.A.
rev. 2020.09.23