SALIR Y VOTAR


114

Hoy es el 8 de noviembre de 2016, Día de las Elecciones en los Estados Unidos de América.

Si usted es ciudadano estadounidense elegible para votar, salga y vote si aún no lo ha hecho antes de responder a este desafío. No discuta por quién votó. Solo importa que hayas votado.

Si no es ciudadano de los EE. UU. O no es elegible para votar, antes de responder a este desafío, haga un favor a los EE. UU. Diciéndole a cualquier persona que conozca quién es ciudadano elegible que salga a votar si aún no lo ha hecho.

Desafío

Escriba un programa que indique que votó, como una calcomanía digital de "Voté" .

Se debe tomar ninguna salida y entrada de necesidad en una forma razonable la frase I Voteddonde el I, oy eson de color rojo ( #FF0000) y el V, ty dson de color azul ( #0000FF). El fondo debe ser blanco ( #FFFFFF).

Por ejemplo:

Gráfico de ejemplo "I Voted"

Estos colores son, por supuesto, representativos de la bandera estadounidense (aunque no son los colores oficiales ). El rojo viene primero simplemente porque viene primero en el idioma común "rojo blanco y azul".

Para ser válido, una respuesta debe:

  • Use los colores especificados en el arreglo especificado.

  • Use una sola fuente legible y tamaño de fuente. El ejemplo usa 72pt Times New Roman bold pero cualquier fuente común por encima de 6pt probablemente esté bien.

  • Tenga solo la frase I Voteden una sola línea , en mayúscula correctamente, con un espacio claro entre las dos palabras. No debería verse así IVoted.

  • No indicar por quién votó el defensor o por quién apoya al presidente o cualquier carrera electoral. No empecemos ningún debate en internet. Se trata de celebrar la votación, no los candidatos.

Cualquier forma razonable de mostrar o producir la salida es válida, como:

  • Dibujar el texto en una imagen que luego se muestra, se guarda o se imprime sin formato.

  • Escribir el texto en una consola con formato de color . En este caso, puede aproximarse al rojo puro y al azul si es necesario, y está bien si solo el área directamente detrás del texto se puede hacer blanca.

  • Mostrar el texto en un formulario WPF / Windows.

  • Salida de un archivo HTML / RTF / PDF con el texto.

Por favor, publique una imagen de su salida.

La respuesta más corta en bytes gana.


29
Un poco decepcionado, mi pegatina real no se parece a la tuya.
Geobits

39
"Solo importa que hayas votado". - @HelkaHomba ... Eso es como decir "no importa qué código escribas, siempre y cuando hayas escrito algún código". : /
Michael Yaeger

41
@MichaelYaeger Bueno, escribir algo de código es mejor que no escribir ninguno. Votar es mejor que no votar. Lo más probable es que las personas piensen un poco en la codificación y votación si eligen hacerlo. Pero realmente dije eso para ayudar a evitar debates enojados.
Aficiones de Calvin

43
Si ayuda a alguien, las vocales son rojas, las consonantes son azules.
mbomb007

34
@ mbomb007 O más útil, las letras con puntos de código impares son rojas y las letras con puntos de código pares son azules.
Sp3000

Respuestas:


116

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

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

o desde el lado del cliente:

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

Minecraft utiliza un sistema de codificación de colores con estos colores programados.

ingrese la descripción de la imagen aquí

Cuidado con las reglas:

  • Escribir el texto en una consola con formato de color. En este caso, puede aproximarse al rojo puro y al azul si es necesario, y está bien si solo el área directamente detrás del texto se puede hacer blanca.

Todos estos son verdaderos, como:
el rojo y el azul SON aproximaciones (aunque aún muy similares).
El fondo en el chat de Minecraft es transparente, lo que significa que es posible poner esto sobre un fondo blanco. (como un mundo vacío)


10
Guau. Estoy sin palabras. ¡Esa es una respuesta muy inteligente!
DJMcMayhem

28
No creo que Minecraft Chat sea Turing completo o se considere un lenguaje de programación (aunque esto ya no sea un requisito). Muy creativo sin embargo! :)
Kade

99
@Shebang gaming.stackexchange.com/questions/20219/… El chat de Minecraft tiene (casi) todos los mismos comandos que los bloques de comandos, y ciertamente todos los comandos de cuando se hizo la pregunta :-)
tuskiomi

15
Técnicamente, en Minecraft vainilla, el &s debería ser §s
Oliver Ni

2
Hmmm, creo que también se puede hacer en Quake 3
Sarge Borsch

107

C, 82 80 78 74 54 bytes

¡Gracias a @WillihamTotland y @criptych por guardar 2 bytes cada uno!

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

Donde los ␛s representan 0x1B bytes (tecla de escape). Como este código contiene caracteres de control no imprimibles, aquí hay un hexdump reversible:

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");}

Salida en mi teléfono:


3
@KritixiLithos esa línea define acomo "\x1B[%dm", que es una secuencia de escape ANSI para colorear, con un marcador de posición. Los números en printf()llenar esos marcadores de posición.
betseg

1
Se pueden eliminar dos bytes reemplazando a con "\x1B[47;31m"y definiendo b a "\x1B[34m", luego se usa putscon alternancia ay bprefijos.
Williham Totland el

3
Puede guardar otros 2 bytes con "\ 33" en lugar de "\ x1B".
críptico

1
Extendiendo lo que dijo el criptych, no sé si esto está permitido, pero ahorrarías otros cuatro bytes usando un carácter de escape literal en lugar de \33. No está seguro de lo que piensa el estándar de C que ...

3
@paxdiablo de acuerdo con este hilo meta, las funciones están bien para el golf de código.
betseg

73

Google Blockly , 10 14 bloques, 28 41 35 blytes

Código

ingrese la descripción de la imagen aquí

Salida

ingrese la descripción de la imagen aquí

Pruébalo aquí

Sin contar el hide turtlebloque porque es solo estética.

Un blyte es una combinación de un bloque y un byte, todavía no hay meta publicación como cómo contar esto, pero crearé uno más tarde. Por ahora, así es como cuento:

  • I o e8 blytes
  • V t d, 10 blytes (2 espacios principales aquí)
  • Colores, 1 blyte cada uno, 2 en total
  • 90, 2 blytes
  • 999, 3 blytes
  • 0, 1 blyte
  • gire a la derecha, 2 blytes
  • avanzar, 2 blytes
  • bloques normales, 1 blyte cada uno, 5 en total

Dado que Google Blockly rara vez se usa para jugar al golf y estoy pensando fuera de la caja para este desafío, espero que sea una presentación válida.


20
Para el registro esto es válido. Es bueno ver idiomas únicos. Sin embargo, a menos que haya un metaconcenso sobre el conteo de bytes en Google Blockly, puedo ignorarlo al seleccionar un ganador.
Hobbies de Calvin

2
Puede encontrar la discusión aquí relevante. CC @HelkaHomba.
Scimonster

¿Has pensado en reemplazar esos tres espacios I ocon dos espacios em?
Andrea Lazzarotto

Google Blockly se traducirá a JavaScript y luego se ejecutará. Necesita Inspect Elementejecutar el código en Blockly API para obtener el código JavaScript real.

1
Espera, ¿podría usarse Scratch?
Adamawesome4

47

HTML, 52 bytes

I <c>V<e>o<c>t<e>e<c>d<style>*{color:red}c{color:0ff

2
Además, creo que #FF0000-> #F00y #0000FF-> #00Ffunciona
Conor O'Brien el

46
¿Por qué no convertir esto en un fragmento de pila?
Neil

3
<r>I <c>V<r>o<c>t<r>e<c>d<style>r{color:red}c{color:bluefunciona
solo ASCII

77
en realidad, puedes seguir anidando sin cerrar I <c>V<e>o<c>t<e>e<c>d<style>*{color:red}c{color:0ffy notar el cambio a azul0ff

2
Lamentablemente, la versión actual no parece funcionar como un Stack Snippet, la última versión que funciona para mí es la c{color:blue}versión.
Neil

39

LaTeX, 147126 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}

Ahorré 21 bytes y obtuve un mejor interletraje gracias a @ AndreïKostyrka.

Esto imprime una página a4 con esto en la primera línea (tenga en cuenta que esto también imprime la página 1 en la parte inferior):

ingrese la descripción de la imagen aquí


13
Pensé que LaTeX compondría el Vokerning más bonito ... Pero aparentemente considera cada letra por separado debido a los colores.
Sanchises

@sanchises Dado que cada letra está en un comando separado, creo que destruye el interletraje adecuado.
Fatalize

Si, exacto. Aunque estoy seguro de que sería posible de alguna manera si el golf no fuera un requisito.
Sanchises

@sanchises esto es definitivamente posible , pero de hecho es más largo que esta solución fea.
Fatalize

\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}ahorra 21 bytes y da como resultado 126 bytes de pura belleza tipográfica.
Andreï Kostyrka

34

Lote de Windows 10, 51 50 bytes

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

Donde ␛ representa el carácter ANSI Escape 0x1B. Salidas con formato de color. Editar: Guardado 1 byte gracias a @ brianush1. Intenté escribir el código para generar esto, pero tomó 97 bytes. Salida:

yo voté


1
Puedes usarlo en 1 byte si usas @color fc&echo I...
brianush1

1
interesante, no me di cuenta de que la terminal de Windows soportaba secuencias de escape ANSI
Mark K Cowan

3
@ MarkKCowan Es solo Windows 10, y (¡creo!) Publica la actualización de Redstone. Es una de las pocas cosas que me impide instalar XP sobre él.
wizzwizz4

@ wizzwizz4 ConEmu también los admite :) De hecho, esto es del aniversario de Windows 10 (es decir, redstone 1)
Asu

@Asu instalé XP sobre él.
wizzwizz4

28

JavaScript, 71 bytes

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

Hace uso de console.logla capacidad de imprimir en color. No funciona en un fragmento de pila, por lo que debe pegar esta respuesta en la consola para probarla.

ingrese la descripción de la imagen aquí

Créditos de imagen a @Mast


Eso es exactamente lo que se me ocurrió, jaja. Creo que la alternativa más corta seríaconsole.log([...' I Voted'].join`%c`,r='color:red',r,b='color:blue',r,b,r,b)
ETHproductions

Tampoco funciona en Node.js. :(
Jordania

Me sorprendió que esto realmente funcione, pero lo hace .
Mástil

23

R, 113 85 81 74 73 55 bytes

Editar: guardado un montón de bytes gracias a @rturnbull y @JDL

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

El tamaño de la salida (y el espacio, etc.) depende de la resolución del dispositivo gráfico abierto actualmente. Probado en RGui y RStudio en mi monitor y produce:

ingrese la descripción de la imagen aquí


44
Oh, nunca he visto el()antes. Gracias por ayudarme a aprender más R! Dado que textse vectorizado, se puede omitir el bucle de y acaba de escribir: text(seq(.3,.6,.05),.5,s,col=c("red","blue")). (Modifiqué tus posiciones x para el código de golfista, aunque el espacio puede ser un poco menos ordenado)
Rturnbull

1
Además, gracias a la coincidencia parcial de argumentos, puede usar en co=lugar de col=. Y finalmente, 6:12*.05es varios bytes más corto que seq(.3,.6,.05).
rturnbull

1
¡Buena atrapada! Y ahora me doy cuenta de que, 6:12/20por supuesto, es 1 byte más corto que 6:12*.05, disculpas por desviarlo y sugerir ediciones subóptimas.
rturnbull

1
¿No están los colores apagados? ¿No deberían ser "I" y "V" diferentes colores?
JDL

2
Estoy bastante seguro de que el()mejora el 99% de todas las strsplitrespuestas anteriores en 1 byte.
Vlo

21

LÖVE , 152 142 136 bytes

¡Enseñemos algo de amor para un pequeño y divertido lenguaje de creación de prototipos! No es perfecto para la tarea de jugar golf (vamos, está basado en LUA), pero es fácil de escribir.

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 pantalla:

captura de pantalla


Versión totalmente sin golf:

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

12
Me encanta que hayas usado algo diferente a Java.
AdmBorkBork

55
Tantos 255 ... ¿Una variable para ellos?
manatwork

1
@ ConorO'Brien Este es un programa completo. love.draw()es una función incorporada que anula, que se ejecuta en el paso de dibujar. También hay cosas como love.update()y love.load()para varias partes del bucle de renderizado, pero son opcionales. Es un lenguaje agradable, y puedes comenzar a usarlo muy fácilmente . A veces lo uso para crear prototipos de ideas de juegos.
Geobits

2
@cat Simplemente no lo hacen. No es como si los estuviera sobreimprimiendo en una consola, es una impresión gráfica. Entonces, un espacio aquí es simplemente "no pintar nada en esta área", no "pintar esta área de color de fondo".
Geobits

2
@ ZoltánSchmidt ¡Gracias! Hay algunas otras respuestas de LÖVE , si quieres verlas: D
Geobits

18

Procesador de sopa caliente , 48 bytes

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

La versión sin golf es:

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

Si tiene en cuenta que mes(mensaje) es HSP echo, creo que esto es bastante legible.

Extrañamente, si intenta hacer poso pos,, la línea azul no sobrescribe la línea roja y aparece debajo de ella. Aún más extraño, colorsolo está destinado a tomar valores 0-255, pero 0,0,-1funciona para el azul, 0,-1,0funciona para el verde y -1,0,0funciona para ... ¿el negro? ( -257,0,0y 511,0,0funciona para el rojo, así que hay algo raro en el mod 256)

ingrese la descripción de la imagen aquí


¿Por qué los espacios en el segundo no messobrescriben al primero?
gato

@cat Spaces en realidad no dibuja nada, solo avanza la posición del cursor en cierto sentido
Sp3000

1
Inteligente usando -1 para 255. Tener un +1
Cyoce

@Cyoce ¿O tal vez en realidad es -255?
sagiksp

18

MATLAB, 74 bytes

Creamos un fondo blanco de 50x50 (una columna para cada estado) usando imshowuna matriz de ones. Luego mostramos un texto, usando mi truco de acortar nombres de propiedades para obtener los colores. Como la fuente predeterminada no tiene un ancho fijo, el texto se rellena con espacios.

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

ingrese la descripción de la imagen aquí

MATLAB, 99 bytes, fuente de ancho fijo

La primera versión utiliza el violín con espacios y coordenadas para obtener un interletraje adecuado en la fuente predeterminada y es posible que no se muestre correctamente en su computadora. En cambio, podemos usar una fuente de ancho fijo, como Courier(o, para algunos bytes más, FixedWidthque funciona en cualquier sistema que tenga instalada una fuente de ancho fijo). Esto tiene el costo de unos pocos bytes adicionales. Podemos mitigar esto ligeramente usando un forbucle para imprimir el texto. El texto y los colores correspondientes se almacenan en una matriz de celdas. El fondo debe ser un poco más grande.

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

ingrese la descripción de la imagen aquí

Matlab, edición adicional de 80 bytes

Lamentablemente, el texto azul subrayado no está permitido. De lo contrario, esta respuesta habría destacado un comportamiento interesante en MATLAB. Puede imprimir texto rojo con fprintf(2,txt), y puede imprimir texto subrayado azul con fprintf('<a href="">txt</a>'). Combinar esto funciona ... a veces. Completamente al azar , también puede crear texto subrayado en rojo. Puede emitir drawnowentre fllamadas consecutivas si este es el caso en su 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')

ingrese la descripción de la imagen aquí


Puedes escribir en <a href>lugar de <a href="">. Si no te gusta, puedes usarlo <a href=#>.
Ismael Miguel

@IsmaelMiguel Clever. <a>no funcionó
Sanchises

Usar solo <a>no se considera un enlace en el que se puede hacer clic. para obtener su color azul, debe considerarse como uno. En CSS, el selector puede ser a[href]. Mientras el atributo hrefesté allí, es un enlace en el que se puede hacer clic. Es por eso que usar solo <a>no funcionará.
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:

Sin golf:

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

ingrese la descripción de la imagen aquí

Jugar al golf con el comando ImageMagick completo consistía en

  • no llama explícitamente a la convertutilidad predeterminada

  • usar en xc:lugar de canvas:( xc:es un antiguo sinónimo de canvas:; no preveo que ImageMagick lo elimine nunca)

  • no especifica el color del lienzo pero depende del valor predeterminado de ImageMagick, que resulta ser blanco

  • eliminar el ancho 60de la geometría (cuando se omite, ancho == alto)

  • la eliminación de la "!" de la geometría que solo se necesita para producir un lienzo no cuadrado, comocanvas:white[60x30!]

  • utilizando el anterior en x:lugar de show:como el archivo de salida (se supone que ImageMagick se creó con Xsoporte)

  • eliminando algunos espacios en blanco que había usado para alinear las cadenas de texto

  • unir las múltiples líneas del comando (eliminó la barra diagonal inversa-CR entre líneas)

Si está tan interesado después de la elección, agregue 12 bytes -rotate 180antes de la show:directiva:

ingrese la descripción de la imagen aquí


44
Me encanta cómo la versión sin golf difiere drásticamente de la de golf.
Andreï Kostyrka

15

Bash, 35 bytes

Mi guión se ve así

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

xxd del archivo de script:

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

Escribiéndolo: ctrl-v-esc y ctrl-vh insertarán los escapes y los espacios de retroceso (^ [y ^ H).

ingrese la descripción de la imagen aquí


¿Como funciona esto? Una explicación sería genial
gato

2
@cat parece escribir todas las letras rojas (con "h" y "p" como sustitutos), luego establece el color en azul y escribe "d" al final. Finalmente, mueve el cursor hacia la izquierda para agregar la "t" y la "V" sobre los sustitutos anteriores (ascii 0x08, representado por "^ H" en la pantalla de arriba, se mueve a la izquierda 1 carácter). Manera inteligente de evitar muchas secuencias de escape para cambios de color. También utiliza un carácter de escape literal (0x1B, representado como "^ [") que ahorra espacio en comparación con respuestas similares como la mía.
Dave

Además: podría ahorrar 3 bytes asumiendo que el terminal está configurado en un fondo blanco de forma predeterminada (la mayoría de las otras respuestas del terminal ya lo suponen).
Dave

Puede guardar un byte eliminando las dos comillas y agregando una barra diagonal inversa (carácter de escape) antes del punto y coma. También la secuencia de comandos tiene una menor caso v (su misma línea de comandos está bien).


14

Java, 322 319 318 309 304 229 217 bytes

-9 Bytes gracias a Kevin.
-75 Bytes gracias a Angzuril, agradable llamada en las viejas clases awt, siempre olvida que existen.
-12 Bytes gracias al usuario 902383.

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);}};}

Salida:

ingrese la descripción de la imagen aquí


1
JFrame j=se puede jugar al golf Frame j=; (c==' '||i++%2==0)?se puede jugar al golf c<33|i++%2<1?y truese puede jugar al golf 1>0. Además, @HelkaHomba, ¿es esta una salida válida? Ya que también tiene espacios entre el V o t e d? Ah, y porque 0,0,999,99? 0,0,99,99es lo suficientemente grande para el texto en mi pantalla.
Kevin Cruijssen

1
(c<33||i++%2<1)?puede seguir jugando golf en tres bytes quitando el paréntesis y cambiando ||a|
Kevin Cruijssen

1
Encontré algunas cosas más al golf: new JComponenta new Container(-1); eliminar char c="IVoted".charAt(i);y cambiar g.drawString(c+""a g.drawString("IVoted".charAt(i)+""(-8).
Kevin Cruijssen

1
Primera mejora, cambie Frame j=new JFrame();j.add(new JComponent()a Frame j=new Frame();j.add(new Container()y también se puede bajar la importación import javax.swing.*;y g.setColor(Color.WHITE);g.fillRect(0,0,99,99)como resultado (-63)
Angzuril

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);}};}le permite reducir en 12 bytes
user902383

13

Chicle, 28 bytes

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

ingrese la descripción de la imagen aquí

No funciona en línea, ya que utiliza códigos de color ANSI para colorear.


¿Es esta una codificación directa o emplea algún otro truco inteligente?
Conor O'Brien el

2
@ ConorO'Brien No hay trucos ingeniosos en Bubblegum. Para ser honesto, esta respuesta fue principalmente un efecto secundario de la respuesta real en la que estoy trabajando.
un spaghetto el

13

PowerShell v2 +, 71 59 57 55 bytes

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

Ahorré dos bytes gracias a @flashbang ... guardé dos más gracias a @ConnorLSW

Lo toma "I Voted"y lo convierte en una charmatriz, luego realiza un bucle |%{...}. Cada letra, la ejecutamos Write-Hostcon el -bcolor de fondo a White, -noNewLine, y el -fcolor de fondo para que sea el índice apropiado . Esto aprovecha el hecho de que los valores ASCII impares son rojos, mientras que los valores ASCII pares son azules a través $_%2del índice.

Los colores de la consola en PowerShell son muy limitados, por lo que esta es la aproximación más cercana que podría obtener. Sería más golfista usar 4( DarkRed) para el rojo, pero no se ve bien, así que estoy sacrificando un par de bytes en aras de la precisión del color.

A continuación se muestra la salida, seguida de los 16 colores disponibles que la consola puede mostrar. Tenga en cuenta que el fondo no es realmente blanco, ya que Microsoft, en su sabiduría, optó por tener los colores de fondo muy ligeramente apagados de los colores de primer plano.

Salida de la consola


IIRC, en cosas antiguas, tenías 4 bits para el primer plano y 3 bits para el fondo, por lo que los fondos solo podían ser los colores 'oscuros' 0-7. ¿La consola todavía sigue eso?

@Hurkyl Kinda. Parece estar basado en la paleta de colores EGA , pero no estoy seguro de las razones históricas para que PowerShell mantenga ese esquema. Probablemente algo oculto en la compatibilidad con versiones anteriores de Win32 API que los obligó a usar solo esos 16 colores.
AdmBorkBork

¿No funciona si configura el color de fondo en 15?
Random832

@ Random832 es por el bien del fondo blanco de la pegatina.
geisterfurz007

@ geisterfurz007, TimmyD, le preguntaba si podía establecer el fondo en "15" en lugar de "blanco" [ya que el fondo real en su imagen parece ser # 7] para obtener un blanco más brillante. Pero al mirarlo más, toda su pantalla se ve extraña: los bordes entre las líneas en su ejemplo y la línea gris entre "I" y el siguiente espacio no tienen sentido si PowerShell se ejecuta en la consola. ¿Está utilizando alguna otra herramienta como ConEmu? Si es así, no tiene sentido culpar a Microsoft por esto.
Random832

11

Python, 91 bytes + termcolor

No voy a ganar, pero lo publiqué por diversión.

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

La mitad del crédito va a Sp3000.


2
El uso de códigos ANSI debería ser más corto
TuxCrafting,

@ TùxCräftîñg No es compatible con todas las plataformas, es decir, Windows.
Kade

3
¿Te importaría agregar una imagen?
Aficiones de Calvin

99
Puede guardar 5 bytes cambiando 'blue' if c else 'red'a 'brleude'[c^1::2].
Kade

2
Probablemente deberías poner + termcolor en el título ya que no es un módulo estándar. También: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

Hay no imprimibles. Pruébalo aquí!

La salida de Jolf es compatible con HTML. Intenté hacer algo inteligente como el módulo 2 para decidir el color, pero eso solo terminó más tiempo (alrededor de 69 bytes). Entonces, la salida está en HTML.

Salida:

regular "voté"

(versión más grande)

gran "voté"


8
Esto es terrible, solo ha guardado tres bytes sobre HTML: P
solo ASCII el

@EriktheGolfer Realmente solo funciona en firefox.
Conor O'Brien

@ ConorO'Brien Oh, yo uso Chrome. Gracias.
Erik the Outgolfer

1
... y la respuesta HTML superó esto.
betseg

No se bluepuede escribir como 00f?
Ismael Miguel


8

sh, 61 49 bytes

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

Debido a que contiene elementos no imprimibles, aquí hay un hexdump xxd reversible:

00000000: 6563 686f 2022 1b5b 3437 3b33 313b 316d echo ". [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 "
Yo voté
Xterm (322)

Gracias a 4198 (manatwork) por -12 bytes.


¿Por qué configurar los colores de fondo y primer plano por separado? Comenzar con [47;31;1m. Y 1para negrita persiste hasta a 0, por lo que no es necesario configurarlo una y otra vez para cada letra.
manatwork

@manatwork ¡Dios mío, pensé que tenías que volver a configurarlo!
Erik the Outgolfer

Si eso shes nada más moderno que el viejo shell Bourne, una cierta expansión parámetro puede ayudar: s=":1;47;1mI :4mV:1mo:4mt:1me:4md";echo ${s//:/^[[3}.
manatwork

@manatwork No funciona. Parece que no es más moderno.
Erik the Outgolfer

@manatwork ${VAR/FROM/TO}requiere ksh93, bash o zsh, no solo "algo más moderno que el viejo shell Bourne". POSIX requiere los modificadores de expansión de parámetros #y %pero no /…/o:…:
Gilles

8

SVG + bzip2, 1807 bytes

Una versión vectorizada de la imagen de ejemplo, luego comprimida con bzip2 a aproximadamente la mitad (4385 -> 1807 bytes). Puedes descargarlo aquí . (enlace directo a las páginas de 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��

No voy a ganar, pero lo publiqué por diversión.


1
bzip2No es un lenguaje de programación.
Peter Taylor

3
@PeterTaylor Por meta reglas, no tiene que ser un lenguaje de programación. ( meta.codegolf.stackexchange.com/a/10426/41088
noɥʇʎԀʎzɐɹƆ

1
debería publicar un xxdarchivo reversible del archivo
cat

intente usar brotli para obtener aún más compresión
Sarge Borsch

44
Si realmente está interesado en jugar golf, probablemente tendría más sentido crear el SVG a mano con un par de elementos de texto con los colores correctos. Aquí hay un punto 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>tenga en cuenta que esto realmente lo hace fuera del área imprimible y no tiene color de fondo. Como dije, es solo un comienzo.
Trly

8

C, 65 bytes

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

o, más exactamente:

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));}

Utiliza la misma técnica de color bash utilizada por betseg, pero con la secuencia de escape octal en lugar de hexadecimal, y con la observación de Sp3000 de que todos los puntos de código impares son rojos.

Deja la terminal en azul. Restablecer con:

printf "\33[0m";

Si ||funciona en C como lo hace en JavaScript ( x||y -> x?x:y), puede hacer c&1||4para guardar un byte.
ETHproductions

1
@ETHproductions no funciona de esa manera en C. Si bien ||y && son un cortocircuito, que siempre devuelven 1 ó 0, independientemente de los valores involucrados.
Dave

@Dave, aprendí algo hoy ...
gato

Esto no establece el color de fondo. Además, podría usar un carácter de escape literal en lugar de \33guardar dos bytes, si eso no está en contra de las reglas de alguna manera.

@yellowantphil, esto supone que el fondo del terminal predeterminado está configurado en blanco (ya que el desafío dice que solo es posible tenerlo en un fondo blanco). De hecho, en OS X, el terminal es negro sobre blanco fuera de la caja.
Dave

8

Nodo, 57 55 41 bytes

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

Reemplace cada uno qcon el byte literal 1By Hcon el byte 08antes de ejecutarlo.

Así es como se ve en el emulador de terminal ConEmu en mi computadora con Windows (zoom):

ingrese la descripción de la imagen aquí


¿Qué emulador de terminal es ese?
gato


8

Python IDLE, 97 96 78 69 bytes

¡Gracias a DrMcMoylex por eliminar algunos bytes!

EDITAR: descubrí que un directo .write()era 9 bytes más corto

No es realmente una respuesta adecuada, más abuso de un tema estándar. IDLE es el IDE de Python y, a menos que esté personalizado, STDOUTes azul, STDERRes rojo y el fondo es blanco. Entonces, el siguiente código:

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

Imprime esto:

ingrese la descripción de la imagen aquí

Esto funciona porque ord(i)%2comprueba la paridad del punto de código de la letra y la imprime en ERR/ en OUTconsecuencia.


8

REBOL , 100 90 95 bytes (-7 bytes con 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"]

En REPL, no se requiere el REBOL inicial [] . Eso son 7 bytes.

La versión sin golf es:

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"
]

A la izquierda, con "espacio 0x0" agregado a cada bloque de texto, a la derecha, con el relleno 2x2 predeterminado.

REBOLDE VOTÉ
(fuente: canardpc.com )


7

Perl, 57 + 17 = 74 bytes

Corre con -MTerm::ANSIColor

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

Su terminal puede ser azul al final (agregue ,c("reset")al final del código para restaurarlo a la normalidad).

Por defecto, los terminales suelen ser de fondo negro, pero opcionalmente se pueden cambiar a blanco, lo que personalmente no creo que sea trampa.

Con foto: ingrese la descripción de la imagen aquí


7

PHP, 199 201 151 bytes

Este script muestra la imagen a la salida estándar. Actualizado gracias a 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);

Ejecútelo en la línea de comando así:

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

Salida:

ingrese la descripción de la imagen aquí


2
Salta la header()llamada. Su código también funciona bien desde la línea de comandos. Como error_reportingel valor predeterminado no muestra avisos, generalmente es aceptable no citar los literales de cadena. O si no te gusta, str_split("I Voted")sigue siendo más corto que enumerar los caracteres por separado. Y mueva la asignación a $ i para su primer uso.
manatwork

1
~2**24parece funcionar en lugar de 0xFFFFFF. No estoy seguro si esto es válido para todas las arquitecturas. Si no, 2**24-1debe ser portátil.
manatwork

@manatwork increíble gracias. Eso lo redujo a 152. Lo intenté ~2**24y 2**24-1obtuve errores. Ni siquiera sé cómo funcionan esos.
Kodos Johnson el

Probablemente su PHP sea anterior a 5.6.0: “Se agregó un operador de exponenciación (**)”. Registro de cambios de PHP . Igual que pow(), pero más práctico para jugar al golf. pastebin.com/jFn6ahFk
manatwork

Oh ya veo. Bueno, ya que php 5.5 parece no ser compatible, usaré su solución. Ahora son 150. Gracias de nuevo.
Kodos Johnson el

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.Endes necesario para iOS, de lo contrario, el texto se superpondrá con la barra de estado. No hay problema en Android, por lo que puede guardar 34 bytes, incluida la coma.

Editar: 2016-11-14: -4 bytes

Sin golf

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 };
    }
}

1
Bueno, ese es un nuevo tipo de idea. +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 ensamblaje (adecuado como entrada para debug.com, por lo que todos los números son hexadecimales):

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

Utiliza una rutina de BIOS para enviar la cadena a la memoria de la pantalla. La cadena aparecerá en una posición "aleatoria" en la pantalla (ver más abajo), así:

captura de pantalla

La cadena contiene las letras I V o t e d, intercaladas con "atributos"

74 74 71 74 71 74 71

que especifican el color de las letras. Aquí 7 como el dígito más significativo significa "fondo blanco", y el dígito menos significativo especifica el primer plano (1 = azul; 4 = rojo).

La posición de visualización de la cadena está especificada por el dxregistro. Como se menciona aquí , el valor inicial de este registro es igual al valor del csregistro. Y el valor de esa es la primera dirección disponible en la memoria, después de cargar DOS.

El tamaño de DOS suele ser inferior a 64 K, es decir, la dirección del segmento del programa del usuario cargado es inferior a hexadecimal 1000. Por lo tanto, la salida aparecerá en algún lugar alrededor de las primeras 16 líneas de texto en la pantalla. En mi ejemplo, apareció en la línea 8 (la mitad superior de dx, llamada dh, es igual a 8).

La mitad inferior de dx, llamada dl, contiene la columna en la que se emite el texto. Los experimentos muestran que el BIOS no comprueba el desbordamiento, por lo que no importa si dxsolicita resultados, por ejemplo, en la columna 100.


inteligente, breve y realmente intuitivo.
tuskiomi
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.