256 색 Xterm 호환 터미널은 일반적인 16 가지 시스템 색 위에 240 색을 추가합니다. 색상 16-231은 6 단계 (0, 95, 135, 175, 215, 255)의 빨강, 녹색 및 파랑을 사전 식 순서로 사용합니다. 색상 232-255는 단순히 24 단계 회색 (8 ... 238 x 10 초)입니다. 내가 말하는 것에 대한 더 나은 아이디어를 얻으려면 이 표를 참조하십시오 .
도전
목표는 입력 값으로 rgb 값을 가져와 해당 rgb 값에 가장 가까운 Xterm 색상에 해당하는 숫자를 출력하는 프로그램 또는 함수를 만드는 것입니다. 16 개의 시스템 색상 (0-15 색상)은 종종 사용자 정의 할 수 있으므로이 변환에서 제외됩니다.
"가장 가까운"색상을 더 잘 정의하려면 빨강, 녹색 및 파랑 구성 요소를 따라 맨해튼 거리 를 사용하십시오 . 예를 들어, (컬러 35) rgb(10, 180, 90)
에서 20 단위 떨어져 rgb(0, 175, 95)
있기 때문 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 값을 취할 수 있습니다.
- 빨강, 초록, 파랑에 대한 별도의 인수
- 목록, 튜플, 사전 또는 이와 유사한
- 구분 기호로 구분 된 문자열 또는 stdin
- 진수 색상 (예
#ff8000
)
- 모든 r, g 및 b 값이 0과 255 사이의 정수라고 가정 할 수 있습니다.
- 16 개의 시스템 색상이 매핑에서 제외되므로 모든 출력은 16 ... 255 범위에 있어야합니다.
이것은 code-golf 이므로 가장 짧은 코드가 승리합니다.