Sommaire
Le but de ce défi est de créer une version image défaite d'un puzzle de 15 casse-tête / coulissant également appelé taquin en français.
Détails:
Soit une entrée composée de:
- une image,
- un entier
n
, - un autre entier
r
,
votre programme, ou fonction, ou tout autre élément qui convient, doit produire la même image ( c'est-à-dire la même taille et le même format) que l'entrée, mais qui a subi le processus suivant:
- divisez l'image en
n²
rectangles, - supprimer l'un de ces rectangles, au hasard,
- déplacez un nombre aléatoire de rectangles contigus de la ligne / colonne affectée par le point (2.) afin que le trou créé soit rempli et qu'un autre soit généré dans cette ligne / colonne. Ce nombre peut être
0
si le blanc est dans un coin ou un bord.
Répétez (3.) r
fois.
Clarifications:
- Si vous avez déplacé des rectangles de la ligne à l'étape (3.), vous devez déplacer les rectangles de la colonne dans la répétition suivante,
- si vous avez déplacé des rectangles de gauche à droite dans un pas de ligne, ils doivent être déplacés de droite à gauche dans le pas de ligne suivant, de même pour les colonnes de haut en bas et de bas en haut concernant les colonnes,
- vous pouvez supposer que ce
n
sera choisi de sorte qu'il divise les longueurs des côtés de l'image.
Un dernier point:
Une animation .gif
montrant l'ensemble du processus est la bienvenue.
Je propose d'utiliser l'image suivante (qui est 1024x768
), avec n=16
et r=100
comme modèle, vous pouvez utiliser n'importe quelle autre image (tant qu'elle est pertinente et conforme aux règles de SE, bien sûr).
Notez que les politiques d'échappatoires standard s'appliquent.
Il s'agit de code-golf , donc la soumission la plus courte gagne!
Puisqu'un exemple a été demandé, en voici un, fait "à la main", avec n=4
etr=1
Étapes 1 et 2
Étape 3 : ligne par ligne, 2 rectangles à gauche
move a random number of contiguous rectangles
peut-il être 0 rectangles? (ce serait