Lidar com cores em linguagens sem marcação frequentemente complica as coisas. Gostaria de ver algumas variações de como a cor é usada em diferentes idiomas.
O objetivo desta competição é produzir 'Hello World' nas sete cores do arco-íris.
Segundo a Wikipedia, essas são as 7 cores.
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)
As regras
- O programa deve gerar 'Hello World'. (Não precisa necessariamente ser texto, mas deve ser distinguível como 'Hello World')
- Cada letra deve ter uma cor diferente.
- As cores podem estar em qualquer ordem.
- Você deve usar cada uma das sete cores pelo menos uma vez. (Você pode usar mais do que as cores fornecidas)
- Nenhum uso de linguagens de marcação em nenhum caso .
O vencedor é quem tiver a menor quantidade de caracteres E seguir as regras
Bônus -1 caractere se estiver escrito no DART
Eu vou escolher o vencedor em 11 de janeiro (se bem me lembro; D).
Boa sorte
VENCEDOR (es)
Cometi um erro D :, vencedores atualizados.
1º. stranac - Python, 60 caracteres
2nd. Ilmari - Karonen Perl + GD, 146 caracteres
Menor comprimento com todas as regras cumpridas.
Brownie aponta para JiminP para a resposta do DART.
fonte
H
é impresso usando o código de escape para preto, portanto não é visível na maioria dos terminais.Mathematica
Eu sei, eu sei, isso não está em conformidade com as regras .. mas eu tive que tentar jogar com as funções de processamento de imagem do Mathematica.
Captura de tela:
fonte
Haskell, 88 caracteres
Observe que isso usa cores de terminal ANSI, das quais existem apenas 6 e podem não corresponder exatamente às fornecidas (depende das configurações do terminal), por isso estou flexionando um pouco as regras aqui.
Versão ligeiramente mais longa com cores quase corretas, 107 caracteres
Esta versão usa cores xterm em vez de cores ANSI. Isso não depende de nenhuma paleta personalizada e usa as cores mais próximas que pude encontrar na paleta xterm de 256 cores.
fonte
Python, 261 caracteres
Implementa exatamente as especificações, gerando uma imagem em ppm. Aqui está o resultado, convertido em gif e ampliado por um fator de 4:
fonte
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
Isso produz exatamente a mesma saída da solução Haskell da Hammar . Ele usa
say
, portanto, precisa do perl 5.10+ e da opção-M5.010
(ou-E
). Para perls mais antigos, substituasay
porprint
. Uma redução trivial de um caractere poderia ser alcançada substituindo-se\e
por um caractere ESC literal, mas isso tornaria o código muito mais difícil de ler e editar.Edit: Adicionado dois caracteres para combinar exatamente com a saída de Hammar e realmente mostrar todas as seis cores possíveis do terminal. (Na versão anterior, o único caractere impresso na cor 6 = ciano era o espaço.)
Captura de tela:
Edit 2: Se o uso de uma paleta de terminal personalizada (e um sublinhado para o espaço) for permitido, eu posso reproduzir facilmente as cores exatas fornecidas na especificação com apenas 50 caracteres:
Captura de tela:
fonte
Perl -> HTML, 99 caracteres
Captura de tela:
O HTML provavelmente não passará por nenhum validador, mas deve ser entendido por quase todos os navegadores. Esse código não produz as cores RGB exatas que você listou, mas fica muito próximo. Especificamente, as cores das letras são:
A saída parece muito melhor em um fundo preto, mas imprimir explicitamente um
<body bgcolor=black>
teria me custado 28 caracteres extras. Você pode ajustar as configurações do navegador para obter o mesmo efeito. :-)fonte
Perl + GD, 146 caracteres
Pelos comentários da minha outra resposta , aqui está uma solução que produz diretamente um arquivo de imagem usando a biblioteca GD:
E aqui está a saída:
Novamente, usar um fundo preto ficaria melhor, mas me custaria 29 caracteres (
$m->bgcolor(0,0,0);$m->clear;
).Edit: Descobri como cortar 20 caracteres por (ab) usando notação indireta de objetos e alguns outros ajustes. O novo código emite um aviso, mas ainda funciona bem.
fonte
Postscript
155143Isso depende da capacidade do Ghostscript de "descobrir" que Palatino é a abreviação de Palatino-Roman.
fonte
Algumas abordagens diferentes para fazer isso com
PostScript
Primeiro: o mais curto ( 89 ):
Sem golfe:
Isso muda continuamente a cor na direção x usando o espaço de cores hsb. (A idéia de usar cores hsb e kshow são creditadas ao luser droog - veja sua entrada!) Ele não usa as sete cores exatas fornecidas por MrZander.
Ao me restringir às cores de MrZander, chego lá usando 141 caracteres:
Isso codifica o valor de matiz das cores do MrZander como um byte no intervalo ASCII imprimível. Esse byte é convertido em um valor de matiz no intervalo entre 0 e 1, subtraindo 32 e dividindo por 166. Cada caractere da seqüência de caracteres "Hello World" é seguido por seu valor de matiz codificado.
Sem golfe:
TODO : Algo não está certo com as cores.
fonte
Alguns trapaceiros, mas resolvem o problema
Bash + Ruby (precisa de
lolcat
gema)fonte
Dardo para 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++]}"));}
Existe alguma maneira de colorir textos sem usar a linguagem de marcação? Não posso testar telas ...
fonte
Eu sei que diz "sem marcação em nenhum caso", mas eu gostaria de enviar este CSS um em 468 caracteres:
Nenhum estilo é feito com a marcação.
fonte
Rubi
242 maneira mais processual:
Se eu conseguir pensar em uma maneira melhor de gerar as cores, eu irei. Alguns dos do meio, eu apenas fiz algumas tentativas e erros para obter as cores próximas.
fonte