Ini musim dingin, dan waktu tahun telah datang untuk mulai menjadi dingin (dan untuk jilbab warna-warni yang aneh untuk mulai muncul ... segera). Mari kita menulis beberapa kode untuk membuat gambar avatar dan gambar lain yang membeku, agar sesuai dengan temanya!
Memasukkan
Input untuk pengajuan tantangan ini harus berupa gambar (gambar untuk dibekukan) dan angka (ambang, yang akan dijelaskan nanti).
Anda dapat memasukkan gambar dengan cara apa pun bahasa Anda mendukungnya (jalur file atau URL sebagai argumen, mengambilnya dari clipboard, menyeret dan menjatuhkan gambar, dll.) Dan dalam format apa pun yang tercantum di sini yang mengekspresikan warna dalam RGB (Anda dapat mendukung / membutuhkan RGBA sebagai gantinya jika Anda inginkan, tetapi ini bukan keharusan).
Anda dapat memasukkan nomor dengan cara apa pun yang Anda inginkan (argumen baris perintah, STDIN, dialog input, dll.), Dengan pengecualian hardcoding ke dalam program Anda (mis. n=10
). Jika Anda menggunakan jalur file / URL untuk gambar, itu harus dimasukkan dengan cara ini juga.
Keluaran
Program harus memproses gambar sesuai dengan deskripsi di bawah ini dan kemudian menampilkannya dengan cara apa pun yang Anda inginkan (ke file, menunjukkannya di layar, meletakkannya di clipboard, dll.).
Deskripsi
Pengajuan harus memproses gambar dengan tiga langkah berikut. n
mengacu pada nomor yang diterima program Anda sebagai input bersama dengan gambar.
Oleskan blur radius
n
ke gambar masukan dengan mengganti R setiap pixel ini, G, dan nilai-nilai B dengan rata-rata R, G, dan nilai-nilai B dari semua piksel dalam jarak Manhattan darin
piksel, mengabaikan semua out-of-batas koordinat. (Yaitu semua piksel dengan jumlah selisih X dan selisih Y kurang dari atau sama dengann
.)(catatan: Saya menggunakan blur Gaussian untuk gambar di atas karena ada fungsi bawaan yang nyaman untuk itu, sehingga gambar Anda mungkin terlihat sedikit berbeda.)
Atur setiap piksel ke piksel acak dalam jarak
n/2
piksel ("jarak" didefinisikan dengan cara yang sama seperti pada langkah sebelumnya).Ini harus dilakukan dengan mengulang gambar dan mengatur setiap piksel ke piksel acak dalam rentang ini, sehingga beberapa piksel mungkin hilang seluruhnya dan beberapa mungkin akan diduplikasi.
Semua perubahan harus berlaku secara bersamaan. Dengan kata lain, gunakan nilai-nilai lama piksel (setelah langkah 1 tetapi sebelum langkah ini), bukan nilai baru setelah mengaturnya ke piksel acak.
Lipat gandakan nilai "biru" RGB dari setiap piksel dengan 1,5, membatasi pada 255 (atau apa pun nilai maksimum untuk pita piksel) dan membulatkan ke bawah.
Aturan
Anda dapat menggunakan pustaka gambar / fungsi terkait pemrosesan gambar yang ada dalam bahasa Anda; namun, Anda tidak dapat menggunakan fungsi apa pun yang melakukan salah satu dari tiga tugas utama yang disebutkan dalam deskripsi. Misalnya, Anda tidak dapat menggunakan
blur
fungsi, tetapigetPixel
fungsi itu baik-baik saja.Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
dx <= n && dy <= n
adalah representasi jarak Manhattan yang akurat, bukan?