Tratar con colores en lenguajes sin marcas a menudo complica las cosas. Me gustaría ver algunas variaciones de cómo se usa el color en diferentes idiomas.
El objetivo de esta competencia es mostrar 'Hello World' en los siete colores del arcoíris.
Según Wikipedia, estos son los 7 colores.
Red #FF0000 (RGB: 255, 0, 0)
Orange #FF7F00 (RGB: 255, 127, 0)
Yellow #FFFF00 (RGB: 255, 255, 0)
Green #00FF00 (RGB: 0, 255, 0)
Blue #0000FF (RGB: 0, 0, 255)
Indigo #6600FF (RGB: 111, 0, 255)
Violet #8B00FF (RGB: 143, 0, 255)
Las normas
- El programa debe generar 'Hola mundo'. (No necesariamente debe ser texto, pero debe ser distinguible como 'Hola mundo')
- Cada letra debe ser de un color diferente.
- Los colores pueden estar en cualquier orden.
- Debe usar cada uno de los siete colores al menos una vez. (Puede usar más de los colores dados)
- No se utilizan lenguajes de marcado en ningún caso .
El ganador es quien tiene la menor cantidad de personajes Y sigue las reglas
Bonus -1 carácter si está escrito en DART
Elegiré al ganador el 11 de enero (si no recuerdo mal; D).
Buena suerte
GANADOR (s)
Cometí un error D :, ganadores actualizados.
1er. stranac - Python, 60 caracteres
2do. Ilmari - Karonen Perl + GD, 146 caracteres
Longitud más corta con todas las reglas cumplidas.
Brownie señala a JiminP para la respuesta de DART.
fuente
H
se imprime utilizando el código de escape para el negro, por lo que no es visible en la mayoría de los terminales.Mathematica
Lo sé, lo sé, no cumple con las reglas ... pero tuve que intentar jugar con las funciones de procesamiento de imágenes de Mathematica.
Captura de pantalla:
fuente
Haskell, 88 personajes
Tenga en cuenta que esto usa colores de terminal ANSI, de los cuales solo hay 6 y es posible que no coincidan con los colores exactos dados (depende de la configuración del terminal), por lo que estoy doblando un poco las reglas aquí.
Versión ligeramente más larga con colores casi correctos, 107 caracteres
Esta versión utiliza colores xterm en lugar de colores ANSI. Esto no depende de ninguna paleta personalizada, y utiliza los colores más cercanos que pude encontrar en la paleta xterm de 256 colores.
fuente
Python, 261 caracteres
Implementa la especificación exactamente, generando una imagen ppm. Aquí está el resultado, convertido a gif y ampliado por un factor de 4:
fuente
n=255;C=((n,0,0),(n,127,0),(n,n,0),(0,n,0),(0,0,n),(111,0,n),(143,0,n))
Perl -> terminal ANSI, 53 caracteres
Esto produce exactamente la misma salida que la solución Haskell de Hammar . Utiliza
say
, por lo que necesita perl 5.10+ y el-M5.010
(o-E
) interruptor. Para los perls más antiguos, reemplácelossay
conprint
. Se podría lograr una reducción trivial de un carácter reemplazando\e
con un carácter ESC literal, pero eso haría que el código sea mucho más difícil de leer y editar.Editar: se agregaron dos caracteres para que coincidan exactamente con la salida de Hammar y para mostrar los seis colores de terminal posibles. (En la versión anterior, el único carácter impreso en color 6 = cian era el espacio).
Captura de pantalla:
Edición 2: si se permite usar una paleta de terminales personalizada (y un guión bajo para el espacio), entonces puedo reproducir fácilmente los colores exactos dados en la especificación con solo 50 caracteres:
Captura de pantalla:
fuente
Perl -> HTML, 99 caracteres
Captura de pantalla:
El HTML probablemente no pasará ningún validador, pero debería ser entendido por casi todos los navegadores. Este código no produce los colores RGB exactos que enumeró, pero se acerca mucho. Específicamente, los colores de las letras son:
La salida se ve mucho mejor en un fondo negro, pero imprimir explícitamente
<body bgcolor=black>
me costaría 28 caracteres adicionales. En su lugar, puede ajustar la configuración de su navegador para lograr el mismo efecto. :-)fuente
Perl + GD, 146 caracteres
Según los comentarios a mi otra respuesta , aquí hay una solución que produce directamente un archivo de imagen usando la biblioteca GD:
Y aquí está el resultado:
Nuevamente, usar un fondo negro se vería mejor, pero me costaría 29 caracteres (
$m->bgcolor(0,0,0);$m->clear;
).Editar: descubrió cómo eliminar 20 caracteres mediante (ab) usando notación indirecta de objetos y algunos otros ajustes. El nuevo código emite una advertencia, pero aún funciona bien.
fuente
Postscript
155143Esto se basa en la capacidad de Ghostscript para "descubrir" que Palatino es la abreviatura de Palatino-Roman.
fuente
Algunos enfoques diferentes para hacer esto con
Posdata
Primero: el más corto ( 89 ):
Sin golf:
Esto cambia continuamente de color en dirección x utilizando el espacio de color hsb. (La idea de usar hsb colors y kshow se acredita a luser droog; ¡vea su entrada!) No utiliza los siete colores exactos dados por MrZander.
Al restringirme a los colores de MrZander, llego usando 141 caracteres:
Esto codifica el valor de tono de los colores de MrZander como un byte en el rango ASCII imprimible. Este byte se traduce a un valor de tono en el rango entre 0 y 1 restando 32 y dividiendo entre 166. Cada carácter de la cadena "Hello World" es seguido por su valor de tono codificado.
Sin golf:
TODO : Algo no está del todo bien con los colores.
fuente
Algunas trampas pero resuelven el problema
Bash + Ruby (necesita
lolcat
gema)fuente
Dart a HTML,
135134-1 = 133main(){for(var s="Hello World",i=0;i<11;print("<font color=#${'F00F60FB0FF06F00F00B606B00F60F90F'.substring(i*3,i*3+3)}>${s[i++]}"));}
¿Hay alguna forma de colorear textos sin usar el lenguaje de marcado? No puedo probar lienzos ...
fuente
Sé que dice "sin marcado en ningún caso", pero me gustaría enviar este CSS en 468 caracteres:
Ninguno de los estilos se realiza con el marcado.
fuente
Rubí
242 formas más procesales:
Si consigo pensar en una mejor manera de generar los colores, lo haré. Algunos de los intermedios acabo de hacer una prueba y error para cerrar los colores.
fuente