Los terminales compatibles con Xterm de 256 colores añaden 240 colores además de los 16 colores habituales del sistema. Los colores 16-231 usan 6 niveles (0, 95, 135, 175, 215, 255) de rojo, verde y azul, ordenados lexicográficamente. Los colores 232-255 son simplemente 24 niveles de gris (8 ... 238 por 10s). Para tener una mejor idea de lo que estoy hablando, vea esta tabla .
El reto
Su objetivo es hacer un programa o función que tome, como entrada, valores rgb y genere el número correspondiente con el color Xterm más cercano a ese valor rgb. Dado que los 16 colores del sistema (colores 0-15) a menudo son personalizables, los excluirá de esta conversión.
Para definir mejor cuál es el color "más cercano", use la distancia de Manhattan a lo largo de los componentes rojo, verde y azul. Por ejemplo, rgb(10, 180, 90)
está a 20 unidades dergb(0, 175, 95)
(color 35) porque abs(10 - 0) + abs(180 - 175) + abs(90 - 95) == 20
. Si el color de entrada es igual entre dos o más colores Xterm, envíe el color Xterm con el índice más alto.
Ejemplos
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
Reglas
- Las lagunas estándar están prohibidas
- Su programa o función puede tomar valores rgb en cualquier formato razonable, incluyendo:
- Argumentos separados para rojo, verde y azul.
- Una lista, tupla, diccionario o similar.
- Cadena separada por delimitador o stdin
- Colores hexadecimales (p
#ff8000
. Ej. )
- Puede suponer que todos los valores r, g y b serán enteros entre 0 y 255.
- Dado que los 16 colores del sistema deben excluirse de la asignación, todas las salidas deben estar en el rango de 16 ... 255.
Este es el código de golf , por lo que gana el código más corto.
Kotlin ,
299290267265 bytesEmbellecido
Prueba
TIO
TryItOnline
fuente
Lote, 266 bytes
fuente
Stax , 41 bytes
¡Ejecute y depure en línea!
Versión ASCII de 50 bytes:
fuente
C (gcc)
202 192 157 150 (141 con errores) 138134 bytesGracias @ceilingcat
Pruébalo en línea!
fuente