Zusammenfassung
Das Ziel dieser Herausforderung ist es, eine ungelöste Bildversion eines 15-Puzzle- / Schiebepuzzles zu erstellen, das auf Französisch auch als Taquin bezeichnet wird .
Einzelheiten:
Bei einer Eingabe bestehend aus:
- ein Bild,
- eine ganze Zahl
n
, - eine andere ganze Zahl
r
,
Ihr Programm oder Ihre Funktion oder alles andere, was passt, muss dasselbe Bild ( dh dieselbe Größe und dasselbe Format) wie die Eingabe ausgeben , das jedoch den folgenden Prozess durchlaufen hat:
- Teilen Sie das Bild in
n²
Rechtecke, - entferne eines dieser Rechtecke nach dem Zufallsprinzip,
- Verschieben Sie eine zufällige Anzahl zusammenhängender Rechtecke von der von Punkt (2.) betroffenen Linie / Spalte, damit das erzeugte Loch gefüllt wird und ein weiteres in dieser Linie / Spalte erzeugt wird. Diese Zahl kann angegeben werden,
0
wenn sich der Rohling in einer Ecke oder Kante befindet.
Wiederholen Sie (3.) r
mal.
Klarstellungen:
- Wenn Sie in Schritt (3.) Rechtecke aus der Zeile verschoben haben, müssen Sie in der nächsten Wiederholung Rechtecke aus der Spalte verschieben.
- Wenn Sie Rechtecke in einem Zeilenschritt von links nach rechts verschoben haben, müssen sie im nächsten Zeilenschritt von rechts nach links verschoben werden. Dies gilt auch für Spalten von oben nach unten und von unten nach oben.
- Sie können davon ausgehen, dass
n
dies so gewählt wird, dass die Länge der Seiten des Bildes geteilt wird.
Ein letzter Punkt:
Eine animierte .gif
Darstellung des gesamten Prozesses ist sehr willkommen.
Ich schlage vor, das folgende Bild (das ist 1024x768
) zu verwenden, mit n=16
und r=100
als Modell können Sie jedes andere Bild verwenden (sofern es relevant ist und den SE-Regeln entspricht, natürlich).
Beachten Sie, dass Richtlinien für Standardlücken gelten.
Das ist Code-Golf , also gewinnt die kürzere Einreichung!
Da ein Beispiel angefordert wurde, wird hier eines "von Hand" mit n=4
und erstelltr=1
Schritte 1 und 2
Schritt 3 : Zeilenweise, 2 Rechtecke links
move a random number of contiguous rectangles
Kann es 0 Rechtecke sein? (Es wäre