Meine Projekte

Hier möchte stelle ich eigene Projekte vor, meistens sind es nur sehr kleine Programme

Mowyw - Mowyw Writes Your Websites

Mowyw ist ein in Perl geschriebenes Offline-CMS. Mehr dazu auf der Projektseite.

YasSS - Yet another (stupid|simple) Sudoku Solver

Sudoku ist ein Logikrätsel, das sich in letzter Zeit recht grosser Beliebtheit erfreut.

YasSS ist ein Programm, das Sudokus löst, erzeugt und ihren Schwierigkeitsgrad ausgeben kann.

Die Kommandozeilenoptionen sind dem Programm A Su Doku Solver von Bill Dupree nachempfunden.

Mehr Details

Mehr Details gibt es auf der YasSS-Projektseite

Download

Hier gibt es die aktuelle Version von YasSS

YasSS ist auf Google Code aufgeführt, dort ist auch der Zugang zum SVN-Archiv erklärt.

top

Canons - Canonical Form for Sudoku

Diese Programm bringt Sudoku auf eine kanoninische Form.

Wie auf meiner Sudoku-Seite beschrieben verändert sich an der Logik eines Sudoku nichts, wenn man Zeilen oder Spalten innerhalb eines Blocks vertauscht, Blöck Zeilen-und Spaltenweise vertauscht, das Sudoku transponiert oder die Zahlen durch andere ersetzt.

Dieses Programm liest pro Zeile in Sudoku ein, wobei das Rätsel zeilenweise eingelesen wird und Leere Stellen als Null gewertet werden.

Dann werden solange die oben beschriebenen Transformationen angewandt, bis die niedrigst mögliche Zahl mit diesem Rätsel erzeugt wurde. Diese Möglichkeit wird ausgegeben.

Damit kann man Sudokus vergleichen, da zwei Sudokus, die durch Transformationen auseinander hervorgehen, die gleiche Ausgabe erzeugen.

Algorithmus und Laufzeit

Im Juli 2006 habe ich das Programm komplett neu geschrieben.

Während ältere Versionen diese Programms alle Möglichkeiten durchprobiert haben, berechnet die aktuelle Version auf Anregung von Gordon Royle nur die tatsächlich benötigten Position.

Damit konnte ich die Laufzeit pro minimalem Sudoku von 1,2 bis 1,5 Sekunden auf etwa 0,27 Sekunden reduzieren. Testsystem war ein Laptop mit Pentium M 1.5 GHz.

Der Speicherverbrauch ist sehr gering und fällt kaum ins Gewicht.

Hinweise

Diese Programm ist nur für spärlich besetzte Sudoku gedacht (<20 Einträge ungleich Null), bei voller besetzten kann die Laufzeit stark ansteigen.

Bedanken möchte ich mich bei Tobias Preclik, der für mich in der alten Version ein Memory leak gefunden und beseitigt hat.

Version 0.7.0 ist in den Sudoku Solver YasSS eingeflossen, der nun diese Funktionalität bietet. Canons wird nicht mehr eigentständig weiterentwickelt.

Download

Hier gibt es die aktuelle Version herunterzuladen. Der Sourcecode der neuesten Version kann auf der Projektseite auf Google Code eingesehen werden.

Log2Sitemap

Log2Sitemap ist ein einfaches Perlskript, dass aus Apache-Logdateien im "combined"-Format (das ist default) xml-Sitemap-Dateien erstellt, die für die "Google Webmaster Tools" verwendet werden können.

Dabei wird die Priorität innerhalb der Sitemap automatisch durch die Anzahl der erfolgreichen Aufrufe in den Logdateien berechnet.

Und so geht's:

  1. Stellen Sie sicher, dass sie Perl installiert haben. Auf den meisten Linux/Unixsystemen ist das der Fall. Windowsuser können z.B. ActivePerl kostenlos herunterladen und installieren.
  2. Laden Sie log2sitemap.pl herunter
  3. Bearbeiten Sie das Skript. Am Anfang müssen Sie die Domain ihrer Webseite eingeben. Genauere Anweisungen stehen in dem Skript selbst.
  4. Rufen Sie das Skript mit den Logdateien als Kommandozeilenoption auf. Beachten Sie, dass das Skript keine komprimierten Logdateien lesen kann.

Cicq2txt - Centericq-Logdateien lesbar machen

cicq2txt wandelt history-files, in denen die Konversationen mit einzelnen Kontakten gespeichert sind, ein ein wesentlich leichter lesbareres Format um.

cicq2txt entstand in Zusammenarbeit mit Daniel "Argafål" Michalik. Hier ist seine Projektseite mit der aktuellen Version zum Herunterladen.

Programmiersprache: Perl.

Queen - N-Damen-Problem

Das ist eigentlich mehr eine Fallstudie in Backtracking als ein richtiges Programmierprojekt.

Genaueres gibt es auf meiner Seite zu Backtracking.