Ringkasan
Tujuan dari tantangan ini adalah untuk membuat versi gambar yang dibatalkan dari puzzle 15-puzzle / geser yang juga disebut taquin dalam bahasa Prancis.
Detail:
Diberikan input yang terdiri dari:
- sebuah gambar,
- bilangan bulat
n
, - bilangan bulat lainnya
r
,
program Anda, atau fungsi, atau apa pun yang cocok, harus menampilkan gambar yang sama ( yaitu ukuran dan format yang sama) sebagai input, tetapi yang menjalani proses berikut:
- bagilah gambar menjadi
n²
empat persegi panjang, - hapus salah satu dari empat persegi panjang itu, secara acak,
- pindahkan sejumlah acak persegi panjang yang berdekatan dari garis / kolom yang dipengaruhi oleh titik (2.) sehingga lubang yang dibuat diisi dan lubang lain dihasilkan di baris / kolom ini. Angka ini bisa
0
jika kosong di sudut atau di tepi.
Ulangi (3.) r
kali.
Klarifikasi:
- Jika Anda memindahkan persegi panjang dari garis di langkah (3.), Anda harus memindahkan persegi panjang dari kolom di pengulangan berikutnya,
- jika Anda memindahkan persegi panjang dari kiri ke kanan dalam langkah-langkah, mereka harus dipindahkan kanan-ke-kiri pada langkah-langkah berikutnya, sama untuk kolom terkait dari atas ke bawah dan dari bawah ke atas,
- Anda dapat mengasumsikan bahwa
n
akan dipilih sehingga ia membagi panjang sisi-sisi gambar.
Poin terakhir:
Sebuah animasi yang .gif
menunjukkan seluruh proses sangat disambut.
Saya mengusulkan untuk menggunakan gambar berikut (yang 1024x768
), dengan n=16
dan r=100
sebagai model, Anda dapat menggunakan gambar lain (selama itu relevan dan mematuhi aturan SE, tentu saja).
Perhatikan bahwa kebijakan standar lubang berlaku.
Ini adalah kode-golf , jadi pengiriman yang lebih singkat menang!
Karena contoh diminta, ini adalah satu, dibuat "dengan tangan", dengan n=4
danr=1
Langkah 1 dan 2
Langkah 3 : garis-bijaksana, 2 persegi panjang ke kiri
move a random number of contiguous rectangles
bisakah 0 persegi panjang? (Ini akan merepotkan untuk membuat program mengubah perilaku ketika kosong di tepi / sudut)