256 renkli Xterm uyumlu terminaller, normal 16 sistem renginin üstüne 240 renk ekler. Renkler 16-231, sözlükbilimsel olarak sıralanan 6 düzey (0, 95, 135, 175, 215, 255) kırmızı, yeşil ve mavi kullanır. 232-255 renkleri basitçe 24 gri seviyesidir (8 ... 238 x 10s). Neden bahsettiğim hakkında daha iyi bir fikir edinmek için bu tabloya bakın .
Meydan okuma
Amacınız giriş olarak rgb değerlerini alan ve o rgb değerine en yakın Xterm rengine karşılık gelen sayıyı çıkaran bir program veya işlev yapmaktır. 16 sistem rengi (0-15 renk) genellikle özelleştirilebilir olduğundan, bunları bu dönüşümden hariç tutarsınız.
"En yakın" rengin ne olduğunu daha iyi tanımlamak için kırmızı, yeşil ve mavi bileşenler boyunca Manhattan mesafesini kullanın . Örneğin, çünkü rgb(10, 180, 90)
20 birim rgb(0, 175, 95)
(renk 35) uzaktır abs(10 - 0) + abs(180 - 175) + abs(90 - 95) == 20
. Giriş rengi iki veya daha fazla Xterm rengi arasındaysa, Xterm rengini en yüksek dizine sahip olarak çıkarın.
Örnekler
R G B Xterm
0 0 0 ==> 16
95 135 0 ==> 64
255 255 255 ==> 231
238 238 238 ==> 255
90 133 140 ==> 66
218 215 216 ==> 188
175 177 178 ==> 249
175 0 155 ==> 127
75 75 75 ==> 239
23 23 23 ==> 234
115 155 235 ==> 111
kurallar
- Standart boşluklar yasaktır
- Programınızın veya fonksiyonunuzun rgb değerlerini makul bir formatta almasına izin verilir, örneğin:
- Kırmızı, yeşil ve mavi için ayrı argümanlar
- Liste, grup, sözlük veya benzeri
- Sınırlayıcı ile ayrılmış dize veya stdin
- Onaltılık renkler (örn.
#ff8000
)
- Tüm r, g ve b değerlerinin 0 ile 255 arasında bir tamsayı olacağını varsayabilirsiniz.
- 16 sistem rengi eşlemeden çıkartılacağından, tüm çıktılar 16 ... 255 aralığında olmalıdır.
Bu kod golf , bu yüzden en kısa kod kazanır.