File: /~heha/hs/Kalenderpuzzle.zip/liesmich.txt

<p>Das Programm löst das Problem in Brute-Force-Methode.
Die brauchbare Geschwindigkeit von zumeist < 1 s
kommt von der Kodierung der Puzzleteile als 64-Bit-Zahl
und der damit ausgeführten booleschen Verknüpfungen.
Denn das Zielgebiet ist max. 7×7 „Pixel“ groß,
hier als 8×8 kodiert.
Die linke obere Ecke ist Bit 0.
Rechtsschieben des Puzzleteils entspricht
1-Bit-Linksschieben der 64-Bit-Zahl,
gefüllte Spalten Nr. 7 entsprechen ungültige Positionen.
Nach-unten-schieben des Puzzleteils entspricht
8-Bit-Linksschieben,
Bits in Zeile 7 bzw. Zeile 6 ab Spalte 3
beenden den Probieralgorithmus für dieses Puzzleteil.

<p>Als Ausgangspunkt für mein Programm dient ein
hölzernes Puzzle mit Maserung.
Die Form der Teile, in der Reihenfolge der Implementierung
im Programm:
<pre>
0	1	2	3	4	5	6	7
xxx	xx	 xxxx	xx	xx	x	x	x
xxx	xxx	xx	x	 x	x	xx	x
			xx	 xx	xxx	x	x
						x	xx
</pre>
Die Maserung ist dabei senkrecht.
Da die Teile maximal 4×4 groß sind genügt für ihre
Kodierung eine 16-Bit-Zahl als Bitmap, 1 Nibble pro Zeile.
Im Gegensatz zur gängigen (?) Kodierung von Bitmaps
hier mit Bit 0 in der linken Spalte, das ist handlicher.

<p>Erst später bin ich darauf gekommen, dass es sich um ein
weltbekanntes Puzzle mit der Bezeichnung
„A Puzzle A Day“ handelt.

<p>Das Programm hat folgende Schwächen: <ul>
 <li> Algorithmus nicht registeroptimiert
 <li> Findet nicht alle Lösungen
 <li> Bevorzugt nicht automatisch Lösungen ohne Rückseiten der Puzzleteile
 <li> Nicht im Thread
 <li> Keine Anzeige der Rechenzeit
 <li> Keine freie Datumseingabe
 <li> Keine Visualisierung der Maserung
 <li> Keine Visualisierung der Kontur der Puzzleteile als Polygon
  (Das macht übrigens keines der gesehenen Programme!)
 <li> Plumpe Bedienung
</ul>

<p>Und folgende Stärken: <ul>
 <li> Monatsnamen in Windows-Sprache
 <li> Startet mit aktuellem Datum
 <li> Erlaubnis für umgedrehte Puzzleteile auswählbar
 <li> Fenster und Lösung größeneinstellbar, Bildseitenverhältnis 1:1
 <li> Speicherung Fenserposition und -größe
</ul>

henni, 231102
Detected encoding: UTF-80