หน้าจอเทอร์มินัลที่รองรับ Xterm 256 สีเพิ่ม 240 สีด้านบนของสีระบบ 16 สีปกติ สี 16-231 ใช้ 6 ระดับ (0, 95, 135, 175, 215, 255) สีแดงสีเขียวและสีน้ำเงินเรียงคำศัพท์ สี 232-255 เป็นสีเทาเพียง 24 ระดับ (8 ... 238 คูณ 10 วินาที) เพื่อให้ได้แนวคิดที่ดีขึ้นเกี่ยวกับสิ่งที่ฉันกำลังพูดถึงดูตารางนี้
ความท้าทาย
เป้าหมายของคุณคือสร้างโปรแกรมหรือฟังก์ชั่นที่ใช้ป้อนค่า rgb และส่งออกหมายเลขที่สอดคล้องกับสี Xterm ที่ใกล้เคียงที่สุดกับค่า rgb นั้น เนื่องจากสีของระบบ 16 สี (สี 0-15) มักจะสามารถปรับแต่งได้คุณจะไม่รวมค่าเหล่านี้จากการแปลงนี้
เพื่อกำหนดสิ่งที่สี "ใกล้เคียงที่สุด" ให้ใช้ระยะทางแมนฮัตตันตามส่วนประกอบสีแดงสีเขียวและสีน้ำเงิน ยกตัวอย่างเช่นrgb(10, 180, 90)
เป็น 20 หน่วยออกไปจากrgb(0, 175, 95)
(สี 35) abs(10 - 0) + abs(180 - 175) + abs(90 - 95) == 20
เพราะ หากสีอินพุตมีค่าเท่ากันระหว่างสี Xterm สองสีหรือมากกว่าให้เอาต์พุตสี Xterm พร้อมกับดัชนีสูงสุด
ตัวอย่าง
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
กฎระเบียบ
- ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
- โปรแกรมหรือฟังก์ชั่นของคุณได้รับอนุญาตให้รับค่า rgb ในรูปแบบที่เหมาะสมรวมถึง:
- แยกอาร์กิวเมนต์สำหรับสีแดงสีเขียวและสีน้ำเงิน
- รายการ tuple พจนานุกรมหรือที่คล้ายกัน
- สตริงหรือ stdin ที่คั่นด้วยตัวคั่น
- สีหกเหลี่ยม (เช่น
#ff8000
)
- คุณอาจคิดว่าค่า r, g และ b ทั้งหมดจะเป็นจำนวนเต็มตั้งแต่ 0 ถึง 255
- เนื่องจากสีของระบบ 16 จะถูกแยกออกจากการทำแผนที่ผลลัพธ์ทั้งหมดควรอยู่ในช่วง 16 ... 255
นี่คือรหัส - กอล์ฟดังนั้นรหัสที่สั้นที่สุดจึงชนะ