Python Sudoku – Cousas de xentiña http://xoseotero.blogaliza.org De software libre, política e as miñas cousas. Ven, 05 Mar 2010 09:44:00 +0000 gl-ES hourly 1 https://wordpress.org/?v=4.7 Python Sudoku 0.13 http://xoseotero.blogaliza.org/2008/09/19/python-sudoku-013/ http://xoseotero.blogaliza.org/2008/09/19/python-sudoku-013/#comments Fri, 19 Sep 2008 12:08:18 +0000 http://xoseotero.blogaliza.org/?p=243 Despois de dous anos dende a última versión de Python Sudoku xa ía sendo hora de sacar unha versión nova… Python Sudoku 0.13 non trae melloras moi significativas nin arranxos de erros, pero espero que sexa unha versión de transición ata un código máis limpo, fácil de manter e extender.

Por certo, se alguén está interesado na programación en python, nos sudokus e quere axudar no desenolvemento de Python Sudoku que levante a man; dous anos para sacar unha nova versión é moito tempo…

Novas características:

  • Dividi-lo script en varios scripts con funcións específicas: pysdk.py para crear e resolver sudokus dende a liña de comandos, pysdk-pdf.py para crear PDFs, pysdk-image.py para crear imaxes and pysdk-gui.py para a interface gráfica.
  • Simplificación da configuración.
  • Engadida a opción -t | –test para obte-la dificultade dun sudoku.
  • Engadida a opción –force para asegurarse de que a dificultade dun sudoku se corresponde exactamente coa dada.
  • Soporte para abrir ficheiros .sdk entre distintos sistemas con diferentes separadores de liña.

Descargas:

Instalación/configuración:

Baixando o código fonte:

  1. Descarga-lo código fonte e descomprimi-lo.
  2. Opcional: edita-lo ficheiro pysdk.cfg do directorio descomprimido.
  3. Executa-los scripts.

Empregando o paquete debian:

  1. Descarga-lo paquete debian e instala-lo.
  2. Opcional: copia-lo ficheiro /usr/share/doc/pythonsudoku/pysdk.cfg no directorio persoal coma ~/.pysdk.cfg (ollo ó punto ó inicio do nome do ficheiro) e edita-lo.
  3. Executa-los scripts (ter en conta que coa instalación dende o paquete debian os scripts non teñen extensión .py).
]]>
http://xoseotero.blogaliza.org/2008/09/19/python-sudoku-013/feed/ 2
As miñas excusas ós bugs de Python Sudoku http://xoseotero.blogaliza.org/2006/10/09/as-minas-excusas-os-bugs-de-python-sudoku/ Mon, 09 Oct 2006 11:29:54 +0000 http://xoseotero.blogaliza.org/2006/10/09/as-minas-excusas-os-bugs-de-python-sudoku/

Vía chuza! chego a Las 20 respuestas que más utilizan los programadores cuando sus programas no funcionan. Fíxome graza recordar ter dado algunha destas respostas nos informes de erros de Python Sudoku.

Arranxar erros para un programador é unha tarefa comparable á dun detective. Primeiro hai que verifica-la existenza do fallo, atopalo dentro de todo o código, pensar en como arranxalo e finalmente aniquilalo. Durante todo este proceso tes que estar preparado para atoparte con sucesivos efectos colaterais.

Algunhas veces hai falsas alarmas, pero a inmensa maioría das veces, os usuarios fixeron todo o posible para verificar por si mesmos a valided do erro. Un exemplo de erro inexistente foi Sudoku generates illegal position onde se dicía que o programa funcionaba mal, creaba sudokus con valores non válidos. Finalmente, acabouse vendo que o usuario que enviou o informe do erro non coñecía perfectamente as regras dos sudokus.

Unha aclaración: “Na miña máquina funciona!” é o primeiro paso para a resolución dun bug oculto e o complemento a “Preciso máis información”.

En Questions configuration suxeríase a opción de visualizar sempre números en vez de letras para os valores maiores que nove. A miña resposta foi un rotundo: “Por que quieres hacer iso?“. Acabouse implementando como unha opción ó entender que as letras se podían confundir con algúns números.

En pythonsudoku.py from a cron job produciuse a típica situación onde non sabes de que carallo che están a falar. Diante da falta de información só houbo un “Na miña máquina funciona!”.

En missing pysdk.cfg and default values for pdf/printer opt dúas variables non se chegaban a declarar dependendo dos módulos instalados no sistema. Tendo en conta que nin os módulos nin as variables tiñan relación, a miña única resposta lóxia era “Pois é raro…”, definición standard dun bug ben agochado detrás de suposicións preestablecidas 🙂

O premio especial a unha carreira chea de excusas tena Installation problem onde se produciron unha serie de respostas en cadea: “Na miña máquina funciona!”, “Pero se non toquei ese módulo en meses!” e “Pois é raro…”. Este bug é o mesmo que o anterior, pero debido a un maior aporte de información puiden dar másis excusas resolvelo.

]]>
Python Sudoku 0.12.4 http://xoseotero.blogaliza.org/2006/09/23/python-sudoku-012/ http://xoseotero.blogaliza.org/2006/09/23/python-sudoku-012/#comments Sat, 23 Sep 2006 05:05:19 +0000 http://xoseotero.blogaliza.org/2006/06/29/python-sudoku-012/ Acabo de sacar a versión 0.12 de Python Sudoku. Se queredes descargala podédelo facer na páxina de descargas.

Esta versión fíxose esperar, xa que dende a versión 0.11 pasou xa medio ano. Poido tardar unhas horas menos, pero dende onte non se podía facer login en Source Forge, co que non podía subi-la nova versión. Conspiracións xudeo-masónicas desas.

Actualización 2006/07/02: Python Sudoku 0.12.1
A interface gráfica emprega todos os algoritmos para resolver os sudokus en vez de depender do parámetro –difficulty.

Actualización 2006/07/30: Python Sudoku 0.12.2
Elimina-la visualización de números extras no modo gráfico é na resolución de sudokus na liña de comandos.

Actualización 2006/08/04: Python Sudoku 0.12.3
As opcións –use_letters e –numbers_only funcionan cando faltan os módulos reportalba e PIL. Amosar a información de modo de emprego dependendo dos módulos presentes.

Actualización 2006/09/23: Python Sudoku 0.12.4
Actualizada a tradución ó alemán.
Arranxado un bug que impedía que se dera un número dende a interface gráfica.

]]>
http://xoseotero.blogaliza.org/2006/09/23/python-sudoku-012/feed/ 2
10.000 descargas de Python Sudoku http://xoseotero.blogaliza.org/2006/09/13/10000-descargas-de-python-sudoku/ http://xoseotero.blogaliza.org/2006/09/13/10000-descargas-de-python-sudoku/#comments Wed, 13 Sep 2006 02:09:12 +0000 http://xoseotero.blogaliza.org/2006/09/13/10000-descargas-de-python-sudoku/ Sudoku difícilPython Sudoku chegou hoxe ás 10.000 descargas, cando se cumpre aproximadamente o primeiro ano de vida do proxecto. Ben, en realidade, se temos en conta as descargas realizadas de PySudoku, xa hai un mes que se chegou a esa cifra. O 12 de agosto habían 701 descargas de PySudoku e 9304 de Python Sudoku.

Mirando as estatísticas podemos observar que:

  1. A versión 0.11 ten 6280 descargas, máis da metade.
  2. A versión 0.11 tivo no día en que se publicou máis de 500 descargas.
  3. A versión 0.11 estivo sete meses como a última versión dispoñible.
  4. Efectúanse unha media de 29 descargas diarias

Historia

Python Sudoku surxiu en agosto de ano pasado grazas a dous factores:

  1. O meu pai entregoume o Marca e díxome: “A que non das feito este sudoku en menos dunha hora”. Despois de aprende-las regras, en vez de empezar a resolvelo, empecei a pensar cómo facer un programa para resolvelo.
  2. A pantalla do meu ordenador estropeárase e quedeime dúas semanas sen el. Para quitarme o mono tirei do meu vello 386 e empecei a picar código en C.

Despois de merca-la nova pantalla pensei en converti-lo código de C a python. Cando xa tiña a primeira versión en python decidín subi-la a Source Forge. Creei un proxecto co primeiro nome que se me ocorreu: PySudoku (á versión en C chamáralle simplemente sudoku).

Algún tempo despois descubrín que xa había un proxecto chamado PySudoku. Intentei elimina-lo proxecto de Source Forge e crear un novo co nome Python Sudoku, pero debido a que Source Forge pon moitas trabas para a eliminación dun proxecto, acabei creando unha páxina web onde explicaba que había un proxecto previo co mesmo nome e que cambiaba o nome.

Presente

Python Sudoku é un programa de liña de comandos bastante completo: permite crear sudokus e resolvelos, crear PDFs con un ou catro sudokus e crear imaxes cun sudoku. Case que tódolos parámetros son modificables vía a opcións na liña de comandos ou a modificación do ficheiro de configuración. Pola outra banda, a interface gráfica é moi básica.

O método de resolución de sudokus non é por forza bruta. Están codificados unha serie de algoritmos, clasificados pola súa complexidade, que se executan continuamente ata que non se den atopado máis sudokus. Se ó final do proceso non quedan ocos sen resolver o sudoku está resolto. Algúns sudokus, especialmente difíciles, aínda non se dan resolto, como por exemplo os que se presentan nas competicións.

O método de creación de sudokus si que é por forza bruta. Primeiro créase un sudoku resolto e despois vánselle creando ocos distribuidos aleatoriamente. Por cada novo oco compróbase que o sudoku se pode resolver, se non é así, vólvese a meter o número que había antes.

Cada día engádense 4 sudokus á páxina web. Os sudokus están creados coa dificultade normal e cos handicaps 0, 5, 10 e 15. Estes sudokus pódense engadir dun xeito doado a unha web.

Futuro

Teño varias melloras pensadas para as próximas versión:

A versión 0.13 contará cunha nova interface gráfica. A idea que teño na cabeza é que se pareza a esta imaxe:

prototipo6

A versión 0.14 terá máis algoritmos para a resolución de sudokus, intentando que sexa capaz de resolver os sudokus máis difíciles.

Futuras versións:

  1. Dous modos multixogador por internet: cooperativo, onde os números que se atopen se compartirán entre tódolos xogadores, e competitivo, onde o xogador que complete antes o sudoku será o gañador.
  2. Novo método de creación de sudokus máis intelixente coa opción de crear sudokus cun modelo (amosar números nas posicións pedidas).

No tocante á páxina web, quedan varias cousas por facer:

  1. Engaden sudokus coas dificultades easy, normal e hard en vez de co handicap.
  2. Crear varias páxinas web en vez de rederixir ás páxinas de Source Forge.
]]>
http://xoseotero.blogaliza.org/2006/09/13/10000-descargas-de-python-sudoku/feed/ 2
GNOME 2.18 contará cun novo xogo http://xoseotero.blogaliza.org/2006/09/11/gnome-218-contara-cun-novo-xogo/ http://xoseotero.blogaliza.org/2006/09/11/gnome-218-contara-cun-novo-xogo/#comments Mon, 11 Sep 2006 04:55:26 +0000 http://xoseotero.blogaliza.org/2006/09/11/gnome-218-contara-cun-novo-xogo/ Hai só cinco días que saíu GNOME 2.16 pero xa se está a decidir qué irá, ou non, na seguinte versión, a 2.18. Decidiuse, por aclamación popular, que se faría un cambio entre os xogos que actualmente forman parte de GNOME, cambiándose un dos actuais xogos que veñen con GNOME por outro novo.

Está planificado o procedemento nos seguintes pasos:

  1. Proposta de xogos
  2. Comunicación cos responsables dos xogos para descartar xogos da lista
  3. Votación entre os xogos incluídos actualmente en GNOME para eliminar o perdedor
  4. Votación entre os xogos propostos para engadir o gañador

Neste momento hai 13 xogos propostos e 12 descartados. Un deses descartados é Python Sudoku. Os motivos que din para que se descartase foron:

  1. Nula integración entre Python Sudoku e GNOME máis alá do emprego de GTK+.
  2. Python Sudoku non só é un xogo gráfico: pódese acceder a toda a funcionalidade (agás á GUI, claro) mediante a liña de comandos (creación/resolución de sudokus, creación de PDFs/imaxes).
  3. Hai outros xogos de sudoku na lista máis coñecidos/empregados (Gnome-sudoku).

Hai outro punto que non argumentei, pero que tamén ten o seu peso para min. Ó entrar un xogo en GNOME, este pasa ó seu CVS (falta de decisión sobre o xogo) e debe segui-lo ritmo de versións de GNOME (falta de flexibilidade). Pola outra banda, unha das avantaxes de estar en GNOME é que o xogo será instalado/usado por unha maior masa de usuarios, circunstancia que non me quita o sono (xa teño o ego contento con como van as cousas).

]]>
http://xoseotero.blogaliza.org/2006/09/11/gnome-218-contara-cun-novo-xogo/feed/ 2
Engadir sudokus a unha páxina web http://xoseotero.blogaliza.org/2006/06/24/engadir-sudokus-a-unha-paxina-web/ http://xoseotero.blogaliza.org/2006/06/24/engadir-sudokus-a-unha-paxina-web/#comments Sat, 24 Jun 2006 13:56:31 +0000 http://xoseotero.blogaliza.org/2006/06/24/engadir-sudokus-a-unha-paxina-web/ A páxina web de Python Sudoku ten un script para obter imaxes en formato PNG de sudokus que se poden engadir á nosa páxina web.

Cada día engádense 4 sudokus á base de datos, un para cada unha dos seguintes handicaps: 0, 5, 10 e 15. Mediante este script pódense obter tódolos sudokus.

O tamaño das imaxes é de 300×300, ocupando aproximadamente 6KBs, pero pódese obter unha versión de previsualización de 100×100, ocupando aproximadamente 2KBs.

Parámetros
O script ten varios parámetros:

  • date: A data en formato AAAA-MM-DD (para hoxe sería 2006-06-24). Se non se especifica tómase por defecto o día de hoxe.
  • handicap: O número de números de máis que se dan; 0 significa que se dan só os necesarios, 1 que se da un de máis, etc. Os valores permitidos son 0, 5, 10 e 15. Se non se especifica tómase por defecto 0.
  • format: O formato, que pode ser png, pdf ou sdk (texto plano). Se non se especifica tómase por defecto png.
  • thumb: (Só para formato png, incompatible con solved) Amósase unha imaxe de tamaño máis pequeno a modo de previsualización.
  • solved: Amosa o sudoku resolto.

Exempros
Para meter un sudoku nunha páxina web só hai que insertar o código onde queiramos que se vexa.

Previsualización con ligazón á páxina web de Python Sudoku (recomendado):

<a href="http://pythonsudoku.sourceforge.net/index.php?view&handicap=0#sudokus"><img src="http://pythonsudoku.sourceforge.net/sudoku.php?thumb&format=png&handicap=0" /></a>

Imaxe co sudoku e ligazón á páxina web de Python Sudoku:

<a href="http://pythonsudoku.sourceforge.net/index.php?view&handicap=0#sudokus"><img src="http://pythonsudoku.sourceforge.net/sudoku.php?format=png&handicap=0" /></a>

Imaxe co sudoku e ligazón á imaxe co sudoku resolto:

<a href="http://pythonsudoku.sourceforge.net/sudoku.php?solved&format=png&handicap=0"><img src="http://pythonsudoku.sourceforge.net/sudoku.php?format=png&handicap=0" /></a>

]]>
http://xoseotero.blogaliza.org/2006/06/24/engadir-sudokus-a-unha-paxina-web/feed/ 5