Резюме
Цель этой проблемы заключается в создании отмененным образом-версии 15-головоломки / скользящей головоломка также называется taquin на французском.
Детали:
Учитывая вход состоит из:
- изображение,
- целое число
n
, - другое целое число
r
,
Ваша программа, или функция, или что-либо еще, что подходит, должны выводить то же изображение ( то есть тот же размер и формат), что и входные данные, но подверглось следующему процессу:
- разделить изображение на
n²
прямоугольники, - удалить один из этих прямоугольников, случайно,
- переместите случайное число смежных прямоугольников из строки / столбца, на который воздействует точка (2.), чтобы созданное отверстие было заполнено, и в этой строке / столбце было сгенерировано еще одно. Это число может быть,
0
если пробел находится в углу или на краю.
Повторите (3.) r
раз.
Разъяснения:
- Если вы переместили прямоугольники со строки на шаге (3.), вы должны переместить прямоугольники со столбца в следующем повторении,
- если вы переместили прямоугольники слева направо на шаге строки, они должны быть перемещены справа налево на следующем шаге строки, то же самое для столбцов сверху вниз и снизу вверх относительно столбцов,
- Вы можете предположить, что
n
будет выбрано таким образом, чтобы он разделял длины сторон изображения.
Последний пункт:
Анимированные .gif
показы всего процесса очень приветствуются.
Я предлагаю использовать следующую картинку (которая есть 1024x768
), n=16
и r=100
в качестве модели вы можете использовать любую другую картинку (если она, конечно, актуальна и соответствует правилам SE).
Обратите внимание, что применяются стандартные правила лазеек .
Это код-гольф , поэтому выигрывает более короткая подача!
Так как пример был запрошен, вот один, сделанный «вручную», с n=4
иr=1
Шаги 1 и 2
Шаг 3 : по линии, 2 прямоугольника слева
move a random number of contiguous rectangles
это может быть 0 прямоугольников? (было бы