Simplemente tomaría esta imagen y haría que cada color se agregara uno a cada dígito hexadecimal. Por ejemplo, #49de5f
se convertiría #5aef60
(con el 9
bucle a un a
, y el f
bucle a un 0
.)
Esto también significaría que todo el blanco ( #ffffff
) se volvería negro ( #000000
) porque todos los f
bucles vuelven a 0
, pero todo el negro se convertirá en un tono más claro de negro ( #111111
).
La puntuación se basa en el menor número de bytes utilizados, ya que esta es una pregunta de código de golf .
Use la imagen de abajo como la imagen de entrada para su código, y ponga la imagen de salida de su código en su respuesta.
Si lo desea, también puede usar esta otra imagen del arco iris:
ef
bytes (que debería serf0
lo opuesto a lo00
que sucede cuando solo agrega 17 y toma el mod 256).Respuestas:
Pyke,
1713 bytesPruébalo aquí!
Toma la entrada como una matriz de píxeles enteros en 3D y las salidas en el mismo formato
fuente
Mathematica, 78 bytes
Toma y devuelve un objeto de imagen (para crear un objeto de imagen, simplemente pegue la imagen en Mathematica).
Resultado para el caso de prueba:
Tomando la entrada y la salida de retorno como una matriz 3D de valores de canales enteros, esto se reduce a 51 bytes :
Pero esas meta publicaciones aún no tienen una cantidad abrumadora de soporte, por lo que voy con la versión de 78 bytes por ahora.
fuente
Verilog, 220 bytes:
Actualmente no está claro cómo se deben proporcionar las dimensiones y si la matriz se debe transmitir o proporcionar de una vez. Voy a transmitirlo 8 bits a la vez usando una señal de reloj (con un indicador de datos válidos que baja cuando se procesa toda la imagen) e ingresar / emitir las dimensiones como enteros de 32 bits:
fuente
Python, 226 bytes
¡Ahora es válido!
Usa la biblioteca Pillow.
Salida:
¡Gracias a @TuukkaX por guardar 9 bytes!
¡Gracias a @ mbomb007 por guardar 18 bytes!
fuente
0xFF
lugar de255
?0xFF
allí: Dfrom PIL import*
. También creo queImage.open
se puede cambiar a justoopen
después de eso.from PIL import*
, pero no puedo cambiar elImage.open
Dyalog APL ,
2115 bytesSupongo que la salida puede estar en el mismo formato.
La nueva solución toma una matriz de valores [[ r , g , b , r , g , b ], [ r , g , b , ...
Explicación
⎕
obtener entrada numérica16 16⊤
convertir a base de 2 dígitos 161+
sumar 1, es decir 0 → 1, 1 → 2, 15 → 1616|
módulo 16, es decir 16 → 016⊥
convertir de base 16Ejemplo
La solución antigua de 21 bytes toma la matriz de [["RRGGBB", "RRGGBB"], ["RRGGBB", ...
Necesidades
⎕IO←0
, lo cual es predeterminado en muchos sistemas.Explicación
{
...}¨
para cada cadena RGB de 6 caracteres, se representa como⍵
y se hace:n←⎕D,⎕A
asigne "0 ... 9A ... Z" para n⍵⍳⍨
encontrar índices de los caracteres individuales en n1+
agregue uno al índice, es decir, 0 → 1, 1 → 2, 15 → 1616|
módulo 16, es decir 16 → 0n[
...]
use eso para indexar en nEjemplo
fuente
C -
1141137066617267 bytesAquí está el código (con soporte para el caso de prueba de Martin Ender (sin que sea 60b)):
Y aquí hay una versión menos ofuscada:
Compilar y ejecutar con
gcc -o color colorgolf.c && cat a.bmp | ./color > b.bmp
Este código admite trabajos con mapas de bits . Para convertir
png
archivosbmp
, utilicé el siguiente comando:convert -flatten -alpha off png.png a.bmp
El código asume que el
bmp
encabezado tiene 54 bytes de longitud, en este caso funciona, pero no estoy seguro si no estoy rompiendo algo discretamente.Además, este es el arcoiris:
fuente
Java 142 bytes
Golfizado:
fuente
i
tanto el parámetro como el bucle for, por lo que cambiaría el parámetro a algo mása
. Además, puede jugar un poco más al golf quitando elint
frentej
y agregándolo alint i
. Así como este:BufferedImage t(BufferedImage a){for(int i=-1,j;++i<a.getWidth();)for(j=-1;++j<a.getHeight();)a.setRGB(i,j,a.getRGB(i,j)+1118481);return a;}
. Además, eche un vistazo a esta publicación: Consejos para jugar al golf en Java . :)R, 302 bytes
Lejos de ser perfecto, pero aquí va:
Explicación:
fuente