Hallo Martin,
ich habe mal ein bisschen rekursiv programmiert, mit einem Abbruch nach 120 Sekunden.
In der Zeit hat der Algorithmus 238 Millionen Lösungen gefunden, und ich habe mir keine sonderliche Mühe gegeben, zu optimieren. Diagonale Nachbarn waren dabei erlaubt. Wenn ich die verbiete, findet er immer noch 171 Millionen.
Der Algorithmus beginnt mit der 1 und probiert für sie alle Positionen durch. Pro Position macht er das gleiche mit der 2, und so weiter. Bei jeder Platzierung werden die Vorausetzungen überprüft. Da die Zahlen aufsteigend gesetzt werden, muss ich nur schauen, ob ringsum eine Zahl steht die um 1 kleiner ist.
Auf Ebene der 12 habe ich eine Ausgabe eingebaut, die sagt, dass er die 12 nun auf Position (x,y) setzt. Die 12 ergab sich aus der zeitlichen Distanz zwischen zwei Platzierungen.
Wenn ich die Diagonalen mit prüfe, braucht er pro 12 ca eine Sekunde. Tue ich das nicht, braucht er pro 12 etwa 10 Sekunden.
Und das bei 99 Billionen Möglichkeiten, die Zahlen von 1-11 zu platzieren. Nein, das ist nichts für mein Siliziumkleinhirn.
Rolf
--
sumpsi - posui - obstruxi