ESCI E VOTA


114

Oggi è l'8 novembre 2016, giorno delle elezioni negli Stati Uniti d'America.

Se sei un cittadino americano idoneo a votare, esci e vota se non l'hai già fatto prima di rispondere a questa sfida. Non discutere per chi hai votato. Importa solo che tu abbia votato.

Se non sei un cittadino degli Stati Uniti o non sei idoneo a votare, prima di rispondere a questa sfida, fai un favore agli Stati Uniti dicendo a tutti quelli che conosci che sono cittadini idonei di uscire e votare se non lo hanno già fatto.

Sfida

Scrivi un programma che indichi che hai votato, come un adesivo digitale "I Voted" .

Dovrebbe prendere nessuna uscita ingresso e non vanno in modo ragionevole la frase I Votedin cui il I, oe esono di colore rosso ( #FF0000) e la V, te dsono di colore blu ( #0000FF). Lo sfondo deve essere bianco ( #FFFFFF).

Per esempio:

Esempio grafico "I Voted"

Questi colori sono ovviamente rappresentativi della bandiera americana (anche se non i colori ufficiali ). Il rosso viene prima semplicemente perché viene prima nel linguaggio comune "rosso bianco e blu".

Per essere valida, una risposta deve:

  • Utilizzare i colori specificati nella disposizione specificata.

  • Usa un singolo carattere leggibile e la dimensione del carattere. L'esempio usa il grassetto New Roman di 72pt Times, ma probabilmente qualsiasi font comune sopra 6pt va bene.

  • Avere solo la frase I Votedsu una sola riga , maiuscola correttamente, con uno spazio libero tra le due parole. Non dovrebbe sembrare IVoted.

  • Non indicare per chi il rispondente ha votato o sostiene il presidente o le eventuali gare di scrutinio. Non iniziamo alcun dibattito su Internet. Si tratta di celebrare il voto, non i candidati.

È valido qualsiasi modo ragionevole di visualizzare o produrre l'output, come ad esempio:

  • Disegnare il testo su un'immagine che viene quindi visualizzata, salvata o resa non elaborata.

  • Scrivere il testo su una console utilizzando la formattazione del colore . In questo caso puoi approssimare il rosso e il blu puri se necessario, ed è ok se solo l'area direttamente dietro il testo può essere resa bianca.

  • Visualizzazione del testo su un modulo WPF / Windows.

  • Emissione di un file HTML / RTF / PDF con il testo.

Si prega di pubblicare un'immagine del tuo output.

Vince la risposta più breve in byte.


29
Un po 'deluso, il mio adesivo non sembra il tuo.
Geobits l'

39
"Importa solo che tu abbia votato." - @HelkaHomba ... È come dire "non importa quale codice scrivi, purché tu abbia scritto del codice". : /
Michael Yaeger,

41
@MichaelYaeger Bene, scrivere un po 'di codice è meglio che non scriverne nessuno. Votare è meglio che non votare. È probabile che le persone dedicheranno un po 'di pensiero alla codifica e al voto se scelgono di farlo. Ma davvero l'ho detto per evitare dibattiti rabbiosi.
Hobby di Calvin l'

43
Se aiuta qualcuno, le vocali sono rosse, le consonanti sono blu.
mbomb007,

34
@ mbomb007 O più utilmente, le lettere con punti di codice dispari sono rosse e le lettere con punti di codice pari sono blu.
Sp3000,

Risposte:


116

Chat di Minecraft (client vanilla 1.10, server 1.10 spigot): 19 byte

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

o dal lato client:

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

Minecraft utilizza un sistema di codifica a colori con questi colori programmati.

inserisci qui la descrizione dell'immagine

Ricorda le regole:

  • Scrivere il testo su una console utilizzando la formattazione del colore. In questo caso puoi approssimare il rosso e il blu puri se necessario, ed è ok se solo l'area direttamente dietro il testo può essere resa bianca.

Tutti questi sono veri, come:
le approssimazioni rosse e blu SONO (anche se ancora molto simili).
Lo sfondo nella chat di Minecraft è trasparente, il che significa che è possibile metterlo su uno sfondo bianco. (come un mondo vuoto)


10
Wow. Sono senza parole. Questa è una risposta molto intelligente!
DJMcMayhem

28
Non penso che Minecraft Chat sia Turing completo o considerato un linguaggio di programmazione (anche se questo potrebbe non essere più un requisito). Molto creativo però! :)
Kade,

9
@Shebang gaming.stackexchange.com/questions/20219/… La chat di Minecraft ha (quasi) tutti gli stessi comandi dei blocchi di comandi, e certamente tutti i comandi di ritorno quando è stata posta la domanda :-)
tuskiomi

15
Tecnicamente, in Vanilla Minecraft, la &s dovrebbe essere §s
Oliver Ni

2
Hmmm penso che si possa fare anche in Quake 3
Sarge Borsch,

107

C, 82 80 78 74 54 byte

Grazie a @WillihamTotland e @criptych per aver salvato 2 byte ciascuno!

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

Dove i represent rappresentano 0x1B byte (chiave di escape). Poiché questo codice contiene caratteri di controllo non stampabili, ecco un hexdump reversibile:

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

Uscita sul mio telefono:


3
@KritixiLithos quella linea definisce aas "\x1B[%dm", che è una sequenza di escape ANSI per la colorazione, con un segnaposto. I numeri printf()riempiono quei segnaposto.
Betseg,

1
È possibile eliminare due byte sostituendo a con "\x1B[47;31m"e definendo b in "\x1B[34m", quindi utilizzando putsalternando ae bprefissi.
Williham Totland,

3
È possibile salvare altri 2 byte con "\ 33" anziché "\ x1B".
criptych

1
Estendendo ciò che ha detto il criptych, non so se questo è permesso, ma risparmieresti altri quattro byte usando un carattere di escape letterale invece di \33. Non sono sicuro di cosa ne pensi lo standard C ...

3
@paxdiablo secondo questo meta thread, le funzioni sono OK per il codice golf.
Betseg,

73

Google Blockly , 10 14 blocchi, 28 41 35 blytes

Codice

inserisci qui la descrizione dell'immagine

Produzione

inserisci qui la descrizione dell'immagine

Provalo qui

Senza contare il hide turtleblocco perché è solo estetica.

Una blyte è una combinazione di un blocco e un byte, non esiste ancora un meta post su come contarlo, ma ne creerò uno più tardi. Per ora, ecco come conto:

  • I o e, 8 blytes
  • V t d, 10 blytes (2 spazi iniziali qui)
  • Colori, 1 blyte ciascuno, 2 in totale
  • 90, 2 blytes
  • 999, 3 blytes
  • 0, 1 blyte
  • gira a destra, 2 blytes
  • andare avanti, 2 blytes
  • blocchi normali, 1 blyte ciascuno, 5 in totale

Dal momento che Google Blockly viene raramente utilizzato per il golf e sto pensando a tutti gli effetti per questa sfida, spero che questo sia un valido contributo.


20
Per la cronaca questo è valido. È bello vedere lingue uniche. Tuttavia, a meno che non ci sia un meta consenso sul conteggio dei byte in Google Blockly, posso ignorarlo quando si seleziona un vincitore.
Hobby di Calvin l'

2
È possibile trovare pertinente la discussione qui . CC @HelkaHomba.
Scimonster

Hai pensato di sostituire quei tre spazi I ocon due spazi em?
Andrea Lazzarotto,

Google Blockly verrà tradotto in JavaScript e quindi eseguito. È necessario Inspect Elemented eseguire il codice nell'API Blockly per ottenere il vero codice JavaScript.

1
Aspetta, quindi Scratch può essere usato?
Adamawesome4,

47

HTML, 52 byte

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

2
Inoltre, penso che #FF0000-> #F00e #0000FF-> #00Flavora
Conor O'Brien

46
Perché non trasformarlo in un frammento di stack?
Neil,

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

7
in realtà puoi semplicemente continuare a annidare senza chiudere I <c>V<e>o<c>t<e>e<c>d<style>*{color:red}c{color:0ffe annotare il cambiamento in blu0ff

2
Purtroppo la versione attuale non sembra funzionare come frammento di stack, l'ultima versione che funziona per me è la c{color:blue}versione.
Neil

39

LaTeX, 147 126 byte

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

Hai salvato 21 byte e migliorato la crenatura grazie a @ AndreïKostyrka.

Questo stampa una pagina A4 con questa sulla prima riga (si noti che questa stampa anche la pagina 1 in basso):

inserisci qui la descrizione dell'immagine


13
Avrei pensato che LaTeX avrebbe composto la Vocrenatura più carina ... Ma a quanto pare considera ogni lettera separatamente a causa dei colori.
Sanchises,

@sanchises Poiché ogni lettera ha un comando separato, penso che distrugga la crenatura corretta.
Fatalizza l'

Si Esattamente. Anche se sono sicuro che sarebbe possibile in qualche modo se il golf non fosse un requisito.
Sanchises,

@sanchise questo è sicuramente possibile , ma in effetti è più lungo di questa brutta soluzione.
Fatalizza l'

\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 byte e risulta in 126 byte di pura bellezza tipografica.
Andreï Kostyrka,

34

Batch di Windows 10, 51 50 byte

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

Dove ␛ rappresenta il carattere ANSI Escape 0x1B. Output utilizzando la formattazione del colore. Modifica: salvato 1 byte grazie a @ brianush1. Ho provato a scrivere il codice per generare questo, ma ci sono voluti 97 byte. Produzione:

ho votato


1
Puoi giocare a golf di 1 byte se usi @color fc&echo I...
brianush1

1
interessante, non mi ero reso conto che le sequenze di escape ANSI supportate dal terminale di Windows
Mark K Cowan,

3
@MarkKCowan È solo Windows 10 e (penso!) Pubblica l'aggiornamento Redstone. È una delle poche cose che mi impedisce di installare XP su di esso.
wizzwizz4,

@ wizzwizz4 ConEmu supporta anche questi :) In effetti questo è dall'anniversario di Windows 10 (cioè redstone 1)
Asu

@Asu Ho installato XP su di esso.
wizzwizz4,

28

JavaScript, 71 byte

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

Sfrutta console.logla capacità di stampare a colori. Non funziona in uno snippet di stack, quindi è necessario incollare questa risposta sulla console per testarlo.

inserisci qui la descrizione dell'immagine

Crediti fotografici a @Mast


È esattamente quello che ho appena inventato, ahah. Penso che l'alternativa più breve sarebbeconsole.log([...' I Voted'].join`%c`,r='color:red',r,b='color:blue',r,b,r,b)
ETHproductions

Non funziona neanche in Node.js. :(
Giordania,

Sono stato sorpreso che questo funzioni davvero, ma lo fa .
Albero

23

R, 113 85 81 74 73 55 byte

Modifica: salvato un sacco di byte grazie a @rturnbull e @JDL

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

La dimensione dell'output (e spaziatura ecc.) Dipende dalla risoluzione del dispositivo grafico attualmente aperto. Testato su RGui e RStudio sul mio monitor e produce:

inserisci qui la descrizione dell'immagine


4
Oh, non l'ho mai visto el()prima. Grazie per avermi aiutato a saperne di più R! Dal momento che textè vettorializzare, si può saltare il ciclo for e solo scrivere: text(seq(.3,.6,.05),.5,s,col=c("red","blue")). (Ho modificato le tue posizioni x per il codice golfista, anche se la spaziatura potrebbe essere un po 'meno pulita.)
rturnbull

1
Inoltre, grazie alla corrispondenza parziale degli argomenti è possibile utilizzare co=anziché col=. E infine, 6:12*.05alcuni byte sono più brevi di seq(.3,.6,.05).
rturnbull,

1
Buona pesca! E ora mi rendo conto che 6:12/20ovviamente è 1 byte più corto di 6:12*.05, mi scuso per averti smarrito e suggerito modifiche non ottimali.
rturnbull,

1
I colori non sono spenti? "I" e "V" non dovrebbero avere colori diversi?
JDL

2
Sono abbastanza sicuro che el()migliora il 99% di tutte le strsplitrisposte precedenti di 1 byte.
Vlo,

21

LÖVE , 152 142 136 byte

Mostriamo un po 'di löve per un divertente linguaggio di prototipazione! Non è perfetto per il compito del golf (dai, è basato su LUA), ma è facile da scrivere.

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

Immagine dello schermo:

immagine dello schermo


Versione completamente non golfata:

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
Ho pensato che avessi usato qualcosa di diverso da Java.
AdmBorkBork,

5
Così tanti 255 ... Una variabile per loro?
arte

1
@ ConorO'Brien Questo è un programma completo. love.draw()è una funzione integrata che viene ignorata, che viene eseguita nella fase di disegno. Ci sono anche cose come love.update()e love.load()per varie parti del ciclo di rendering, ma sono opzionali. È una lingua piacevole, e puoi iniziare molto facilmente . A volte lo uso per prototipare idee di gioco.
Geobits l'

2
@cat Semplicemente no. Non è come se li sovrastampassi su una console, è una stampa grafica. Quindi uno spazio qui è semplicemente "non dipingere nulla in quest'area", non "dipingere questa area di sfondo colorato".
Geobits il

2
@ ZoltánSchmidt Grazie! Ci sono alcune altre risposte di LÖVE , se vuoi dare un'occhiata attraverso di loro: D
Geobits,

18

Processore Hot Soup , 48 byte

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

La versione non golfata è:

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

Se si mestiene presente che (messaggio) è di HSP echo, penso che questo sia abbastanza leggibile.

Stranamente, se provi a fare poso pos,, la linea blu non sovrascrive la linea rossa e appare sotto di essa. Ancora più strano, colorè pensato solo per assumere valori 0-255, ma 0,0,-1funziona per il blu, 0,-1,0funziona per il verde e -1,0,0funziona per ... il nero? ( -257,0,0e 511,0,0funziona per il rosso, quindi qualcosa di strano sulla mod 256 in corso)

inserisci qui la descrizione dell'immagine


Perché gli spazi nel secondo non messovrascrivono il primo?
gatto

@cat Spaces in realtà non disegna nulla, fa solo avanzare la posizione del cursore in un certo senso
Sp3000

1
Intelligente usando -1 per 255. Avere un +1
Cyoce il

@Cyoce O forse in realtà è -255?
sagiksp,

18

MATLAB, 74 byte

Creiamo uno sfondo bianco 50x50 (una colonna per ogni stato) utilizzando imshowuna matrice di ones. Quindi visualizziamo un testo, usando il mio trucco per abbreviare i nomi delle proprietà per ottenere i colori. Poiché il carattere predefinito non è a larghezza fissa, il testo è riempito con spazi.

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

inserisci qui la descrizione dell'immagine

MATLAB, 99 byte, carattere a larghezza fissa

La prima versione usa giocherellare con spazi e coordinate per ottenere una crenatura corretta sul carattere predefinito e potrebbe non essere visualizzata correttamente sul tuo computer. Invece, possiamo usare un carattere a larghezza fissa, come Courier(o, per alcuni più byte, FixedWidthche funziona su qualsiasi sistema su cui sia installato un carattere a larghezza fissa). Questo ha un costo di parecchi byte extra. Possiamo mitigarlo leggermente usando un forciclo per stampare il testo. Il testo e i colori corrispondenti sono memorizzati in una matrice di celle. Lo sfondo deve essere un po 'più 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

inserisci qui la descrizione dell'immagine

Matlab, edizione bonus 80 byte

Purtroppo, il testo blu sottolineato non è consentito. Altrimenti, questa risposta avrebbe evidenziato alcuni comportamenti interessanti in MATLAB. È possibile stampare il testo in rosso usando fprintf(2,txt)e è possibile stampare il testo sottolineato in blu con fprintf('<a href="">txt</a>'). Combinando questo funziona ... a volte. Completamente casuale , può anche creare testo sottolineato in rosso. È possibile emettere drawnowtra fchiamate consecutive se questo è il caso sul proprio 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')

inserisci qui la descrizione dell'immagine


Puoi scrivere <a href>invece di <a href="">. Se non ti piace, puoi usare <a href=#>.
Ismael Miguel,

@IsmaelMiguel Clever. <a>non ha funzionato.
Sanchises,

L'uso di solo <a>non è considerato un link cliccabile. per ottenere il suo colore blu, deve essere considerato come uno. Nel CSS, il selettore potrebbe essere a[href]. Finché l'attributo hrefè presente, è un collegamento selezionabile. Ecco perché usare solo <a>non funzionerà.
Ismael Miguel,

18

ImageMagick, 102 byte

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:

inserisci qui la descrizione dell'immagine

Il golf consisteva nel comando completo di ImageMagick

  • non chiamare esplicitamente l' convertutilità predefinita

  • using xc:invece di canvas:( xc:è un vecchio sinonimo di canvas:; non prevedo che ImageMagick lo abbia mai eliminato)

  • non specificando il colore della tela, ma basandosi sul valore predefinito di ImageMagick, che risulta essere bianco

  • rimuovendo la larghezza 60dalla geometria (quando viene omessa, larghezza == altezza)

  • rimuovendo il "!" dalla geometria necessaria solo per produrre una tela non quadrata, comecanvas:white[60x30!]

  • usando il più vecchio x:invece che show:come file di output (presuppone che ImageMagick sia stato creato con il Xsupporto)

  • rimuovendo alcuni spazi bianchi che avevo usato per allineare le stringhe di testo

  • unendo le righe multiple del comando (rimossa la barra rovesciata-CR tra le righe)

Se sei così propenso dopo l'elezione, aggiungi 12 byte -rotate 180prima della show:direttiva:

inserisci qui la descrizione dell'immagine


4
Adoro il modo in cui la versione non golfata si differenzia drasticamente da quella del golf.
Andreï Kostyrka,

15

Bash, 35 byte

La mia sceneggiatura è simile a questa

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

xxd del file di script:

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

Digitando: ctrl-v-esc e ctrl-vh inseriranno le escape e i backspaces (^ [e ^ H).

inserisci qui la descrizione dell'immagine


Come funziona? Una spiegazione sarebbe super
cat

2
@cat sembra scrivere tutte le lettere rosse (con "h" e "p" come stand-in), quindi imposta il colore su blu e scrive "d" alla fine. Infine sposta il cursore a sinistra per aggiungere "t" e "V" sui precedenti stand-in (ascii 0x08, rappresentato da "^ H" nel display in alto, sposta a sinistra di 1 carattere). Modo intelligente per evitare molte sequenze di escape per i cambi di colore. Utilizza anche un carattere di escape letterale (0x1B, rappresentato come "^ [") che consente di risparmiare spazio rispetto a risposte simili come la mia.
Dave,

Inoltre: potrebbe salvare 3 byte supponendo che il terminale sia impostato su uno sfondo bianco per impostazione predefinita (la maggior parte delle altre risposte del terminale lo presuppone già).
Dave,

È possibile salvare un byte rimuovendo le due virgolette e aggiungendo una barra rovesciata (carattere di escape) prima del punto e virgola. Anche lo script ha un più basso caso v (la vostra una linea di comando va bene).


14

Java, 322 319 318 309 304 229 217 byte

-9 byte grazie a Kevin.
-75 Byte grazie ad Angzuril, bella didascalia sulle vecchie classi wt, dimentica sempre che esistono.
-12 byte grazie 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);}};}

Produzione:

inserisci qui la descrizione dell'immagine


1
JFrame j=può essere giocato a golf Frame j=; (c==' '||i++%2==0)?può essere giocato a golfc<33|i++%2<1? e truepuò essere giocato a 1>0. Inoltre, @HelkaHomba, è un output valido? Dal momento che ha anche spazi tra il V o t e d? Oh, e perché 0,0,999,99? 0,0,99,99è abbastanza grande per il testo sul mio schermo.
Kevin Cruijssen,

1
(c<33||i++%2<1)?si può giocare a golf di tre byte rimuovendo la parentesi e cambiando ||in|
Kevin Cruijssen

1
Ho trovato altre cose da golf: new JComponent a new Container(-1); rimuovi char c="IVoted".charAt(i);e modifica g.drawString(c+""in g.drawString("IVoted".charAt(i)+""(-8).
Kevin Cruijssen,

1
Primo miglioramento, modifica Frame j=new JFrame();j.add(new JComponent()in Frame j=new Frame();j.add(new Container()e puoi anche eliminare l'importazione import javax.swing.*;eg.setColor(Color.WHITE);g.fillRect(0,0,99,99) di conseguenza (-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);}};} consente di ridurre di 12 byte
user902383

13

Bubblegum, 28 byte

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

inserisci qui la descrizione dell'immagine

Non funziona online poiché utilizza i codici colore ANSI per la colorazione.


È una codifica semplice o utilizza qualche altro trucco intelligente?
Conor O'Brien,

2
@ ConorO'Brien In Bubblegum non esistono trucchi intelligenti. Ad essere onesti, questa risposta è stata principalmente un effetto collaterale della risposta effettiva a cui sto lavorando.
uno spaghetto l'

13

PowerShell v2 +, 71 59 57 55 byte

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

Due byte salvati grazie a @flashbang ... altri due salvati grazie a @ConnorLSW

Lo prende "I Voted"e lo trasforma in un chararray, quindi passa in loop |%{...}. Ogni lettera, eseguiamo Write-Hostcon il -bcolore di sfondo a White, -noNewLine e il -fcolore di sfondo per essere l' indice appropriato . Ciò sfrutta il fatto che i valori ASCII dispari sono rossi, mentre anche i valori ASCII sono blu tramite $_%2l'indice.

I colori della console in PowerShell sono molto limitati, quindi questa è l'approssimazione più vicina che potrei ottenere. Sarebbe più golfoso usare 4( DarkRed) per il rosso, ma non sembra giusto, quindi sto sacrificando un paio di byte per la precisione del colore.

Di seguito è riportato l'output, seguito dai 16 colori disponibili che la console può visualizzare. Si noti che lo sfondo non lo è veramente bianco, poiché nella loro saggezza Microsoft ha optato per avere i colori di sfondo sempre così leggermente diversi dai colori di primo piano.

Uscita console


IIRC, in roba antica, avevi 4 bit per il primo piano e 3 bit per lo sfondo, quindi gli sfondi potevano essere solo i colori 'scuri' 0-7. La console lo sta ancora seguendo?

@Hurkyl Kinda. Sembra essere basato sulla tavolozza dei colori EGA , ma non sono sicuro dei motivi storici per cui PowerShell mantiene questo schema. Probabilmente qualcosa di sepolto nella retrocompatibilità dell'API Win32 che li ha costretti a usare solo quei 16 colori.
AdmBorkBork,

Non funziona se si imposta il colore di sfondo su 15?
Casuale 832

@ Random832 è per il bene dello sfondo bianco dell'adesivo.
geisterfurz007,

@ geisterfurz007, TimmyD, ti stavo chiedendo se potresti impostare lo sfondo su "15" anziché "bianco" [poiché lo sfondo reale nella tua immagine sembra essere # 7] per ottenere un bianco più luminoso. Ma osservandolo di più, l'intero display sembra strano: i bordi tra le linee nell'esempio e la linea grigia tra "I" e il seguente spazio non hanno senso se PowerShell viene eseguito nella console - stai usando qualche altro strumento come ConEmu? In tal caso, non ha senso incolpare Microsoft per questo.
Casuale 832

11

Python, 91 byte + termcolor

Non vincerò, ma lo pubblicheremo per divertimento.

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

La metà del credito va a Sp3000.


2
L'uso dei codici ANSI dovrebbe essere più breve
TuxCrafting

@ TùxCräftîñg Non è supportato su tutte le piattaforme, ad esempio Windows.
Kade,

3
Ti dispiace aggiungere un'immagine?
Hobby di Calvin l'

9
È possibile salvare 5 byte cambiando 'blue' if c else 'red'in 'brleude'[c^1::2].
Kade,

2
Probabilmente dovresti inserire + termcolor nel titolo poiché non è un modulo standard. Inoltre:from termcolor import*\nfor c in'I Voted':cprint(c,'brleude'[ord(c)%2::2],'on_white',end='')
Sp3000,

8

Jolf, 53 byte

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

Ci sono non stampabili. Provalo qui!

L'output di Jolf è in grado di HTML. Ho provato a fare qualcosa di intelligente come il modulo 2 per decidere il colore, ma questo è rimasto solo più a lungo (circa 69 byte). Quindi, l'output è in HTML.

Produzione:

regolare "I Voted"

(versione più grande)

grande "I Voted"


8
È terribile che hai salvato solo tre byte su HTML: P
ASCII solo l'

@EriktheGolfer Funziona davvero solo con Firefox.
Conor O'Brien,

@ ConorO'Brien Oh, io uso Chrome. Grazie.
Erik the Outgolfer,

1
... e la risposta HTML è stata superata.
Betseg,

Non può blueessere scritto come 00f?
Ismael Miguel,


8

sh, 61 49 byte

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

Poiché questo contiene non stampabili, ecco un hexdump xxd reversibile:

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 "
Ho votato
Xterm (322)

Grazie a 4198 (manatwork) per -12 byte.


Perché impostare i colori di sfondo e di primo piano separatamente? Inizia con [47;31;1m. E il 1for bold persiste fino a a 0, quindi non è necessario impostarlo più e più volte per ogni lettera.
arte

@manatwork Oh dio, pensavo che dovessi reimpostarlo!
Erik the Outgolfer,

Se questo shè qualcosa di più moderno rispetto al vecchio Bourne shell, un po 'di espansione di parametro può aiutare: s=":1;47;1mI :4mV:1mo:4mt:1me:4md";echo ${s//:/^[[3}.
arte

@manatwork Non funziona. Sembra che non sia più moderno.
Erik the Outgolfer,

@manatwork ${VAR/FROM/TO}richiede ksh93, bash o zsh, non solo "qualcosa di più moderno della vecchia shell Bourne". POSIX richiede i modificatori di espansione dei parametri #e %ma non /…/oppure:…:
Gilles

8

SVG + bzip2 , 1807 byte

Una versione vettoriale dell'immagine di esempio, quindi compressa con bzip2 a circa la metà (4385 -> 1807 byte). Puoi scaricarlo qui . (collegamento diretto alle pagine 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��

Non vincerò, ma lo pubblicheremo per divertimento.


1
bzip2non è un linguaggio di programmazione.
Peter Taylor,

3
@PeterTaylor Per meta-regole, non deve essere un linguaggio di programmazione. ( meta.codegolf.stackexchange.com/a/10426/41088
noɥʇʎԀʎzɐɹƆ

1
dovrebbe pubblicare un xxdfile reversibile
cat

prova a usare brotli per una compressione ancora maggiore
Sarge Borsch

4
Se sei davvero interessato a giocare a golf, probabilmente avrebbe più senso creare a mano l'SVG con un paio di elementi di testo impostati sui colori giusti. Ecco un punto di partenza: si <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>noti che questo lo rende effettivamente al di fuori dell'area stampabile e non ha colore di sfondo. Come ho detto, è solo un inizio.
truscamente

8

C, 65 byte

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

o, più precisamente:

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

Utilizza la stessa tecnica di colore bash usata da betseg, ma con la sequenza di fuga ottale anziché esadecimale, e con l'osservazione di Sp3000 che tutti i punti di codice dispari sono rossi.

Lascia il terminale in blu. Ripristina con:

printf "\33[0m";

Se ||funziona in C come in JavaScript ( x||y -> x?x:y), potresti c&1||4salvare un byte.
ETHproductions

1
@ETHproductions non funziona così in C. Mentre ||e && sono in corto circuito, restituiscono sempre 1 o 0, indipendentemente dai valori coinvolti.
Dave,

@Dave ho imparato qualcosa oggi ...
cat

Questo non imposta il colore di sfondo. Inoltre, potresti usare un carattere di escape letterale invece di \33salvare due byte, se non è in qualche modo contro le regole.

@yellowantphil presuppone che lo sfondo del terminale predefinito sia impostato su bianco (poiché la sfida dice che deve essere possibile averlo su uno sfondo bianco). In effetti in OS X, il terminale è pronto all'uso.
Dave,

8

Nodo, 57 55 41 byte

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

Sostituire ciascuno qcon il byte letterale 1Be Hcon byte 08prima di eseguire.

Ecco come appare nell'emulatore di terminale ConEmu sul mio computer Windows (ingrandito):

inserisci qui la descrizione dell'immagine


Che emulatore di terminale è quello !?
gatto


8

Python IDLE, 97 96 78 69 byte

Grazie a DrMcMoylex per aver rasato alcuni byte!

EDIT: capito che un diretto .write() era più corto di 9 byte

Non proprio una risposta corretta, più abuso di un tema standard. IDLE è l'IDE di Python e, a meno che non sia personalizzato, STDOUTè blu, STDERRè rosso e lo sfondo è bianco. Quindi, il seguente codice:

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

Stampa questo:

inserisci qui la descrizione dell'immagine

Questo funziona perché ord(i)%2controlla la parità del punto di codice della lettera e lo stampa su ERR/ di OUTconseguenza.


8

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

In REPL, il REBOL iniziale [] non è richiesto. Sono 7 byte.

La versione non golfata è:

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 sinistra, con "spazio 0x0" aggiunto a ciascun blocco di testo, a destra, con l'imbottitura 2x2 predefinita.

REBOL I Votato
(fonte: canardpc.com )


7

Perl, 57 + 17 = 74 byte

Corri con -MTerm::ANSIColor

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

Il tuo terminale potrebbe essere blu alla fine (append ,c("reset") alla fine del codice per ripristinarlo alla normalità).

Di default, i terminali lo sono di solito uno sfondo nero, ma possono facoltativamente essere cambiati in bianco, che personalmente non penso sia imbroglione.

Con l'immagine: inserisci qui la descrizione dell'immagine


7

PHP, 199 201 151 byte

Questo script restituisce l'immagine allo standard output. Aggiornato grazie all'opera d'arte

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

Eseguilo dalla riga di comando in questo modo:

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

Produzione:

inserisci qui la descrizione dell'immagine


2
Salta la header()chiamata. Il tuo codice funziona bene anche dalla riga di comando. Poiché error_reportingil valore predefinito non mostra gli avvisi, è generalmente accettabile non citare i valori letterali delle stringhe. O se non ti piace, str_split("I Voted")è ancora più breve dell'enumerazione dei caratteri separatamente. E sposta il compito su $ i al suo primo utilizzo.
arte

1
~2**24sembra funzionare invece di 0xFFFFFF. Non sono sicuro se questo è valido per tutte le architetture. In caso contrario, 2**24-1dovrebbe essere portatile.
arte

@manatwork grazie mille. Questo è arrivato a 152. Ci ho provato ~2**24e 2**24-1ho riscontrato errori. Non so nemmeno come funzionano.
Kodos Johnson,

Probabilmente il tuo PHP è più vecchio della 5.6.0: "Aggiunto un operatore di esponenziazione (**)". - Registro delle modifiche di PHP . Come pow(), ma più maneggevole per il golf. pastebin.com/jFn6ahFk
arte

Oh, capisco. Bene, dato che php 5.5 sembra non essere supportato, userò la tua soluzione. Ora sono 150. Grazie ancora.
Kodos Johnson,

7

Xamarin.Forms C #, 317 313 byte

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è necessario per iOS, altrimenti il ​​testo verrà sovrapposto dalla barra di stato. Nessun problema su Android, quindi puoi risparmiare 34 byte inclusa la virgola.

Modifica: 14/11/2016: -4 byte

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

1
Bene, questo è un nuovo tipo di idea. +1
Addison Crump

7

codice macchina x86 + DOS + BIOS, 25 byte

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

Codice assembly (adatto come input per debug.com , quindi tutti i numeri sono esadecimali):

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

Utilizza una routine BIOS per inviare la stringa alla memoria del display. La stringa apparirà in una posizione "casuale" sullo schermo (vedi sotto), in questo modo:

immagine dello schermo

La stringa contiene le lettere I V o t e d , interfogliate con "attributi"

74 74 71 74 71 74 71

che specifica il colore delle lettere. Qui 7 come cifra più significativa significa "sfondo bianco", e la cifra meno significativa specifica il primo piano (1 = blu; 4 = rosso).

La posizione di visualizzazione della stringa è specificata dal dxregistro. Come menzionato qui , il valore iniziale di questo registro è uguale al valore del csregistro. E il valore di quello è il primo indirizzo disponibile in memoria, dopo che DOS è stato caricato.

La dimensione di DOS è in genere inferiore a 64 KB, ovvero l'indirizzo del segmento del programma dell'utente caricato è inferiore a esadecimale 1000. Quindi l'output apparirà da qualche parte attorno alle prime 16 righe di testo sul display. Nel mio esempio, è apparso alla linea 8 (la metà superiore didx , chiamata dh, è uguale a 8).

La metà inferiore di dx, chiamata dl, contiene la colonna in corrispondenza della quale viene emesso il testo. Gli esperimenti dimostrano che il BIOS non controlla l'overflow, quindi non importa se dxrichiede l'output ad esempio nella colonna 100.


intelligente, breve e davvero intuitivo.
tuskiomi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.