SAIA E VOTE

114

Hoje é 8 de novembro de 2016, dia da eleição nos Estados Unidos da América.

Se você é um cidadão dos EUA elegível para votar, saia e vote se ainda não o fez antes de responder a este desafio. Não discuta em quem você votou. É importante apenas que você tenha votado.

Se você não é um cidadão dos EUA ou não é elegível para votar, antes de responder a este desafio, faça um favor aos EUA dizendo a alguém que você sabe que é um cidadão elegível para sair e votar se já não o tiver.

Desafio

Escreva um programa que indique que você votou, como um adesivo digital "Eu votei" .

Ele deve tomar nenhuma saída de entrada e obrigação de uma forma razoável a frase I Votedonde a I, oe esão vermelhas ( #FF0000) e do V, te dsão azuis ( #0000FF). O fundo deve ser branco ( #FFFFFF).

Por exemplo:

Gráfico de exemplo "Eu votei"

Naturalmente, essas cores são representativas da bandeira americana (embora não as cores oficiais ). O vermelho vem em primeiro lugar simplesmente porque vem em primeiro lugar no idioma comum "vermelho branco e azul".

Para ser válida, uma resposta deve:

  • Use as cores especificadas no arranjo especificado.

  • Use uma única fonte legível e tamanho da fonte. O exemplo usa 72pt Times New Roman em negrito, mas qualquer fonte comum acima de 6pt provavelmente está correta.

  • Tenha apenas a frase I Votedem uma única linha , maiúscula corretamente, com um espaço livre entre as duas palavras. Não deveria parecer IVoted.

  • Não indicar em quem o respondente votou ou apóia o presidente ou qualquer corrida abaixo da cédula. Não vamos iniciar nenhum debate na Internet. Trata-se de celebrar a votação, não os candidatos.

Qualquer maneira razoável de exibir ou produzir a saída é válida, como:

  • Desenho do texto para uma imagem que é exibida, salva ou gerada como raw.

  • Escrevendo o texto em um console usando formatação de cores . Nesse caso, você pode aproximar vermelho e azul puro, se necessário, e tudo bem se apenas a área diretamente atrás do texto puder ficar em branco.

  • Exibindo o texto em um formulário WPF / Windows.

  • Saída de um arquivo HTML / RTF / PDF com o texto.

Por favor, poste uma imagem da sua saída.

A resposta mais curta em bytes vence.

Passatempos de Calvin
fonte
29
Um pouco decepcionado, meu adesivo real não se parece com o seu.
Geobits
39
"Só importa que você tenha votado." - @HelkaHomba ... É como dizer "não importa o código que você escreve, desde que você tenha escrito algum código". : /
Michael Yaeger
41
@ MichaelYaeger Bem, escrever algum código é melhor do que escrever nenhum. Votar é melhor do que não votar. É provável que as pessoas pensem em codificar e votar se optarem por fazê-lo. Mas na verdade eu disse isso para ajudar a evitar debates furiosos.
Calvin Hobbies
43
Se isso ajuda alguém, as vogais são vermelhas, as consoantes são azuis.
mbomb007
34
@ mbomb007 Ou, mais útil, as letras com pontos de código ímpares são vermelhas e as letras com pontos de código pares são azuis.
Sp3000 8/16

Respostas:

116

Minecraft Chat (cliente vanilla 1.10, servidor spigot 1.10): 19 bytes

&4I &1V&4o&1t&4e&1d

ou do lado do cliente:

§4I §1V§4o§1t§4e§1d

O Minecraft usa um sistema de código de cores com essas cores programadas.

insira a descrição da imagem aqui

Observe as regras:

  • Escrevendo o texto em um console usando formatação de cores. Nesse caso, você pode aproximar vermelho e azul puro, se necessário, e tudo bem se apenas a área diretamente atrás do texto puder ficar em branco.

Tudo isso é verdade, como:
o vermelho e o azul são aproximações (embora ainda sejam muito semelhantes).
O plano de fundo no chat do Minecraft é transparente, o que significa que é possível colocar isso em um plano de fundo branco. (como um mundo vazio)

tuskiomi
fonte
10
Uau. Estou sem palavras. Essa é uma resposta muito inteligente!
DJMcMayhem
28
Eu não acho que o Minecraft Chat seja Turing completo ou considerado uma linguagem de programação (embora isso possa não ser mais um requisito). Muito criativo! :)
Kade 8/16
9
@Shebang gaming.stackexchange.com/questions/20219/... Minecraft bate-papo tem (quase) todos os mesmos comandos dos blocos de comando e, certamente, todos os comandos de volta quando a pergunta foi feita :-)
tuskiomi
15
Tecnicamente, no baunilha Minecraft, os &s devem ser §s #
Oliver Ni
2
Hmmm eu acho que pode ser feito em Quake 3, também
Sarge Borsch
107

C, 82 80 78 74 54 bytes

Agradecemos a @WillihamTotland e @criptych por economizar 2 bytes cada!

f(){puts("␛[47;31mI␛[34m V␛[31mo␛[34mt␛[31me␛[34md");}

Onde os represents representam 0x1B bytes (tecla de escape). Como esse código contém caracteres de controle não imprimíveis, aqui está um hexdump reversível:

00000000: 6628 297b 7075 7473 2822 1b5b 3437 3b33  f(){puts(".[47;3
00000010: 316d 491b 5b33 346d 2056 1b5b 3331 6d6f  1mI.[34m V.[31mo
00000020: 1b5b 3334 6d74 1b5b 3331 6d65 1b5b 3334  .[34mt.[31me.[34
00000030: 6d64 2229 3b7d                           md");}

Saída no meu telefone:

betseg
fonte
3
@KritixiLithos que a linha define acomo "\x1B[%dm", que é uma sequência de escape ANSI para colorir, com um espaço reservado. Os números printf()preenchem esses espaços reservados.
betseg
1
É possível remover dois bytes substituindo a com "\x1B[47;31m"e definindo b como "\x1B[34m", depois usando putscom alternância ae bprefixos.
Williham Totland
3
Você pode salvar outros 2 bytes com "\ 33" em vez de "\ x1B".
criptych
1
Estendendo o que criptych disse, não sei se isso é permitido, mas você salvaria outros quatro bytes usando um caractere de escape literal em vez de \33. Não sei o que o padrão C pensa que ...
3
@paxdiablo de acordo com este meta thread, as funções são boas para o código de golfe.
betseg
73

Google Blockly , 10 14 blocos, 28 41 35 blytes

Código

insira a descrição da imagem aqui

Resultado

insira a descrição da imagem aqui

Experimente aqui

Sem contar o hide turtlebloco, porque é apenas estética.

Um blyte é uma combinação de um bloco e um byte, ainda não existe uma meta post sobre como contar isso, mas crio uma mais tarde. Por enquanto, é assim que eu conto:

  • I o e, 8 blytes
  • V t d, 10 blytes (2 espaços principais aqui)
  • Cores, 1 blyte cada, 2 no total
  • 90, 2 blytes
  • 999, 3 blytes
  • 0, 1 blyte
  • vire à direita, 2 blytes
  • seguir em frente, 2 blytes
  • blocos normais, 1 blyte cada, 5 no total

Como o Google Blockly raramente é usado para jogar golfe, e estou pensando fora do comum para esse desafio, espero que este seja um envio válido.

Bassdrop Cumberwubwubwub
fonte
20
Para o registro, isso é válido. É bom ver idiomas únicos. No entanto, a menos que haja um meta-consenso sobre a contagem de bytes no Google Blockly, posso ignorá-lo ao selecionar um vencedor.
Calvin's Hobbies
2
Você pode encontrar discussões aqui relevantes. CC @HelkaHomba.
Scimonster
Você já pensou em substituir esses três espaços I opor dois em?
Andrea Lazzarotto 11/11
O Google Blockly será traduzido para JavaScript e depois executado. Você precisa Inspect Elementexecutar o código na API do Blockly para obter o código JavaScript real.
1
Espere, para que o Scratch possa ser usado?
usar o seguinte código
47

HTML, 52 bytes

I <c>V<e>o<c>t<e>e<c>d<style>*{color:red}c{color:0ff
noɥʇʎԀʎzɐɹƆ
fonte
2
Além disso, acho que #FF0000-> #F00e #0000FF-> #00Ftrabalha
Conor O'Brien
46
Por que não transformar isso em um snippet de pilha?
9116 Neil
3
<r>I <c>V<r>o<c>t<r>e<c>d<style>r{color:red}c{color:bluefunciona
somente ASCII
7
na verdade, você pode apenas manter assentamento sem fechar I <c>V<e>o<c>t<e>e<c>d<style>*{color:red}c{color:0ffe nota a mudança para azul0ff
2
Infelizmente, a versão atual não parece funcionar como um snippet de pilha, a versão mais recente que funciona para mim é a c{color:blue}versão.
Neil
39

LaTeX, 147 126 bytes

\documentclass{proc}\input color\begin{document}\def\z{\color{red}}\def\y{\color{blue}}\z I \y V\z o\y t\z e\y d\end{document}

Economizou 21 bytes e melhorou o kerning graças a @ AndreïKostyrka.

Isso imprime uma página a4 com isso na primeira linha (observe que também imprime a página 1 na parte inferior):

insira a descrição da imagem aqui

Fatalizar
fonte
13
Eu pensaria que o LaTeX digitaria o Vokerning mais bonito ... Mas, aparentemente, considera cada letra separadamente devido às cores.
Sanchises
Como cada letra está em um comando separado, acho que destrói o kerning adequado.
Fatalize
Sim exatamente. Embora eu tenha certeza de que seria possível de alguma forma se o golfe não fosse um requisito.
Sanchises
@sanchises isso é definitivamente possível , mas isso é realmente mais do que esta solução feia.
Fatalize 8/11
\documentclass{proc}\input color\begin{document}\def\z{\color{red}}\def\y{\color{blue}}\z I \y V\z o\y t\z e\y d\end{document}salva 21 bytes e resulta em 126 bytes de pura beleza tipográfica.
Andreï Kostyrka
34

Lote do Windows 10, 51 50 bytes

@color fc&echo I ␛[94mV␛[91mo␛[94mt␛[91me␛[94md␛[m

Onde ␛ representa o caractere ANSI Escape 0x1B. Saídas usando formatação de cores. Editar: salvou 1 byte graças a @ brianush1. Eu tentei escrever o código para gerar isso, mas foram necessários 97 bytes. Resultado:

eu votei

Neil
fonte
1
Você pode golfe-lo para baixo por 1 byte, se você usar @color fc&echo I...
brianush1
1
suportados seqüências de escape ANSI interessante, eu não sabia que o Windows Terminal
Mark K Cowan
3
@ MarkKCowan É apenas o Windows 10 e (acho!) Postar a Atualização Redstone. É uma das poucas coisas que me impedem de instalar o XP sobre ele.
Wizzwizz4
@ wizzwizz4 O ConEmu também suporta esses :) De fato, isso é do aniversário do Windows 10 (ou seja, redstone 1)
Asu
@ Asu eu instalei o XP sobre ele.
wizzwizz4 24/01
28

JavaScript, 71 bytes

console.log('%cI %cV%co%ct%ce%cd',r='color:red',b='color:blue',r,b,r,b)

Utiliza console.loga capacidade de imprimir em cores. Não funciona em um snippet de pilha, portanto, você deve colar esta resposta no console para testá-la.

insira a descrição da imagem aqui

Créditos de imagem para @Mast

Bassdrop Cumberwubwubwub
fonte
Isso é exatamente o que eu acabei de criar, haha. Eu acho que a alternativa mais curto seriaconsole.log([...' I Voted'].join`%c`,r='color:red',r,b='color:blue',r,b,r,b)
ETHproductions
Também não funciona no Node.js. :(
Jordânia
Fiquei surpreso que isso realmente funcione, mas funciona .
Mastro
23

R, 113 85 81 74 73 55 bytes

Edit: salvou um monte de bytes graças a @rturnbull e @JDL

plot(8:1,0:7*0,pc=el(strsplit("detoV  I","")),co=2:1*2)

O tamanho da saída (e espaçamento etc.) depende da resolução do dispositivo gráfico atualmente aberto. Testado em RGui e RStudio no meu monitor e produz:

insira a descrição da imagem aqui

Billywob
fonte
4
Oh, eu nunca vi el()antes. Obrigado por me ajudar a aprender mais R! Desde texté vetorizado, você pode pular o loop for e apenas escrever: text(seq(.3,.6,.05),.5,s,col=c("red","blue")). (I modificado suas posições x para Golfier código, embora o espaçamento pode ser um pouco menos puro.)
rturnbull
1
Além disso, graças à correspondência parcial de argumentos, você pode usar em co=vez de col=. E, finalmente, 6:12*.05é vários bytes menor que seq(.3,.6,.05).
R16 #
1
Boa pegada! E agora percebo que 6:12/20é, obviamente, 1 byte menor que 6:12*.05, desculpas por desviá-lo e sugerir edições abaixo do ideal.
rturnbull
1
As cores não estão apagadas? O "eu" e o "V" não deveriam ter cores diferentes?
JDL #
2
Tenho certeza que el()melhora 99% de todas as strsplitrespostas anteriores em 1 byte.
Vlo
21

LÖVE , 152 142 136 bytes

Vamos mostrar um pouco da linguagem de prototipagem divertida! Não é perfeito para a tarefa de jogar golfe (vamos lá, é baseado em LUA), mas é fácil de escrever.

function love.draw()l=love.graphics
a=255
l.setBackgroundColor(a,a,a)s=l.setColor
p=l.print
s(a,0,0)p('I   o e')s(0,0,a)p('  V  t d')end

Captura de tela:

captura de tela


Versão totalmente não destruída:

function love.draw()
    love.graphics.setBackgroundColor(255,255,255)
    love.graphics.setColor(255,0,0)
    love.graphics.print('I   o e')
    love.graphics.setColor(0,0,255)
    love.graphics.print('  V  t d')
end
Geobits
fonte
12
Eu amo que você usou algo diferente de Java.
AdmBorkBork
5
Tantos 255 ... Uma variável para eles?
Manatwork
1
@ ConorO'Brien Este é um programa completo. love.draw()é uma função interna que você substitui, que é executada na etapa de desenho. Também existem coisas como love.update()e love.load()para várias partes do loop de renderização, mas são opcionais. É uma linguagem agradável e você pode começar com ela com muita facilidade . Às vezes, eu o uso para criar protótipos de idéias de jogos.
Geobits
2
@cat Eles simplesmente não. Não é como se eu os estivesse imprimindo em um console, é uma impressão gráfica. Portanto, um espaço aqui é apenas "não pinte nada nesta área", não "pinte esta área com um fundo colorido".
Geobits 9/11/16
2
@ ZoltánSchmidt Obrigado! Existem algumas outras respostas do LÖVE , se você quiser dar uma olhada nelas: D
Geobits
18

Processador de sopa quente , 48 bytes

color 255
mes"I  o e
pos,0
color,,-1
mes"  V t d

A versão ungolfed é:

color 255,0,0
mes "I  o e"
pos 0,0
color 0,0,255
mes "  V t d"

Se você tem em mente que mes(a mensagem) é HSP echo, acho que isso é bastante legível.

Estranhamente, se você tentar fazer posou pos,, a linha azul não substitui a linha vermelha e aparece abaixo dela. Ainda mais estranho, colorserve apenas para receber valores 0-255, mas 0,0,-1funciona para azul, 0,-1,0funciona para verde e -1,0,0funciona para ... preto? ( -257,0,0e 511,0,0trabalhe no vermelho, então algo está estranho no mod 256 em andamento)

insira a descrição da imagem aqui

Sp3000
fonte
Por que os espaços no segundo não messubstituem o primeiro?
gato
@cat espaços realmente não desenhar qualquer coisa, ele apenas avança a posição do cursor em um sentido
SP3000
1
Inteligente usando -1 para 255. +1
Cyoce
@ Cyoce Ou talvez seja realmente -255?
2331717
18

MATLAB, 74 bytes

Criamos um plano de fundo branco 50x50 (uma coluna para cada estado) usando imshowuma matriz de ones. Em seguida, exibimos um texto, usando meu truque para encurtar os nomes das propriedades para obter as cores. Como a fonte padrão não possui largura fixa, o texto é preenchido com espaços.

imshow(ones(50))
text(2,9,'I   o e','Co','r')
text(8,9,'V  t  d','Co','b')

insira a descrição da imagem aqui

Fonte MATLAB, 99 bytes, largura fixa

A primeira versão usa mexer com espaços e coordenadas para obter um kerning adequado na fonte padrão e pode não ser exibida corretamente no seu computador. Em vez disso, podemos usar uma fonte de largura fixa, como Courier(ou, por mais alguns bytes, FixedWidthque funciona em qualquer sistema que tenha uma fonte de largura fixa instalada). Isso tem um custo de alguns bytes extras. Podemos atenuar um pouco isso usando um forloop para imprimir o texto. O texto e as cores correspondentes são armazenados em uma matriz de células. O plano de fundo precisa ser um pouco maior.

imshow(ones(80))
for y={'I  o e ','  V t d';'r','b'}
text(9,9,y{1},'Co',y{2},'FontN','Courier')
end

insira a descrição da imagem aqui

Matlab, edição de bônus de 80 bytes

Infelizmente, texto sublinhado em azul não é permitido. Caso contrário, essa resposta teria destacado algum comportamento interessante no MATLAB. Você pode imprimir texto em vermelho usando fprintf(2,txt)e pode imprimir texto sublinhado em azul com fprintf('<a href="">txt</a>'). Combinar isso funciona ... às vezes. Completamente aleatório , também pode criar texto sublinhado em vermelho. Você pode emitir drawnowentre fchamadas consecutivas , se esse for o caso no seu sistema.

f=@(p)fprintf(2,'%s<a href>%s</a>',p(1:end-1),p(end));f('I V');f('ot');f('ed');fprintf('\n')

insira a descrição da imagem aqui

Sanchises
fonte
Você pode escrever em <a href>vez de <a href="">. Se você não gostar, pode usar <a href=#>.
Ismael Miguel
@IsmaelMiguel Clever. <a>não funcionou.
Sanchises
Usar apenas <a>não é considerado um link clicável. para obter a cor azul, deve ser considerado como um. Em CSS, o seletor pode ser a[href]. Enquanto o atributo hrefestiver lá, é um link clicável. É por isso que usar apenas <a>não funciona.
Ismael Miguel
18

ImageMagick, 102 bytes

magick xc:[x60] -fill red -draw 'text 5,30 "I     o  e"' -fill blue -draw 'text 15,30 "V   t   d"' x:

Ungolfed:

magick convert canvas:white[60x60!] \
       -fill red  -draw 'text 5,30   "I     o  e"' \
       -fill blue -draw 'text 15,30      "V   t   d"' \
       show:

insira a descrição da imagem aqui

Jogar golfe no comando ImageMagick completo consistia em

  • não chamando explicitamente o convertutilitário padrão

  • usando em xc:vez de canvas:( xc:é um sinônimo antigo canvas:; eu não prevejo que o ImageMagick o elimine)

  • não especificando a cor da tela, mas confiando no padrão do ImageMagick, que é branco

  • removendo a largura 60da geometria (quando omitida, width == height)

  • removendo o "!" da geometria necessária apenas para produzir uma tela não quadrada, comocanvas:white[60x30!]

  • usando o antigo em x:vez de show:como o arquivo de saída (assume que o ImageMagick foi criado com Xsuporte)

  • removendo algum espaço em branco que eu tinha usado para alinhar as seqüências de texto

  • unindo as várias linhas do comando (removido o CR de barra invertida entre as linhas)

Se você estiver tão inclinado após a eleição, adicione 12 bytes -rotate 180antes da show:diretiva:

insira a descrição da imagem aqui

Glenn Randers-Pehrson
fonte
4
Eu amo como a versão não-golfada difere drasticamente da versão do golfe.
Andreï Kostyrka
15

Bash, 35 bytes

Meu script fica assim

echo "^[[47;31mI hope^[[34md^H^H^Ht^H^H^Hv"

xxd do arquivo de script:

0000000: 6563 686f 2022 1b5b 3437 3b33 316d 4920 eco ". [47; 31mI 
0000010: 686f 7065 1b5b 3334 6d64 0808 0874 0808 esperança. [34md ... t ..
0000020: 0876 22 .v "

Digitando: ctrl-v-esc e ctrl-vh irá inserir os escapes e backspaces (^ [e ^ H).

insira a descrição da imagem aqui

Cernelha Elevada
fonte
Como é que isso funciona? Uma explicação seria super
cat
2
@cat parece escrever todas as letras vermelhas (com "h" e "p" como substitutos), depois define a cor para azul e escreve "d" no final. Por fim, move o cursor para a esquerda para adicionar "t" e "V" sobre os anteriores (ascii 0x08, representado por "^ H" na exibição acima, move para a esquerda 1 caractere). Maneira inteligente de evitar muitas seqüências de escape para mudanças de cor. Ele também usa um caractere de escape literal (0x1B, representado como "^ ["), que economiza espaço em comparação com respostas semelhantes, como a minha.
Dave
Além disso: pode economizar 3 bytes assumindo que o terminal esteja definido como fundo branco por padrão (a maioria das outras respostas do terminal já assume isso).
Dave
Você pode salvar um byte removendo as duas aspas e adicionando uma barra invertida (caractere de escape) antes do ponto e vírgula. Além disso, seu script possui uma letra minúscula v (sua linha de comando é boa).
15

Mathematica (saída de imagem REPL), 65 49 bytes

Overlay@{"I  o e"~Style~Red,"  V t d"~Style~Blue}

Expressão gráfica de REPL.

LegionMammal978
fonte
3
"Uso particular?" O que é isso?
Conor O'Brien
2
@ ConorO'Brien enwp.org/Private_Use_Areas
LegionMammal978
Este é de 49 bytes: Overlay@{"I o e"~Style~Red," V t d"~Style~Blue}(não é suposto ser dois espaços entre I e O e antes V)
Gerli
14

Java, 322 319 318 309 304 229 217 bytes

-9 Bytes graças a Kevin.
-75 bytes graças a Angzuril, texto explicativo agradável sobre as classes antigas, sempre esqueça que elas existem.
-12 bytes graças a user902383.

import java.awt.*;
void n(){new Frame(){{add(new Panel(){public void paint(Graphics g){int i=0;for(String c:"IVoted".split("")){g.setColor(i%2<1?Color.RED:Color.BLUE);g.drawString(c,i++*8,10);}}});setVisible(0<1);}};}

Resultado:

insira a descrição da imagem aqui

Urna de polvo mágico
fonte
1
JFrame j=pode ser jogado golfe para Frame j=; (c==' '||i++%2==0)?pode ser jogado c<33|i++%2<1?e truejogado 1>0. Além disso, @HelkaHomba, essa saída é válida? Uma vez que também tem espaços entre os V o t e d? Ah e por quê 0,0,999,99? 0,0,99,99é grande o suficiente para o texto na minha tela.
11556 Kevin Crijssen em
1
(c<33||i++%2<1)?ainda pode ser golfed por três bytes removendo o parêntese e mude ||para #|
911 Kevin Cruijssen
1
Encontrei mais algumas coisas no golfe: new JComponentpara new Container(-1); remova char c="IVoted".charAt(i);e mude g.drawString(c+""para g.drawString("IVoted".charAt(i)+""(-8).
21716 Kevin Murrijssen
1
Primeiro aprimoramento, altere Frame j=new JFrame();j.add(new JComponent()para Frame j=new Frame();j.add(new Container()e você também pode descartar a importação import javax.swing.*;e, g.setColor(Color.WHITE);g.fillRect(0,0,99,99)como resultado (-63)
Angzuril 10/11
1
void n(){new Frame(){{add(new Panel(){public void paint(Graphics g){int i=0;for(String c:"IVoted".split("")){g.setColor(i%2<1?Color.RED:Color.BLUE);g.drawString(c,i++*8,10);}}});setVisible(0<1);}};}permite reduzir em 12 bytes
user902383 11/11
13

Chiclete, 28 bytes

0000000: 938e 3636 ccf5 0492 e6b9 0a40 d224 370c  ..66.......@.$7.
0000010: 2c92 0f66 9780 d9a9 6076 0a00            ,..f....`v..

insira a descrição da imagem aqui

Não funciona online, pois usa códigos de cores ANSI para colorir.

um spaghetto
fonte
É uma codificação direta ou emprega algum outro truque inteligente?
Conor O'Brien
2
@ ConorO'Brien Não há truques inteligentes no Bubblegum. Para ser sincero, essa resposta foi principalmente um efeito colateral da resposta real em que estou trabalhando.
a spaghetto
13

PowerShell v2 +, 71 59 57 55 bytes

"I Voted"[0..6]|%{Write-Host -b w -n -f (9,12)[$_%2]$_}

Salvou dois bytes graças a @flashbang ... salvou mais dois graças a @ConnorLSW

Pega "I Voted"e transforma em um chararranjo, depois faz um loop |%{...}. Cada letra é executada Write-Hostcom a -bcor de fundo para White, -noNewLine e a -fcor do primeiro plano para ser o índice apropriado . Isso aproveita o fato de que valores ASCII ímpares são vermelhos, enquanto valores ASCII pares são azuis via $_%2como índice.

As cores do console no PowerShell são muito limitadas, portanto essa é a aproximação mais próxima que pude obter. Seria mais golfista usar 4( DarkRed) para o vermelho, mas não parece certo, então estou sacrificando alguns bytes por uma questão de precisão de cores.

Abaixo está a saída, seguida pelas 16 cores disponíveis que o console pode exibir. Observe que o plano de fundo não é verdadeiramente branco, pois, em sua opinião, a Microsoft optou por ter as cores de plano de fundo cada vez mais discretas das cores de primeiro plano.

Saída do console

AdmBorkBork
fonte
IIRC, em coisas antigas, você tinha 4 bits para o primeiro plano e 3 bits para o segundo plano; portanto, os fundos podiam ser apenas as cores "escuras" de 0 a 7. O console ainda está seguindo isso?
@Hurkyl Kinda. Parece basear-se na paleta de cores EGA , mas não tenho certeza dos motivos históricos para o PowerShell manter esse esquema. Provavelmente algo oculto na compatibilidade com versões anteriores da API do Win32 que os forçou a usar apenas essas 16 cores.
AdmBorkBork 8/16
Não funciona se você definir a cor de fundo para 15?
usar o seguinte comando
@ Random832 é por uma questão de fundo branco do adesivo.
precisa saber é o seguinte
@ geisterfurz007, TimmyD, eu estava perguntando se você poderia definir o plano de fundo para "15" em vez de "branco" [já que o plano de fundo real da sua imagem parece ser o nº 7] para obter um branco mais brilhante. Mas, olhando mais, sua tela inteira parece estranha - as bordas entre as linhas no seu exemplo e a linha cinza entre "I" e o espaço a seguir não fazem sentido se o PowerShell estiver sendo executado no console - você está usando alguma outra ferramenta como o ConEmu? Nesse caso, não faz sentido culpar a Microsoft por isso.
Aleatório
11

Python, 91 bytes + termcolor

Não vou ganhar, mas postei por diversão.

from termcolor import*
for c in'I Voted':cprint(c,'brleude'[ord(c)%2::2],'on_white',end='')

Metade do crédito vai para o Sp3000.

noɥʇʎԀʎzɐɹƆ
fonte
2
Usando códigos ANSI deve ser mais curto
TuxCrafting
@ TùxCräftîñg Não é suportado em todas as plataformas, ou seja, Windows.
Kade
3
Se importa de adicionar uma imagem?
Calvin Hobbies
9
Você pode salvar 5 bytes mudando 'blue' if c else 'red'para 'brleude'[c^1::2].
Kade8
2
Você provavelmente deve colocar + termcolor no título, pois não é um módulo padrão. Também:from termcolor import*\nfor c in'I Voted':cprint(c,'brleude'[ord(c)%2::2],'on_white',end='')
Sp3000
8

Jolf, 53 bytes

"<z>I <w>V<z>o<w>t<z>e<w>d<style>w{ΞΩ4blue}z{ΞΩ4red

Existem imprimíveis. Experimente aqui!

A saída de Jolf é capaz de HTML. Tentei fazer algo inteligente, como o módulo 2, para decidir a cor, mas isso só acabou mais (cerca de 69 bytes). Portanto, a saída está em HTML.

Resultado:

regular "Eu votei"

(versão ampliada)

grande "eu votei"

Conor O'Brien
fonte
8
Isso é terrível você só salvou três bytes mais de HTML: P
ASCII-only
@EriktheGolfer Realmente só funciona no Firefox.
Conor O'Brien
@ ConorO'Brien Oh, eu uso o Chrome. Obrigado.
Erik the Outgolfer 8/16
1
... e a resposta HTML superou isso.
betseg
Não pode blueser escrito como 00f?
Ismael Miguel
8

Python, 99 87 bytes

from turtle import*
up()
for c in"I Voted":color("brleude"[ord(c)%2::2]);write(c);fd(7)

Experimente online

mbomb007
fonte
Se importa de adicionar uma imagem?
Calvin Hobbies
@HelkaHomba Tudo o que você precisa fazer é clicar no link.
mbomb007
8

sh, 61 49 bytes

echo "[47;31;1mI [34mV[31mo[34mt[31me[34md"

Como contém imprimíveis, aqui está um hexdump xxd reversível:

00000000: 6563 686f 2022 1b5b 3437 3b33 313b eco de 316d ". [47; 31; 1m
00000010: 4920 1b5b 3334 6d56 1b5b 3331 6d6f 1b5b I. [34mV. [31mo. [
00000020: 3334 6d74 1b5b 3331 6d65 1b5b 3334 6d64 34mt. [31me. [34md
00000030: 22 "
Eu votei
Xterm (322)

Graças a 4198 (manatwork) por -12 bytes.

Erik, o Outgolfer
fonte
Por que definir as cores de fundo e primeiro plano separadamente? Comece com [47;31;1m. E o 1negrito persiste até a 0, portanto, não é necessário defini-lo repetidamente para cada letra.
manatwork
@manatwork Oh Deus, eu pensei que você tinha que re-configurá-lo!
Erik the Outgolfer
Se isso shé algo mais moderno do que o antigo Bourne shell, alguma expansão parâmetro pode ajudar: s=":1;47;1mI :4mV:1mo:4mt:1me:4md";echo ${s//:/^[[3}.
manatwork
@manatwork Não funciona. Parece que não é mais moderno.
Erik the Outgolfer 8/16
@homem a trabalhar ${VAR/FROM/TO} requer ksh93, bash ou zsh, não apenas “algo mais moderno que o antigo shell Bourne”. POSIX requer que os #e %expansão parâmetro modificadores, mas não /…/ou:…:
Gilles
8

SVG + bzip2, 1807 bytes

Uma versão vetorizada da imagem de exemplo, depois compactada com bzip2 para cerca da metade (4385 -> 1807 bytes). Você pode baixá-lo aqui . (link direto para páginas do GitHub)

BZh91AY&SY!�l�ß�x��>�ߠ/���`    0����Ҁ�D�5��ޠII�T񡤙�O!45J??��i�@JzH���
.�M�&�Q�vا����bB���� �쾾�4AV�8�8���)Z�ޣ�j�q}�����?�t�/
�±%��"A����B�X�(␌�[⎺;Z/┐├*��%�␤�       I���Uƒ�Y�9ǝK���B��┤�=���±?�W���
            ��ڰj�?�H��\����^��m�=X�d���>�!C�@�.���9�" DZ+��V1+�;�����58Q���-:�5,HDQŧ`A>����W�+h��>m��G�m�uWv�&�U�|mq�u���?=S�\{(��Z�a�I��G{Cd��;Bz���qX7��?P�@�Jt[w�]����%W���37f���-񴁭�iԳ]c��|�;i�k�H��
    sHz��Y�$�.�*�?�ڐ��Us=\뫅6%�Ud�9w���D
                                          ��H��^�Q��P��%n�O����l��+*q�U�"F%��*�     *b�� 
                                         @mP���Z�(ZL`
  bIv⦳�~�F=��>H�Ti����0@≠R≥��T�E��┴��D����␍│��2*◆=└6&⎽M�◆␊?�/�U�����r�.�`gƅ���E'��^��ILPz@���zR&u$��l^�U�n�'O\�Xj+چ�o�*�O�w��JP8���]���r��k=��N�b�ƵpM�8|���=7���N��W�M(����*�E�DݐT��Zi�v"���49�J�0}�F�*x�K���P��⎼*�������6[G,4� ү)UUT␍��%4D��Թ␉��⎻�8�CZ_3ɷwW�9��-&�Ov�a՜
�'ӥtߢ�>��^�m-������c�]:��*��2��촄Ujr�?"�J�"���DE�f?┴⎻��␍3·└���Ԉ��? ׌�5|ᫎ���|DO���%�4Ư`W�ƐV/=�]V`gˇ��^Z��cP������.{������6   o.*�sɽ���U?E.3�,�H$�{�?
             �%�0��2    ��n�C!%�>��]��
#߽v�E��K��?X|���5�ΰ@>A;#J���,��Q��$���ݨ��^����7�g�Xn�k����d욒�`fQ/7��vh|�ȥ*^M
                            �[����׈���i�I��    $��4��
  Y��`V.��ح��?�eT����5K˱~�瞯r�fL^I �#b�@�pBƞ���V`5��a��qH���Ş�t�V3��┌���T���1␉�␍$5��@T␤$�>$����π���S�[۸£�[ȟ␋CO≥�ގ^��>��]E�A��┘���I(�㴨Z�J'��:�-_┤±�K␌�ۓ#:�?m��^�Z�+�����G
�k�t�O��SD�4����^o��Z�n���6M�)!��r��w�3\�R����
�X6<#����.��p� Cj"�2�ĭ�*h�S�`}�L���C?�� �چZc'kG��

Não vou ganhar, mas postei por diversão.

noɥʇʎԀʎzɐɹƆ
fonte
1
bzip2não é uma linguagem de programação.
Peter Taylor
3
@PeterTaylor Por meta regras, não precisa ser uma linguagem de programação. ( meta.codegolf.stackexchange.com/a/10426/41088
noɥʇʎԀʎzɐɹƆ
1
deve postar uma reversível xxddo arquivo
gato
tente usar brotli para ainda mais compressão
Sarge Borsch
4
Se você estiver realmente interessado em jogar isso, provavelmente faria mais sentido criar o SVG manualmente com alguns elementos de texto definidos nas cores certas. Aqui está um ponto de partida: <svg xmlns="http://www.w3.org/2000/svg"><text fill="blue"><tspan fill="red">I</tspan> V<tspan fill="red">o</tspan>t<tspan fill="red">e</tspan>d</text></svg>Observe que isso realmente o renderiza fora da área imprimível e não possui cor de fundo. Como eu disse, é apenas um começo.
trlkly
8

C, 65 bytes

i;main(c){for(;c="I Voted"[i++];printf("\33[3%dm%c",c&1?1:4,c));}

ou, com mais precisão:

i;main(c){for(i=90;c="\0.noitcele ym saw ti fi enod evah dluow I sseug I tuB .hsitirB ma I esuaceb ,etov ton did I"[i--];printf("\33[3%dm%c",c&1?1:4,c));}

Usa a mesma técnica de bash color usada pela betseg, mas com a sequência de escape octal em vez de hex e com a observação do Sp3000 de que todos os pontos de código ímpares são vermelhos.

Deixa o terminal em azul. Redefinir com:

printf "\33[0m";
Dave
fonte
Se ||funcionar em C, como no JavaScript ( x||y -> x?x:y), você poderá c&1||4salvar um byte.
ETHproductions
1
Não @ETHproductions não funciona dessa maneira em C. Enquanto ||e && são curto-circuito, eles sempre retornar 1 ou 0, independentemente dos valores envolvidos.
Dave
@Dave eu aprendi alguma coisa hoje ...
cat
Isso não define a cor do plano de fundo. Além disso, você pode usar um caractere de escape literal em vez de \33salvar dois bytes, se isso não for de alguma forma contra as regras.
@yellowantphil isso pressupõe que o plano de fundo padrão do terminal esteja definido como branco (já que o desafio diz que só é possível ter um plano de fundo branco). De fato, no OS X, o terminal é preto e branco pronto para uso.
Dave
8

Nó, 57 55 41 bytes

console.log("q47;91mI  o eHHHHq94mV t d")

Substitua cada um qpelo literal 1Be Hbyte 08antes de executar.

Veja como fica no emulador de terminal ConEmu no meu computador Windows (ampliado):

insira a descrição da imagem aqui

ETHproductions
fonte
Que emulador de terminal é esse?
gato
1
@cat ConEmu: conemu.github.io
ETHproductions
8

Python IDLE, 97 96 78 69 bytes

Obrigado ao DrMcMoylex por remover alguns bytes!

EDIT: Descobri que um direto .write()era 9 bytes mais curto

Não é realmente uma resposta adequada, mais abuso de um tema padrão. IDLE é o IDE do Python e, a menos que seja personalizado, STDOUTé azul, STDERRé vermelho e o fundo é branco. Então, o seguinte código:

from sys import*
for i in'I Voted':[stdout,stderr][ord(i)%2].write(i)

Imprime isto:

insira a descrição da imagem aqui

Isso funciona porque ord(i)%2verifica a paridade do ponto de código da letra e a imprime em ERR/ de OUTacordo.

FlipTack
fonte
8

REBOL , 100 90 95 bytes (-7 bytes com REPL para 88)

REBOL[]view layout[style b tt blue white space 0 across b"I"red b b"V"b"o"red b"t"b"e"red b"d"]

No REPL, o REBOL inicial [] não é necessário. São 7 bytes.

A versão ungolfed é:

REBOL[]
view layout[
  ; by default, tt (text) has a grey background and a 2x2 padding
  style b tt blue white space 0
  ; this one doesn't appear in the golfed version as it's slightly shorter to just manually set red everywhere needed
  style r b red

  ; by default, vertical stack panel
  across
  r "I"
  r 
  b "V"
  r "o"
  b "t"
  r "e"
  b "d"
]

À esquerda, com "espaço 0x0" adicionado a cada bloco de texto, à direita, com o preenchimento padrão de 2x2.

REBOL I Votei
(fonte: canardpc.com )

Le Canard fou
fonte
7

Perl, 57 + 17 = 74 bytes

Correr com -MTerm::ANSIColor

sub c{color$a++%2?blue:red}say c,"I ",c,V,c,o,c,t,c,e,c,d

Seu terminal pode estar azul no final (anexe ,c("reset")no final do código para restaurá-lo ao normal).

Por padrão, os terminais geralmente são de fundo preto, mas podem opcionalmente ser alterados para branco, o que eu pessoalmente não acho que seja trapaça.

Com imagem: insira a descrição da imagem aqui

Gabriel Benamy
fonte
7

PHP, 199 201 151 bytes

Este script gera imagem para saída padrão. Atualizado graças ao manatwork

imagefill($i=imagecreatetruecolor(99,99),0,0,2**24-1);foreach([I,' ',V,o,t,e,d]as$k=>$e)imagestring($i,2,$k*9,0,$e,!$k|$k&1?0xFF0000:255);imagepng($i);

Execute-o na linha de comando da seguinte maneira:

php -d error_reporting=0 -r "imagefill($i=imagecreatetruecolor(99,99),0,0,2**24-1);foreach([I,' ',V,o,t,e,d]as$k=>$e)imagestring($i,2,$k*9,0,$e,!$k|$k&1?0xFF0000:255);imagepng($i);" > output.png

Resultado:

insira a descrição da imagem aqui

Kodos Johnson
fonte
2
Ignore a header()ligação. Seu código também funciona bem na linha de comando. Como error_reportingo valor padrão não mostra avisos, geralmente é aceitável não citar seus literais de string. Ou, se você não gosta, str_split("I Voted")é ainda mais curto do que enumerar os caracteres separadamente. E mova a atribuição para $ i para o seu primeiro uso.
manatwork
1
~2**24parece funcionar em vez de 0xFFFFFF. Não tenho certeza se isso é válido para todas as arquiteturas. Caso contrário, 2**24-1deve ser portátil.
Manatwork
@manatwork awesome thanks. Isso reduziu para 152. Tentei ~2**24e 2**24-1obtive erros. Eu nem sei como isso funciona.
Kodo Johnson
Provavelmente, seu PHP tem mais de 5.6.0: “Adicionado um operador de exponenciação (**).” - Registro de alterações do PHP . O mesmo que pow(), mas mais prático para jogar golfe. pastebin.com/jFn6ahFk
manatwork
Ah eu vejo. Bem, como o php 5.5 parece não ter suporte, eu usarei sua solução. Agora são 150. Obrigado novamente.
Kodo Johnson
7

Xamarin.Forms C #, 317 313 bytes

using Xamarin.Forms;public class A:Application{public A(){var s=new StackLayout{BackgroundColor=Color.White,Orientation=(StackOrientation)1,VerticalOptions=LayoutOptions.End};foreach(var c in"I Voted")s.Children.Add(new Label{Text=c+"",TextColor=c%2<1?Color.Blue:Color.Red});MainPage=new ContentPage{Content=s};}}

VerticalOptions=LayoutOptions.Endé necessário para iOS, caso contrário, o texto será sobreposto pela barra de status. Não há problema no Android, portanto, você pode economizar 34 bytes, incluindo vírgula.

Edit: 14/11/2016: -4 bytes

Ungolfed

using Xamarin.Forms;
public class A : Application
{
    public A()
    {
        // Make a horizontal StackLayout for labels
        var s = new StackLayout
        {
            BackgroundColor = Color.White,
            Orientation = (StackOrientation)1,   // StackOrientation.Horizontal
            VerticalOptions = LayoutOptions.End
        };
        foreach(var c in "I Voted")
            // Make a new label for each letter, then add to StackLayout
            s.Children.Add(new Label
                {
                    // Cast char to string
                    Text = c + "",
                    // Happens that 'I', 'o', and 'e' are all odd in ASCII, and 'V', 't', and 'd' are all even :)
                    TextColor = c%2<1 ? Color.Blue : Color.Red   
                }
            );
        // Set app MainPage to be a new ContentPage, where the content is the StackLayout above
        MainPage = new ContentPage { Content = s };
    }
}
Ng do link
fonte
1
Bem, esse é um novo tipo de ideia. +1
Addison Crump
7

código de máquina x86 + DOS + BIOS, 25 bytes

Hexdump:

b8 02 13 b1 07 bd 0b 01 cd 10 c3 49 74 20 74 56
71 6f 74 74 71 65 74 64 71

Código de montagem (adequado como entrada para debug.com, portanto, todos os números são hexadecimais):

mov ax, 1302
mov cl, 7
mov bp, 10b
int 10
ret
db 'It tVqottqetdq'

Ele usa uma rotina do BIOS para enviar a string para a memória do monitor. A string aparecerá em uma posição "aleatória" na tela (veja abaixo), assim:

captura de tela

A cadeia contém as letras I V o t e dintercaladas com "atributos"

74 74 71 74 71 74 71

que especificam a cor das letras. Aqui 7 como o dígito mais significativo significa "fundo branco" e o dígito menos significativo especifica o primeiro plano (1 = azul; 4 = vermelho).

A posição de exibição da string é especificada pelo dxregistro. Como mencionado aqui , o valor inicial desse registro é igual ao valor do csregistro. E o valor desse é o primeiro endereço disponível na memória, após o carregamento do DOS.

O tamanho do DOS geralmente é menor que 64 K, ou seja, o endereço do segmento do programa do usuário carregado é menor que hexadecimal 1000. Portanto, a saída aparecerá em algum lugar nas primeiras 16 linhas de texto no visor. No meu exemplo, ele apareceu na linha 8 (a metade superior de dx, chamada dh, é igual a 8).

A metade baixa de dx, chamada dl, contém a coluna na qual o texto é produzido. As experiências mostram que o BIOS não verifica o estouro, portanto, não importa se dxsolicita saída na coluna 100, por exemplo.

anatolyg
fonte
inteligente, curto e muito intuitivo.
tuskiomi