Tulis program yang menggunakan string atau file teks yang baris pertamanya memiliki formulir
width height
dan setiap baris berikutnya memiliki formulir
x y intensity red green blue
dimana:
width
danheight
mungkin bilangan bulat positif.x
dany
mungkin bilangan bulat apa saja.intensity
mungkin bilangan bulat non-negatif.red
,,green
danblue
dapat berupa bilangan bulat dari 0 hingga 255 inklusif.
Anda Program keharusan output truecolor gambar dalam format file gambar lossless umum yang dimensi width
oleh height
. Setiap x y intensity red green blue
garis mewakili bintang atau bola warna-warni yang harus digambar pada gambar. Mungkin ada sejumlah bintang untuk digambar, termasuk 0. Anda dapat menganggap string atau file memiliki baris tambahan.
Algoritma untuk menggambar gambar adalah sebagai berikut, meskipun Anda dapat mengimplementasikannya dengan cara apa pun yang Anda suka asalkan hasilnya identik:
Untuk setiap piksel ( X , Y ) dalam gambar (di mana X adalah 0 di tepi paling kiri dan lebar-1 di tepi paling kanan, dan Y adalah 0 di tepi atas dan tinggi-1 di tepi bawah), saluran warna C ϵ { merah , hijau , biru } (nilai yang disematkan antara 0 hingga 255) diberikan oleh persamaan:
Di mana fungsi dist adalah jarak Euclidean :
Atau jarak Manhattan :
Pilih fungsi jarak mana saja yang Anda inginkan, berdasarkan golf atau estetika.
Setiap baris dalam input selain yang pertama adalah elemen dari set Bintang . Jadi, misalnya, S x mewakili
x
nilai pada salah satu jalur input, dan S C mewakili baikred
,green
ataublue
, tergantung pada channel warna saat ini sedang dihitung.
Contohnya
Contoh A
Jika inputnya
400 150
-10 30 100 255 128 0
output seharusnya
jika Anda menggunakan jarak Euclidean, dan
jika Anda menggunakan jarak Manhattan.
Contoh B
Jika inputnya
200 200
100 100 10 255 255 255
20 20 40 255 0 0
180 20 40 255 255 0
180 180 40 0 255 0
20 180 40 0 0 255
output masing-masing untuk jarak Euclidean dan Manhattan seharusnya
dan .
Contoh C
Jika inputnya
400 400
123 231 10 206 119 85
358 316 27 170 47 99
95 317 3 202 42 78
251 269 17 142 150 153
43 120 3 145 75 61
109 376 6 230 231 52
331 78 21 31 81 126
150 330 21 8 142 23
69 155 11 142 251 199
218 335 7 183 248 241
204 237 13 112 253 34
342 89 18 140 11 123
output seharusnya
jika Anda menggunakan jarak Euclidean, dan
jika Anda menggunakan jarak Manhattan.
Contoh D
Jika inputnya
400 400
123 231 5 206 119 85
358 316 5 170 47 99
95 317 5 202 42 78
251 269 5 142 150 153
43 120 5 145 75 61
109 376 5 230 231 52
331 78 5 31 81 126
150 330 5 8 142 23
69 155 5 142 251 199
218 335 5 183 248 241
204 237 5 112 253 34
342 89 5 140 11 123
output seharusnya
jika Anda menggunakan jarak Euclidean, dan
jika Anda menggunakan jarak Manhattan.
Contoh E
Jika inputnya
100 1
maka outputnya harus selebar 100 pixel dengan tinggi gambar 1 pixel yang benar-benar hitam.
Catatan
- Ambil string input atau nama file teks yang berisi itu dari stdin atau baris perintah, atau Anda dapat menulis fungsi yang mengambil string.
- "Menghasilkan" gambar berarti:
- Menyimpannya ke file dengan nama pilihan Anda.
- Mencetak data file gambar mentah ke stdout.
- Menampilkan gambar, seperti dengan PIL 's
image.show()
.
- Saya tidak akan memeriksa bahwa gambar Anda pixel sempurna (Stack Exchange kehilangan kompresi gambar), tetapi saya akan sangat curiga jika saya secara visual dapat membedakannya.
- Anda dapat menggunakan perpustakaan grafik / gambar.
Kemenangan
Pengajuan terpendek dalam byte menang. Dalam hal ikatan, pengajuan yang paling awal menang.
Bonus Menyenangkan: Berikan input untuk gambar output yang benar-benar spektakuler.