Einführung
Ein häufiges Puzzle besteht aus einem dreieckigen Brett mit 15 Löchern für T-Stücke, wie in der folgenden Abbildung gezeigt:
Beginnend mit allen Stiften im Brett, mit Ausnahme eines Lochs oben, besteht der Sinn des Puzzles darin, Stifte wie Steine so übereinander zu springen, dass genau ein Stift übrig bleibt. Die einzig gültige Bewegung besteht darin, einen Stift über einen benachbarten Stift in eine beliebige Richtung in ein leeres Loch zu springen. Der Stift, der gesprungen wurde, wird dann vom Brett entfernt. Das Spiel endet, wenn keine gültigen Züge mehr vorhanden sind.
Spec
Ihre Aufgabe ist es, ein Programm zu schreiben, das eine vollständige Lösung für das Peg-Puzzle findet, dh eines, bei dem genau ein Peg übrig bleibt. Es gibt mehrere mögliche Lösungen, sodass Ihr Programm nur eine drucken muss.
- Ihr Programm erhält keine Eingabe. Sie dürfen keine Daten von externen Quellen lesen.
- Drucken Sie die Liste mit 13 Zügen aus, die ergibt, dass in diesem Format noch 1 Stift übrig ist:
Peg 1 jumps Peg 3 to Hole 6.
- Die Löcher / Zapfen sind von oben nach unten von links nach rechts nummeriert, so dass der obere Zapfen / Loch 1 ist und nummeriert wird, bis unten rechts 15 ist.
- Ihr Programm muss zur Laufzeit die Lösung finden . Das direkte Ausdrucken einer Lösung auf andere Weise als durch Lösen im Programm ist eine automatische Disqualifikation.
- Bonus : Sie erhalten 10 Bonuspunkte, wenn Sie mehrere eindeutige Lösungen ausgeben können (Sie können nur durch Leerzeilen getrennt drucken).
- Bonus : Erhalten Sie 5 Bonuspunkte, wenn die Nummer
15
nirgends in Ihrem Quellcode erscheint.
Wertung
Dies ist Code-Golf, daher ist die kürzeste Lösung (nach Byte-Anzahl), die eine korrekte Antwort ausgibt, der Gewinner. Bonuspunkte werden von Ihrer Gesamtbytezahl abgezogen. Bitte geben Sie eine Beispielausgabe zum Ausführen Ihres Programms sowie einen Link zu ideone
oder eine ähnliche Site an, wenn möglich, um die Ausführung Ihres Programms zu demonstrieren.
15=0xff=(1<4)-1=~(-1<<4)=...
15
selbst;)