SORTIR ET VOTEZ


114

Nous sommes aujourd'hui le 8 novembre 2016, jour des élections aux États-Unis d'Amérique.

Si vous êtes un citoyen américain habilité à voter, sortez et votez si vous ne l'avez pas encore fait avant de répondre à ce défi. Ne discutez pas pour qui vous avez voté. Il importe seulement que vous ayez voté.

Si vous n'êtes pas citoyen américain ou si vous n'êtes pas éligible pour voter, alors, avant de répondre à ce défi, donnez-lui une faveur en disant à quiconque de votre connaissance qui est un citoyen éligible de voter et de voter s'il ne le fait pas déjà.

Défi

Ecrivez un programme qui indique que vous avez voté, comme un autocollant numérique "I Voted" .

Il ne devrait pas prendre d' entrée et de sortie doivent d'une manière raisonnable l'expression I VotedI, oet esont rouges ( #FF0000) et V, tet dsont bleus ( #0000FF). Le fond doit être blanc ( #FFFFFF).

Par exemple:

Exemple graphique "I Voted"

Ces couleurs sont bien sûr représentatives du drapeau américain (mais pas les couleurs officielles ). Le rouge vient en premier simplement parce qu'il vient en premier dans l'idiome commun "rouge blanc et bleu".

Pour être valide, une réponse doit:

  • Utilisez les couleurs spécifiées dans l'arrangement spécifié.

  • Utilisez une police et une taille de police simples et lisibles. L'exemple utilise des caractères gras Times New Roman 72 points, mais toute police courante supérieure à 6 points convient probablement.

  • Ayez juste la phrase I Votedsur une seule ligne , correctement mise en majuscule, avec un espace libre entre les deux mots. Cela ne devrait pas ressembler IVoted.

  • N'indiquez pas qui le répondant a voté pour ou soutient la candidature du président ou des scrutins à vote négatif. Ne commençons aucun débat sur Internet. Il s’agit de célébrer le vote, pas les candidats.

Toute manière raisonnable d’afficher ou de produire le résultat est valide, telle que:

  • Dessiner le texte sur une image qui est ensuite affichée, enregistrée ou brute en sortie.

  • Écrire le texte sur une console en utilisant le formatage des couleurs . Dans ce cas, vous pouvez utiliser approximativement le rouge et le bleu purs si nécessaire, et vous pouvez utiliser uniquement la zone située directement derrière le texte.

  • Affichage du texte sur un formulaire WPF / Windows.

  • Produire un fichier HTML / RTF / PDF avec le texte.

S'il vous plaît poster une image de votre sortie.

La réponse la plus courte en octets gagne.


29
Un peu déçu, mon autocollant actuel ne ressemble pas au vôtre.
Geobits

39
"Ce qui compte, c'est que tu aies voté." - @HelkaHomba ... C'est comme dire "peu importe le code que vous écrivez, tant que vous écrivez du code." : /
Michael Yaeger

41
@MichaelYaeger Eh bien, écrire du code est mieux que n'en écrire aucun. Voter vaut mieux que ne pas voter. Il y a de fortes chances que les gens réfléchissent au codage et au vote s'ils choisissent de le faire. Mais, en réalité, j’ai dit cela pour éviter les débats honteux.
Les passe-temps de Calvin Le

43
Si cela aide quelqu'un, les voyelles sont rouges, les consonnes sont bleues.
mbomb007

34
@ mbomb007 Ou plus utilement, les lettres avec des points de code impairs sont en rouge et les lettres avec des points de code pairs sont en bleu.
Sp3000

Réponses:


116

Minecraft Chat (client vanilla 1.10, serveur Spigot 1.10): 19 octets

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

ou du côté client:

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

Minecraft utilise un système de code de couleur avec ces couleurs programmées dans.

entrez la description de l'image ici

Attention aux règles:

  • Écrire le texte sur une console en utilisant le formatage des couleurs. Dans ce cas, vous pouvez utiliser approximativement le rouge et le bleu purs si nécessaire, et vous pouvez utiliser uniquement la zone située directement derrière le texte.

Toutes ces affirmations sont vraies, telles que:
les approximations ARE et rouge (bien que très similaires).
Le fond du chat Minecraft est transparent, ce qui signifie qu'il est possible de le placer sur un fond blanc. (comme un monde vide)


10
Sensationnel. Je suis sans voix. C'est une réponse très intelligente!
DJMcMayhem

28
Je ne pense pas que Minecraft Chat soit Turing-complet ou considéré comme un langage de programmation (bien que cela puisse ne plus être une exigence). Très créatif cependant! :)
Kade

9
@Shebang gaming.stackexchange.com/questions/20219/… Le chat de Minecraft a (presque) toutes les mêmes commandes que les blocs de commande, et certainement toutes les commandes de retour lorsque la question a été posée :-)
tuskiomi

15
Techniquement, dans Minecraft vanille, les &s devraient être §s
Oliver Ni

2
Hmmm je pense que cela peut être fait dans Quake 3, aussi
Sarge Borsch

107

C, 82 80 78 74 54 octets

Merci à @WillihamTotland et @criptych pour la sauvegarde de 2 octets chacun!

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

Où les représentent 0x1B octets (touche d'échappement). Comme ce code contient des caractères de contrôle non imprimables, voici un hexdump réversible:

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

Sortie sur mon téléphone:


3
@KritixiLithos cette ligne définit acomme "\x1B[%dm", qui est une séquence d'échappement ANSI pour la coloration, avec un espace réservé. Les chiffres printf()remplissent ces espaces réservés.
mardi

1
On peut supprimer deux octets en remplaçant a par "\x1B[47;31m"et en définissant b to "\x1B[34m", puis en putsalternant aet en bpréfixes.
Williham Totland

3
Vous pouvez enregistrer 2 autres octets avec "\ 33" au lieu de "\ x1B".
Criptych

1
En prolongeant ce que dit le cryptot, je ne sais pas si cela est autorisé, mais vous sauvegarderiez quatre octets supplémentaires en utilisant un caractère d'échappement au lieu de \33. Je ne sais pas ce que la norme C pense de cela ...

3
@paxdiablo selon ce méta filetage, les fonctions sont acceptables pour le code golf.
mardi

73

Google Blockly , 10 à 14 blocs, 28 à 41 35 blytes

Code

entrez la description de l'image ici

Sortie

entrez la description de l'image ici

Essayez-le ici

Sans compter le hide turtlebloc parce que c'est juste de l'esthétique.

Un blyte est une combinaison d'un bloc et d'un octet. Il n'y a pas encore de méta-post expliquant comment le compter, mais je vais en créer un plus tard. Pour l'instant, voici comment je compte:

  • I o e, 8 blytes
  • V t d, 10 blytes (2 espaces principaux ici)
  • Couleurs, 1 blyte chacune, 2 au total
  • 90, 2 blytes
  • 999, 3 blytes
  • 0, 1 blyte
  • tourner à droite, 2 blytes
  • aller de l'avant, 2 blytes
  • blocs normaux, 1 blyte chacun, 5 au total

Étant donné que Google Blockly est rarement utilisé pour le golf et que je pense que ce défi est en dehors de la boîte, j'espère que cette soumission sera valide.


20
Pour mémoire, ceci est valable. C'est agréable de voir des langues uniques. Cependant, à moins d'un consensus sur le comptage d'octets dans Google Blockly, je peux l'ignorer lors de la sélection du gagnant.
Les passe-temps de Calvin Le

2
Vous pouvez trouver la discussion ici pertinente. CC @ HelkaHomba.
Scimonster

Avez-vous pensé à remplacer ces trois espaces I opar deux espaces em?
Andrea Lazzarotto

Google Blockly sera traduit en JavaScript, puis exécuté. Vous devez Inspect Elementexécuter le code dans l’API Blockly pour obtenir le code JavaScript réel.

1
Attendez, est-ce que Scratch pourrait être utilisé?
Adamawesome4

47

HTML, 52 octets

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

2
Aussi, je pense que #FF0000-> #F00et #0000FF-> #00Ffonctionne
Conor O'Brien

46
Pourquoi ne pas transformer cela en un extrait de pile?
Neil

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

7
en fait , vous pouvez juste garder l' imbrication sans fermer le I <c>V<e>o<c>t<e>e<c>d<style>*{color:red}c{color:0ffchangement et la note bleu0ff

2
Malheureusement, la version actuelle ne semble pas fonctionner comme un extrait de pile, la dernière version qui fonctionne pour moi est la c{color:blue}version.
Neil

39

LaTeX, 147 126 octets

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

A sauvé 21 octets et obtenu un meilleur crénage grâce à @ AndreïKostyrka.

Ceci imprime une page a4 avec ceci sur la première ligne (notez que ceci imprime également la page 1 en bas):

entrez la description de l'image ici


13
J'aurais pensé que LaTeX composerait le Vokerning plus joli ... Mais apparemment, il considère chaque lettre séparément en raison des couleurs.
Sanchises

@sanchises Puisque chaque lettre est dans une commande séparée, je pense que cela détruit le crénage correct.
Fataliser

Oui exactement. Bien que je sois sûr, il serait possible que le golf ne soit pas une exigence.
Sanchises

@sanchises c'est certainement possible , mais c'est en effet plus long que cette solution laide.
Fataliser

\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}enregistre 21 octets et génère 126 octets de pure beauté typographique.
Andreï Kostyrka

34

Windows 10 Batch, 51 50 octets

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

Où représente le caractère ANSI Escape 0x1B. Sorties utilisant le formatage des couleurs. Edit: 1 octet enregistré grâce à @ brianush1. J'ai essayé d'écrire le code pour générer cela, mais cela a pris 97 octets. Sortie:

j'ai voté


1
Vous pouvez @color fc&echo I
jouer au

1
intéressant, je n'avais pas réalisé les séquences d'échappement ANSI prises en charge par le terminal Windows
Mark K Cowan

3
@MarkKCowan Ce n'est que Windows 10, et (je pense!) Post Redstone Update. C'est l'une des rares choses qui m'empêche d'installer simplement XP sur celle-ci.
wizzwizz4

@ wizzwizz4 ConEmu les supporte aussi :) En effet, il s'agit de l'anniversaire de Windows 10 (c'est-à-dire redstone 1)
Asu

@Asu j'ai installé XP dessus.
wizzwizz4

28

JavaScript, 71 octets

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

Utilise console.logla capacité d 'imprimer en couleur. Ne fonctionne pas dans un extrait de pile, vous devez donc coller cette réponse sur la console pour la tester.

entrez la description de l'image ici

Crédits photo à @Mast


C'est exactement ce que je viens de dire, haha. Je pense que l'alternative la plus courte seraitconsole.log([...' I Voted'].join`%c`,r='color:red',r,b='color:blue',r,b,r,b)
ETHproductions

Ne fonctionne pas non plus dans Node.js. :(
Jordanie

J'ai été surpris que cela fonctionne réellement, mais c'est le cas .
Mast

23

R, 113 85 81 74 73 55 octets

Edit: Sauvegardé de nombreux octets grâce à @rturnbull et @JDL

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

La taille de la sortie (et l'espacement, etc.) dépend de la résolution du périphérique graphique actuellement ouvert. Testé en RGui et RStudio sur mon moniteur et produit:

entrez la description de l'image ici


4
Oh, je n'ai jamais vu el()auparavant. Merci de m'aider à en apprendre davantage R! Depuis textest vectorisé, vous pouvez sauter la boucle for et il suffit d' écrire: text(seq(.3,.6,.05),.5,s,col=c("red","blue")). (J'ai modifié vos x positions pour le code golfier, bien que l'espacement puisse être un peu moins net.)
rturnbull

1
De plus, grâce à la correspondance partielle des arguments, vous pouvez utiliser co=plutôt que col=. Et enfin, 6:12*.05plusieurs octets sont-ils plus courts que seq(.3,.6,.05).
rturnbull

1
Bonne prise! Et maintenant, je me rends bien compte que 6:12/20c'est bien plus court que 1 octet 6:12*.05, désolé de vous avoir égaré et de vous avoir suggéré des modifications sous-optimales.
rturnbull

1
Les couleurs ne sont-elles pas éteintes? Le "I" et le "V" ne devraient-ils pas être de couleurs différentes?
JDL

2
Je suis sûr que el()99% de toutes les strsplitréponses précédentes sont améliorées de 1 octet.
Vlo

21

LÖVE , 152 142 136 octets

Montrons un peu de löve pour un petit langage de prototypage amusant! Ce n'est pas parfait pour la tâche de golf (allez, c'est basé sur LUA), mais c'est facile à écrire.

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

Capture d'écran:

capture d'écran


Version entièrement non-golfée:

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
Je crois que vous avez utilisé autre chose que Java.
AdmBorkBork

5
Tant de 255… Une variable pour eux?
Manatwork

1
@ ConorO'Brien Ceci est un programme complet. love.draw()est une fonction intégrée que vous substituez, qui s'exécute à l'étape de dessin. Il y a aussi des choses comme love.update()et love.load()pour différentes parties de la boucle de rendu, mais elles sont facultatives. C'est une belle langue, et vous pouvez commencer très facilement . Je l'utilise parfois pour créer un prototype d'idées de jeux.
Geobits

2
@cat Ils ne le font tout simplement pas. Ce n'est pas comme si je les surimprimais sur une console, c'est une impression graphique. Donc, un espace est simplement "ne rien peindre dans cette zone", pas "peindre ce fond en couleur".
Geobits

2
@ ZoltánSchmidt Merci! Il existe quelques autres réponses à LÖVE , si vous voulez les parcourir: D
Geobits

18

Processeur de soupe chaude , 48 octets

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

La version sans golf est:

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

Si vous gardez à l'esprit que mes(message) est celui du fournisseur de services réseau echo, je pense que cela est assez lisible.

Bizarrement, si vous essayez de faire posou pos,, la ligne bleue ne remplace pas la ligne rouge et apparaît en dessous. Même plus étrange, colorvise uniquement à intégrer des valeurs 0-255, mais 0,0,-1fonctionne pour le bleu, 0,-1,0fonctionne pour le vert et -1,0,0fonctionne pour ... le noir? ( -257,0,0et 511,0,0travaillez pour le rouge si, donc quelque chose de génial à propos du mod 256 passe)

entrez la description de l'image ici


Pourquoi les espaces de la seconde ne mesremplacent-ils pas les premiers?
chat

@cat Les espaces ne dessinent réellement rien, il avance simplement la position du curseur dans un sens
Sp3000

1
Clever using -1 pour 255. Avoir un +1
Cyoce

@ Cyoce Ou peut-être est-il réellement -255?
mardi

18

MATLAB, 74 octets

Nous créons un fond blanc 50x50 (une colonne pour chaque état) en utilisant imshowun tableau de ones. Nous affichons ensuite un texte en utilisant mon astuce consistant à raccourcir les noms de propriétés pour obtenir les couleurs. La police par défaut n’ayant pas une largeur fixe, le texte est complété par des espaces.

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

entrez la description de l'image ici

MATLAB, 99 octets, police de largeur fixe

La première version utilise la manipulation d'espaces et de coordonnées pour obtenir un kerning correct sur la police par défaut et risque de ne pas s'afficher correctement sur votre ordinateur. Au lieu de cela, nous pouvons utiliser une police de largeur fixe, comme Courier(ou, pour certains autres octets, FixedWidthqui fonctionne sur tout système sur lequel une police de largeur fixe est installée). Cela se fait au prix de quelques octets supplémentaires. Nous pouvons atténuer cela légèrement en utilisant une forboucle pour imprimer le texte. Le texte et les couleurs correspondantes sont stockés dans un tableau de cellules. Le fond doit être un peu plus grand.

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

entrez la description de l'image ici

Matlab, édition bonus de 80 octets

Malheureusement, le texte bleu souligné n'est pas autorisé. Sinon, cette réponse aurait mis en évidence un comportement intéressant dans MATLAB. Vous pouvez imprimer du texte en rouge à l'aide de fprintf(2,txt), et vous pouvez imprimer du texte souligné en bleu avec fprintf('<a href="">txt</a>'). Combiner cela fonctionne ... parfois. Complètement au hasard , il peut également créer du texte souligné en rouge. Vous pouvez émettre drawnowentre des fappels consécutifs si c'est le cas sur votre système.

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

entrez la description de l'image ici


Vous pouvez écrire <a href>au lieu de <a href="">. Si vous ne l'aimez pas, vous pouvez utiliser <a href=#>.
Ismael Miguel

@IsmaelMiguel Clever. <a>n'a pas fonctionné.
Sanchises

Utiliser seulement <a>n'est pas considéré comme un lien cliquable. pour obtenir sa couleur bleue, il faut le considérer comme tel. En CSS, le sélecteur peut être a[href]. Tant que l'attribut hrefest là, c'est un lien cliquable. C'est pourquoi utiliser seulement <a>ne fonctionnera pas.
Ismael Miguel

18

ImageMagick, 102 octets

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:

entrez la description de l'image ici

La commande ImageMagick complète consiste à:

  • n'appelle pas explicitement l' convertutilitaire par défaut

  • utiliser à la xc:place de canvas:( xc:est un ancien synonyme pour canvas:; je ne prévois pas que ImageMagick l'éliminera jamais)

  • ne spécifiant pas la couleur de la zone de travail mais s'appuyant sur la valeur par défaut d'ImageMagick, qui est le blanc

  • supprimer la largeur 60de la géométrie (quand elle est omise, width == height)

  • enlever le "!" de la géométrie qui est seulement nécessaire pour produire une toile non carrée, commecanvas:white[60x30!]

  • en utilisant le fichier de sortie plus ancien x:au lieu de show:(en supposant que ImageMagick a été construit avec le Xsupport)

  • enlever des espaces que j'avais utilisés pour aligner les chaînes de texte

  • jonction des lignes multiples de la commande (suppression du backslash-CR entre les lignes)

Si vous êtes si enclin après l'élection, ajoutez 12 octets -rotate 180précédant la show:directive:

entrez la description de l'image ici


4
J'aime à quel point la version non-golfée diffère radicalement de la version golfée.
Andreï Kostyrka

15

Bash, 35 octets

Mon script ressemble à ceci

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

xxd du fichier script:

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

En le tapant: ctrl-v-esc et ctrl-vh inséreront les échappements et les backspaces (^ [et ^ h).

entrez la description de l'image ici


Comment cela marche-t-il? Une explication serait super
chat

2
@cat, il semble écrire toutes les lettres rouges (avec "h" et "p" comme remplaçants), puis définit la couleur sur bleu et écrit "d" à la fin. Enfin, il déplace le curseur vers la gauche pour ajouter le "t" et le "V" aux remplacements précédents (ascii 0x08, représenté par "^ H" dans l'affichage ci-dessus, déplace le caractère de gauche à gauche). Une façon intelligente d’éviter de nombreuses séquences d’échappement pour les changements de couleur Il utilise également un caractère d'échappement littéral (0x1B, représenté par "^ ["), ce qui économise de l'espace par rapport à des réponses similaires, comme le mien.
Dave

Aussi: pourrait économiser 3 octets en supposant que le terminal est défini sur un fond blanc par défaut (la plupart des réponses de terminaux le supposent déjà).
Dave

Vous pouvez enregistrer un octet en supprimant les deux guillemets et en ajoutant une barre oblique inversée (caractère d'échappement) avant le point-virgule. De plus, votre script a une minuscule v (votre ligne de commande est correcte).


14

Java, 322 319 318 309 304 229 217 octets

-9 octets grâce à kevin.
-75 octets grâce à Angzuril, bel appel des anciennes classes awt, oubliez toujours celles qui existent.
-12 octets grâce à 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);}};}

Sortie:

entrez la description de l'image ici


1
JFrame j=peut être joué au golf Frame j=; (c==' '||i++%2==0)?peut être joué au golf c<33|i++%2<1?et truepeut être joué au golf 1>0. Aussi, @HelkaHomba, est-ce une sortie valide? Puisqu'il a aussi des espaces entre les V o t e d? Oh et pourquoi 0,0,999,99? 0,0,99,99est assez grand pour le texte sur mon écran.
Kevin Cruijssen

1
(c<33||i++%2<1)?pouvez toujours jouer au golf par trois octets en enlevant la parenthèse et en changer ||en|
Kevin Cruijssen

1
J'ai trouvé d'autres choses au golf: new JComponentto new Container(-1); supprimer char c="IVoted".charAt(i);et remplacer g.drawString(c+""par g.drawString("IVoted".charAt(i)+""(-8).
Kevin Cruijssen

1
Première amélioration, changez Frame j=new JFrame();j.add(new JComponent()pour Frame j=new Frame();j.add(new Container()et vous pouvez aussi abandonner l'importation import javax.swing.*;et g.setColor(Color.WHITE);g.fillRect(0,0,99,99)par conséquent (-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);}};}vous permet de réduire de 12 octets
user902383

13

Bubblegum, 28 octets

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

entrez la description de l'image ici

Ne fonctionne pas en ligne car il utilise des codes de couleur ANSI pour la coloration.


S'agit-il d'un encodage simple ou utilise-t-il une autre astuce intelligente?
Conor O'Brien

2
@ ConorO'Brien Bubblegum ne contient aucune astuce intelligente. Pour être honnête, cette réponse était principalement un effet secondaire de la réponse sur laquelle je travaille.
un spaghetto

13

PowerShell v2 +, 71 59 57 55 octets

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

Enregistré deux octets grâce à @flashbang ... enregistré deux autres grâce à @ConnorLSW

Le prend "I Voted"et le transforme en un chartableau, puis en boucle |%{...}. Chaque lettre, nous exécutons Write-Hostavec la -bcouleur ONTEXTE White, -noNewLine et la -fcouleur oreground être l' indice approprié . Ceci exploite le fait que les valeurs ASCII impaires sont en rouge, alors que les valeurs ASCII même sont en bleu via $_%2l'index.

Les couleurs de la console dans PowerShell sont très limitées, c’est donc l’approximation la plus proche possible. Il serait plus pratique d'utiliser 4( DarkRed) pour le rouge, mais cela ne semble pas correct. Je sacrifie donc quelques octets pour des raisons de précision des couleurs.

Vous trouverez ci-dessous le résultat, suivi des 16 couleurs disponibles que la console peut afficher. Notez que l’arrière-plan n’est pas vraiment blanc, car Microsoft, dans sa sagesse, a choisi d’ajouter les couleurs d’arrière-plan aux couleurs de l’avant-plan.

Sortie de la console


IIRC, dans l'ancien, vous aviez 4 bits pour le premier plan et 3 bits pour l'arrière-plan, de sorte que les arrière-plans ne peuvent être que les couleurs «sombres» 0-7. La console suit-elle toujours cela?

@Hurkyl Kinda. Cela semble être basé sur la palette de couleurs EGA , mais je ne suis pas sûr des raisons historiques pour lesquelles PowerShell a conservé ce schéma. Probablement quelque chose de caché dans la compatibilité ascendante de l'API Win32 qui les a obligés à n'utiliser que ces 16 couleurs.
AdmBorkBork

Cela ne fonctionne pas si vous définissez la couleur d'arrière-plan sur 15?
Random832

@ Random832 c'est pour le fond blanc de l'autocollant.
geisterfurz007

@ geisterfurz007, TimmyD, je vous demandais si vous pouviez définir l'arrière-plan sur "15" plutôt que sur "blanc" [car l'arrière-plan réel de votre image semble être n ° 7] pour obtenir un blanc plus éclatant. Mais en le regardant davantage, tout votre affichage a l’air étrange: les frontières entre les lignes de votre exemple et la ligne grise entre "I" et l’espace suivant n’ont pas de sens si PowerShell est exécuté dans la console - utilisez-vous un autre outil comme ConEmu? Dans ce cas, il n’a pas de sens de blâmer Microsoft pour cela.
Random832

11

Python, 91 octets + termcolor

Je ne vais pas gagner, mais posté pour le plaisir.

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

La moitié du crédit va à Sp3000.


2
L'utilisation des codes ANSI devrait être plus courte
TuxCrafting

@ TùxCräftîñg Il n'est pas pris en charge sur toutes les plateformes, à savoir Windows.
Kade

3
Cela vous dérange-t-il d'ajouter une image?
Hobbies de Calvin le

9
Vous pouvez enregistrer 5 octets en changeant 'blue' if c else 'red'à 'brleude'[c^1::2].
Kade

2
Vous devriez probablement mettre + termcolor dans le titre car ce n'est pas un module standard. Aussi:from termcolor import*\nfor c in'I Voted':cprint(c,'brleude'[ord(c)%2::2],'on_white',end='')
Sp3000

8

Jolf, 53 octets

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

Il y a des non imprimables. Essayez-le ici!

La sortie de Jolf est compatible HTML. J'ai essayé de faire quelque chose d'intelligent tel que le module 2 pour choisir la couleur, mais cela n'a duré que plus longtemps (environ 69 octets). Donc, la sortie est en HTML.

Sortie:

régulier "j'ai voté"

(version plus grande)

grand "j'ai voté"


8
C’est terrible que vous ayez enregistré trois octets de plus que HTML: P
uniquement ASCII

@EriktheGolfer Cela ne fonctionne vraiment que dans Firefox.
Conor O'Brien

@ ConorO'Brien Oh, j'utilise Chrome. Merci.
Erik l'Outgolfer

1
... et la réponse HTML a déformé cela.
mardi

Ne peut pas blueêtre écrit comme 00f?
Ismael Miguel


8

sh, 61 49 octets

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

Comme il contient des éléments non imprimables, voici un fichier hexadécimal réversible xxd:

00000000: 6563 686f 2022 1b5b 3437 3b33 313b 316d écho ". [47; 31; 1m
00000010: 4920 1b5b 3334 6d56 1b5b 3331 6d6f 1b5b I. [34mV. [31 mois.
00000020: 3334 6d74 1b5b 3331 6d65 1b5b 3334 6d64 34 mt [31 me. [34 md
00000030: 22 "
J'ai voté
Xterm (322)

Merci à 4198 (manatwork) pour -12 octets.


Pourquoi définir les couleurs d'arrière-plan et de premier plan séparément? Commencez avec [47;31;1m. Et le 1caractère audacieux persiste jusqu’à a 0, il n’est donc pas nécessaire de le redéfinir pour chaque lettre.
Manatwork

@manatwork Oh mon dieu, je pensais que vous deviez le réinitialiser!
Erik the Outgolfer

Si shc'est quelque chose de plus moderne que l'ancien Bourne shell, une extension des paramètres peut aider: s=":1;47;1mI :4mV:1mo:4mt:1me:4md";echo ${s//:/^[[3}.
Manatwork

@manatwork Cela ne fonctionne pas. Il semble que ce n'est pas plus moderne.
Erik the Outgolfer

@manatwork ${VAR/FROM/TO}nécessite ksh93, bash ou zsh, pas simplement “quelque chose de plus moderne que l'ancien shell Bourne”. POSIX exige que #et %modificateurs extension des paramètres mais pas /…/ou:…:
Gilles

8

SVG + bzip2, 1807 octets

Une version vectorisée de l'exemple d'image, puis compressée avec bzip2 à environ la moitié (4385 -> 1807 octets). Vous pouvez le télécharger ici . (lien direct vers les pages 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��

Je ne vais pas gagner, mais posté pour le plaisir.


1
bzip2n'est pas un langage de programmation.
Peter Taylor

3
@PeterTaylor Par règles méta, il n'est pas nécessaire que ce soit un langage de programmation. ( meta.codegolf.stackexchange.com/a/10426/41088
nozɐɹƆ

1
devrait publier une version réversible xxddu fichier
Cat

essayez d'utiliser brotli pour encore plus de compression
Sarge Borsch

4
Si cela vous intéresse vraiment de jouer au golf, il serait probablement plus logique de simplement créer le fichier SVG à la main avec quelques éléments de texte définis dans les bonnes couleurs. Voici un point de départ: <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>Notez que cela le rend en dehors de la zone imprimable et n’a pas de couleur de fond. Comme je l'ai dit, ce n'est qu'un début.
Trlkly

8

C, 65 octets

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

ou plus précisément:

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

Utilise la même technique de couleur bash que celle utilisée par betseg, mais avec la séquence d'échappement octale au lieu de hex et l'observation de Sp3000 selon laquelle tous les points de code impairs sont en rouge.

Laisse le terminal en bleu. Réinitialiser avec:

printf "\33[0m";

Si ||fonctionne en C comme en JavaScript ( x||y -> x?x:y), vous pouvez c&1||4sauvegarder un octet.
ETHproductions

1
@ETHproductions ne fonctionne pas de cette façon en C. Bien ||et && sont court-circuit, ils reviennent toujours 1 ou 0, quelles que soient les valeurs impliquées.
Dave

@Dave j'ai appris quelque chose aujourd'hui ...
chat

Cela ne définit pas la couleur de fond. En outre, vous pouvez utiliser un caractère d'échappement littéral au lieu de \33sauvegarder deux octets, si cela ne va pas à l'encontre des règles.

@yellowantphil, cela suppose que l’arrière-plan du terminal par défaut est défini sur blanc (puisque le défi indique qu’il doit simplement être possible de l’avoir sur un fond blanc). En fait, sous OS X, le terminal est prêt à l'emploi, noir sur blanc.
Dave

8

Noeud, 57 55 41 octets

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

Remplacez-les qpar l'octet littéral 1Bet Hpar l'octet 08avant de démarrer.

Voici à quoi cela ressemble dans l'émulateur de terminal ConEmu sur mon ordinateur Windows (zoom avant):

entrez la description de l'image ici


Quel émulateur de terminal est-ce !?
chat


8

Python IDLE, 97 96 78 69 octets

Merci à DrMcMoylex pour avoir enlevé quelques octets!

EDIT: Compris qu'un direct .write()était plus court de 9 octets

Pas vraiment une réponse appropriée, plus d'abus d'un thème standard. IDLE est l'IDE de Python et, à moins d'être personnalisé, STDOUTest bleu, STDERRrouge et l'arrière-plan est blanc. Donc, le code suivant:

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

Imprime ceci:

entrez la description de l'image ici

Cela fonctionne car ord(i)%2vérifie la parité du point de code de la lettre et l’imprime dans ERR/ en OUTconséquence.


8

REBOL , 100 90 95 octets (-7 octets avec REPL pour 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"]

Dans REPL, le REBOL initial [] n'est pas requis. C'est 7 octets.

La version sans golf est:

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

À gauche, avec "espace 0x0" ajouté à chaque bloc de texte, à droite, avec le remplissage par défaut 2x2.

REBOL J'ai voté
(source: canardpc.com )


7

Perl, 57 + 17 = 74 octets

Courir avec -MTerm::ANSIColor

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

Votre terminal peut être bleu à la fin (ajouter ,c("reset")à la fin du code pour le restaurer à la normale).

Par défaut, les terminaux ont généralement un fond noir, mais ils peuvent éventuellement être modifiés en blanc, ce que je ne pense pas personnellement être une triche.

Avec photo: entrez la description de l'image ici


7

PHP, 199 201 151 octets

Ce script affiche l'image sur la sortie standard. Mis à jour grâce à 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);

Exécutez-le dans la ligne de commande comme ceci:

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

Sortie:

entrez la description de l'image ici


2
Passer l' header()appel. Votre code fonctionne bien aussi depuis la ligne de commande. Comme error_reportingla valeur par défaut de ne pas afficher les avis, il est généralement acceptable de ne pas citer vos littéraux de chaîne. Ou si vous n'aimez pas cela, il str_split("I Voted")est toujours plus court que d'énumérer les caractères séparément. Et déplacez l'affectation vers $ i pour sa première utilisation.
Manatwork

1
~2**24semble fonctionner au lieu de 0xFFFFFF. Je ne sais pas si cela est valable pour toutes les architectures. Si non, 2**24-1devrait être portable.
Manatwork

@manatwork génial merci. Cela a fait descendre à 152. J'ai essayé ~2**24et 2**24-1j'ai eu des erreurs. Je ne sais même pas comment ça marche.
Kodos Johnson

Votre version de PHP est probablement antérieure à la version 5.6.0: “Ajout d’un opérateur d’exponentiation (**).” - Journal des modifications PHP . Identique à pow(), mais plus pratique pour le golf. pastebin.com/jFn6ahFk
manatwork

Oh je vois. Eh bien, comme PHP 5.5 semble ne pas être pris en charge, je vais utiliser votre solution. Maintenant, il est 150. Merci encore.
Kodos Johnson

7

Xamarin.Forms C #, 317 313 octets

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.Endest nécessaire pour iOS, sinon le texte sera superposé par la barre d'état. Pas de problème sur Android, vous pouvez économiser 34 octets, y compris une virgule.

Édition: 14/11/2016: -4 octets

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
Eh bien, c'est un nouveau type d'idée. +1
Addison Crump

7

Code machine x86 + DOS + BIOS, 25 octets

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

Code d'assemblage (convient comme entrée pour debug.comque tous les nombres soient hexadécimaux):

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

Il utilise une routine BIOS pour sortir la chaîne dans la mémoire d'affichage. La chaîne apparaîtra à une position "aléatoire" sur l'écran (voir ci-dessous), comme ceci:

capture d'écran

La chaîne contient les lettres I V o t e d, entrelacées avec "attributs"

74 74 71 74 71 74 71

qui spécifient la couleur des lettres. Ici, le chiffre 7 le plus significatif signifie "fond blanc" et le chiffre le moins significatif spécifie le premier plan (1 = bleu; 4 = rouge).

La position d'affichage de la chaîne est spécifiée par le dxregistre. Comme mentionné ici , la valeur initiale de ce registre est égale à la valeur du csregistre. Et la valeur de celle-ci est la première adresse disponible en mémoire, après le chargement de DOS.

La taille de DOS est généralement inférieure à 64 Ko, c'est-à-dire que l'adresse du segment du programme de l'utilisateur chargé est inférieure à hexadécimale 1000. La sortie apparaîtra donc quelque part autour des 16 premières lignes de texte à l'écran. Dans mon exemple, il apparaît à la ligne 8 (la moitié supérieure de dx, appelée dh, est égale à 8).

La moitié inférieure de dx, appelée dl, contient la colonne à laquelle le texte est sorti. Des expériences ont montré que le BIOS ne vérifie pas le dépassement de capacité, il est donc indifférent de dxdemander une sortie, par exemple dans la colonne 100


intelligent, court et vraiment intuitif.
Tuskiomi
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.