Mengingat gambar yang hanya memiliki piksel hitam dan putih dan lokasi (x, y) yang merupakan piksel putih, warnai piksel putih berdasarkan jarak Manhattan minimum dari (x, y) di jalur yang hanya melibatkan melintasi piksel putih lainnya.
The rona piksel berwarna harus sebanding dengan jarak mereka dari (x, y), sehingga piksel pada (x, y) akan memiliki rona 0 ° (merah murni) dan piksel terjauh dari (x, y) akan memiliki rona 360 ° (juga merah), dengan rona lainnya bercampur mulus dan linier di antaranya. The saturasi dan nilai keduanya harus 100%.
Jika piksel putih tidak terhubung ke (x, y) melalui piksel putih lainnya, maka piksel itu harus tetap putih.
Detail
- Input akan terdiri dari nama file gambar atau data gambar mentah, ditambah bilangan x dan y.
- Gambar output dapat disimpan ke file atau disalurkan mentah ke stdout dalam format file gambar umum, atau hanya ditampilkan.
- Nilai x adalah 0 pada piksel paling kiri, dan meningkat ke kanan. Nilai y adalah 0 pada piksel paling atas dan naik turun. (x, y) akan selalu berada dalam batas gambar.
- Program dan fungsi lengkap diizinkan.
Kode terpendek dalam byte menang.
Contohnya
Semua gambar ini telah dirampingkan untuk menghemat ruang. Klik untuk melihat ukuran penuh.
Input gambar:
(x,y) = (165,155)
dan (x,y) = (0,0)
Input gambar dan output dengan (x,y) = (0,0)
:
Input gambar dan output dengan (x,y) = (600,350)
:
Input gambar dan output dengan (x,y) = (0,0)
:
Input gambar dan output dengan (x,y) = (0,0)
:
Opsional -30% bonus: gunakan jarak Euclidean. Saran untuk algoritme Anda adalah sebagai berikut (garis besar umum):
- Memiliki piksel awal.
- Isi banjir dari piksel itu.
- Untuk setiap piksel yang dicapai dalam isi banjir,
- Pindah dari piksel awal ke piksel dalam setengah unit langkah, dalam garis lurus.
- Pada setiap langkah, terapkan
int()
pada koordinat x dan y. Jika piksel pada koordinat ini berwarna hitam, berhenti. Kalau tidak, lanjutkan. (Ini adalah metode line-of-sight.) - Setiap piksel yang mencapai yang membatasi piksel putih dan / atau piksel yang sebelumnya diberi label dengan jarak yang jauh lebih tinggi (yaitu +10) menjadi piksel awal.
Dalam arti yang lebih meta, algoritma ini menyebar ke setiap piksel yang dapat dijangkau dalam garis lurus dari piksel awal / yang sudah berwarna, lalu "inci" di sekitar tepinya. Bit "jarak jauh lebih tinggi" dimaksudkan untuk mempercepat algoritma. Jujur, tidak masalah bagaimana Anda menerapkan jarak Euclidean, hanya saja harus terlihat seperti ini.
Inilah contoh pertama yang terlihat dengan jarak Euclidean, menggunakan algoritma di atas:
Masukkan gambar dan (x,y) = (165,155)
Terima kasih banyak kepada Calvin Hobi dan trichoplax karena telah membantu menulis tantangan ini! Selamat bersenang-senang!