İlk satırı forma sahip bir dize ya da metin dosyasına giren bir program yazın.
width height
ve takip eden her satır forma sahiptir.
x y intensity red green blue
nerede:
width
veheight
herhangi bir pozitif tam sayı olabilir.x
vey
herhangi bir tam sayı olabilir.intensity
Negatif olmayan bir tamsayı olabilir.red
,green
veblue
0 ila 255 arasında bir tam sayı olabilir.
Programınız zorunluluk çıkışı gerçek renkli boyutları herhangi bir ortak kayıpsız görüntü dosyası biçiminde görüntü width
ile height
. Her x y intensity red green blue
çizgi, resmin üzerine çizilmesi gereken renkli bir yıldızı veya küreyi temsil eder. 0 da dahil olmak üzere çekilecek herhangi bir sayıda yıldız olabilir.
Resmin çizilmesi için kullanılan algoritma aşağıdaki gibidir, ancak sonuç aynı olduğu sürece istediğiniz gibi uygulayabilirsiniz:
Görüntüdeki her piksel için ( X , Y ) (buradaki X , en sol kenarda 0, en geniş kenarda genişlik-1 ve en üst kenarda Y , üst kenarda 0 ve alt kenarda yükseklik-1'dir ) C ϵ { kırmızı , yeşil , mavi } (0 ile 255 arasında sabitlenmiş bir değer) denklemde verilir:
Burada dist fonksiyonu ya bir Öklid mesafe :
Veya Manhattan mesafesi :
Golf kabiliyeti veya estetiğe göre istediğiniz mesafe fonksiyonunu seçin.
Girişteki ilk satırın yanı sıra her satır Yıldız kümesinin bir öğesidir . Bu nedenle, örneğin, S x temsil
x
giriş hatları birinde değeri ve S Cı herhangi birini temsil ederred
,green
ya dablue
, bağlı olarak hangi renk kanalı anda hesaplanır.
Örnekler
Örnek A
Giriş ise
400 150
-10 30 100 255 128 0
çıktı olmalıdır
Öklid mesafesini kullanıyorsanız ve
Manhattan mesafesini kullanıyorsanız.
Örnek B
Giriş ise
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
Öklid ve Manhattan mesafesi için ilgili çıktılar;
ve .
Örnek C
Giriş ise
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
çıktı olmalıdır
Öklid mesafesini kullanıyorsanız ve
Manhattan mesafesini kullanıyorsanız.
Örnek D
Giriş ise
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
çıktı olmalıdır
Öklid mesafesini kullanıyorsanız ve
Manhattan mesafesini kullanıyorsanız.
Örnek E
Giriş ise
100 1
bu durumda çıktı, tamamen siyah olan 1 piksel yüksekliğinde 100 piksel genişliğinde bir görüntü olmalıdır.
notlar
- Giriş dizesini ya da onu stdin'den veya komut satırından içeren bir metin dosyasının adını alın, aksi takdirde dizgiyi alan bir işlev yazabilirsiniz.
- Resmin "çıktısı" ya şu anlama gelir:
- İstediğiniz adla bir dosyaya kaydetme.
- Ham görüntü dosyası verisinin stdout'a yazdırılması.
- Bu gibi görüntü görüntüleme PIL Var
image.show()
.
- Resimlerinizin pikselin mükemmel olduğunu kontrol etmeyeceğim (Yığın Değişimi yine de görüntüleri sık sık sıkıştırır), ancak görsel olarak herhangi bir farklılık söyleyebilirsem çok şüpheli olacağım.
- Grafik / görüntü kütüphanelerini kullanabilirsiniz.
Kazanan
Bayt cinsinden en kısa gönderme kazanır. Bağlar halinde, en erken başvuru kazanır.
Eğlenceli Bonus: Gerçekten muhteşem bir çıktı görüntüsü için girdi verin.