出去投票


114

今天是2016年11月8日,美国大选日

如果您是符合投票资格的美国公民,那么在回答此挑战之前如果尚未投票,请出去投票不要讨论您投票给谁。只关系到您的投票。

如果您不是美国公民或没有投票的资格,那么在回答这一挑战之前,请告诉您知道谁是符合条件的公民(如果尚未参加投票),从而对美国有所帮助。

挑战

编写一个表明您已投票的程序,例如数字“ I Voted”标签

它应该不输入和输出必须以合理的方式短语I Voted,其中Ioe是红色的(#FF0000)和Vtd是蓝色的(#0000FF)。背景必须为白色(#FFFFFF)。

例如:

“我投票”示例图

这些颜色当然是美国国旗的代表(尽管不是官方颜色)。红色首先出现,仅是因为它在常见的成语“红色白色和蓝色”中首先出现。

为了有效,答案必须:

  • 使用指定的排列中指定的颜色。

  • 使用单个清晰的字体和字体大小。该示例使用72pt Times New Roman粗体,但是任何高于6pt的常见字体都可以。

  • 仅在单行I Voted上将该词组正确地大写,两个词之间要有清晰的空格。它不应该看起来像。IVoted

  • 不注明答覆者是谁投票支持总统或任何下场选举。我们不要开始任何互联网辩论。这是关于庆祝投票,而不是候选人。

显示或产生输出的任何合理方式都是有效的,例如:

  • 将文本绘制到图像上,然后显示,保存或输出原始图像。

  • 使用颜色格式将文本写入控制台。在这种情况下,如有必要,您可以近似使用纯红色和蓝色,并且仅将文本后面的区域设置为白色是可以的。

  • 在WPF / Windows窗体上显示文本。

  • 输出带有文本的HTML / RTF / PDF文件。

请发布您的输出图像。

以字节为单位的最短答案将获胜。


29
有点失望,我的实际贴纸看起来不像你的。
Geobits,2016年

39
“只有你投票才重要。” -@HelkaHomba ...就像说“只要编写一些代码,编写什么代码都没有关系”。:/
Michael Yaeger

41
@MichaelYaeger好吧,编写一些代码总比不编写任何代码都要好。投票总比不投票好。人们很可能会选择编码和投票。但实际上我说那是为了避免愤怒的辩论。
加尔文的爱好

43
如果对任何人有帮助,元音为红色,辅音为蓝色。
mbomb007 '16

34
@ mbomb007或更有用的是,具有奇数代码点的字母为红色,而具有偶数代码点的字母为蓝色。
Sp3000

Answers:


116

Minecraft聊天(香草1.10客户端,套管1.10服务器):19个字节

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

或从客户端:

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

Minecraft使用颜色编码系统编写这些颜色。

在此处输入图片说明

注意规则:

  • 使用颜色格式将文本写入控制台。在这种情况下,如有必要,您可以近似使用纯红色和蓝色,并且仅将文本后面的区域设置为白色是可以的。

所有这些都是正确的,例如:
红色和蓝色ARE近似值(尽管仍然非常相似)。
Minecraft聊天中的背景是透明的,这意味着可以将其放在白色背景上。(例如一个空的世界)


10
哇。我无语了。这是一个非常聪明的答案!
DJMcMayhem

28
我认为《我的世界》聊天不是图灵完备的,也不认为是一种编程语言(尽管这可能不再是必需的)。很有创意!:)
Kade

9
@ Shebanggaming.stackexchange.com/ questions/ 20219/… Minecraft聊天(几乎)具有与命令块相同的所有命令,并且肯定是在问到问题时从后方发出的所有命令:-)
tuskiomi

15
从技术上讲,在Minecraft的Minecraft中,&s应该是§s
Oliver Ni

2
嗯,我认为它可以在雷神之锤3做,太
Sarge的罗宋汤

107

C,82 80 78 74 54字节

感谢@WillihamTotland和@criptych分别节省了2个字节!

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

其中␛表示0x1B字节(转义键)。由于此代码包含不可打印的控制字符,因此有一个可逆的十六进制转储:

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

手机上的输出:


3
该行将@KritixiLithos定义a"\x1B[%dm",这是一个带占位符的ANSI着色转义序列。printf()填写的数字将占位符。
betseg

1
通过将a替换为"\x1B[47;31m"b并将b定义为"\x1B[34m",然后使用putsalter abprefix 可以减少两个字节。
Williham Totland

3
您可以使用“ \ 33”而不是“ \ x1B”保存另外2个字节。
criptych

1
扩展criptych所说的内容,我不知道是否允许这样做,但是您可以使用文字转义字符而不是来节省另外四个字节\33。不确定C标准

3
@paxdiablo根据元线程,代码高尔夫的功能还可以。
betseg 2016年

73

Google Blockly10 14个区块,28 41 35个blytes

在此处输入图片说明

输出量

在此处输入图片说明

在这里尝试

不算是hide turtle块,因为它只是美学。

一个blyte是一个块和一个字节的组合,关于如何计算这个还没有元发布,但是我稍后会创建。就目前而言,这是我的计算方式:

  • I o e,8杯
  • V t d,10个blytes(此处有2个前置空格)
  • 颜色,每张blyte,共2张
  • 90,2 blytes
  • 999,3粒
  • 0、1 blyte
  • 向右转,两个blytes
  • 向前移动,两枚
  • 普通块,每个blyte,共5个

由于Google Blockly很少用于打高尔夫球,而且我想挑战自己,所以我希望这是一个有效的建议。


20
为了记录,这是有效的。很高兴看到独特的语言。不过,除非在Google Blockly中对字节计数有元共识,否则在选择获胜者时我可能会忽略它。
加尔文的爱好

2
您可能会在这里找到相关的讨论。CC @HelkaHomba。
Scimonster

您是否打算I o用两个em空格替换这三个空格?
Andrea Lazzarotto

Google Blockly将被翻译成JavaScript,然后运行。您需要Inspect Element在Blockly API中运行代码才能获取真实的JavaScript代码。

1
等一下,可以使用Scratch吗?
Adamawesome4 '16

47

HTML,52个字节

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

2
另外,我认为#FF0000-> #F00#0000FF-> #00F有效
Conor O'Brien

46
为什么不将其转换为堆栈片段?
尼尔

3
<r>I <c>V<r>o<c>t<r>e<c>d<style>r{color:red}c{color:blue作品
仅ASCII的

7
实际上,您可以保持嵌套而不关闭I <c>V<e>o<c>t<e>e<c>d<style>*{color:red}c{color:0ff并且将注释更改为蓝色0ff

2
遗憾的是,当前版本似乎不能作为Stack Snippet使用,适用于我的最新版本是该c{color:blue}版本。
尼尔

39

LaTeX,147126字节

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

感谢@AndreïKostyrka,节省了21个字节并获得了更好的字距调整。

这将在第一行上打印a4页面(请注意,这还将在底部打印第1页):

在此处输入图片说明


13
我本以为LaTeX会排版Vo更紧缩的字眼...但是显然,由于颜色的缘故,它会分别考虑每个字母。
桑契斯

@sanchises由于每个字母都在单独的命令中,因此我认为它会破坏适当的字距调整。
致命

是啊 尽管我敢肯定,如果不是打高尔夫球的话,这是有可能的。
桑契斯,2016年

@sanchises 绝对有可能,但这确实比这个丑陋的解决方案更长。
致命

\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}节省21个字节,并产生126个字节的纯印刷美感。
安德烈KOSTYRKA

34

Windows 10批处理,51 50字节

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

其中,␛代表ANSI Escape 0x1B字符。使用颜色格式输出。编辑:感谢@ brianush1,保存了1个字节。我尝试编写代码来生成此代码,但它占用了97个字节。输出:

我投票了


1
如果使用@color fc&echo I...,您可以将其打低1个字节
brianush1 '16

1
有趣的是,我没有意识到Windows终端支持的ANSI转义序列
Mark K Cowan,

3
@MarkKCowan只有Windows 10,并且(我认为!)发布Redstone Update。这是阻止我仅在其上安装XP的几件事之一。
wizzwizz4 2016年

@ wizzwizz4 ConEmu也支持这些:)的确来自Windows 10周年纪念日(即redstone 1)
Asu

@Asu我通过它安装了XP。
wizzwizz4

28

JavaScript,71个字节

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

利用console.log的能力进行彩色打印。在堆栈代码段中不起作用,因此您应将此答案粘贴到控制台以对其进行测试。

在此处输入图片说明

图片来源@Mast


那正是我刚想出的,哈哈。我认为最短的选择是console.log([...' I Voted'].join`%c`,r='color:red',r,b='color:blue',r,b,r,b)
ETHproductions'Nov

在Node.js中也不起作用。:(
约旦

我很惊讶这确实有效,但是确实有效
2016年

23

R,113 85 81 74 73 55字节

编辑:感谢@rturnbull和@JDL保存了一堆字节

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

输出的大小(和间距等)取决于当前打开的图形设备的分辨率。在我的显示器上的RGui和RStudio中进行了测试,并产生:

在此处输入图片说明


4
哦,我从没见过el()。感谢您帮助我学习更多R!由于text是矢量化的,因此您可以跳过for循环,而只需编写:text(seq(.3,.6,.05),.5,s,col=c("red","blue"))。(我为高尔夫球手代码修改了x的位置,尽管间距可能不太整齐。)
rturnbull

1
另外,由于部分参数匹配,您可以使用co=而不是col=。最后,6:12*.05比短几个字节seq(.3,.6,.05)
rturnbull

1
接得好!现在,我意识到这6:12/20当然比短了1个字节6:12*.05,很抱歉导致您误入歧途并提出次优的编辑建议。
rturnbull

1
颜色不是吗?“ I”和“ V”不应该是不同的颜色吗?
JDL

2
我很确定el()可以将所有先前strsplit答案的99%提高1个字节。
Vlo

21

LÖVE152个142 136字节

让我们来展示一下有趣的小原型语言吧!对于打高尔夫球(这是基于LUA的任务)来说,它并不完美,但是很容易编写。

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

屏幕截图:

屏幕截图


完全取消高尔夫版本:

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
我认为您使用的不是Java。
AdmBorkBork

5
这么多255…对他们来说是变量吗?
manatwork 2013年

1
@ ConorO'Brien这是完整程序。love.draw()是您覆盖的内置函数,该函数在绘制步骤上运行。还有之类的东西love.update(),并love.load()为渲染循环的各个部分,但它们都是可选的。这是一种不错的语言,您可以很轻松地开始使用它。我有时会用它来原型化游戏创意。
Geobits,2016年

2
@cat他们只是没有。这不是像我在控制台上叠印它们,而是图形打印。因此,这里的空间只是“在此区域不涂任何东西”,而不是“将该区域涂成彩色背景”。
Geobits's

2
@ZoltánSchmidt谢谢!还有其他一些LÖVE答案,如果您想看看它们:D
Geobits,2016年

18

热汤处理器,48字节

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

非高尔夫版本为:

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

如果您牢记mes(消息)是HSP的echo,我认为这是相当可读的。

奇怪的是,如果您尝试执行pospos,,则蓝线不会覆盖红线并显示在其下方。即使是怪异的东西,color也仅意味着要接受值0-255,但0,0,-1适用于蓝色,0,-1,0适用于绿色和-1,0,0适用于...黑色?(-257,0,0511,0,0红色的工作了,所以什么的时髦有关MOD 256回事)

在此处输入图片说明


为什么第二个空格不mes覆盖第一个?

@cat Spaces实际上并没有画任何东西,只是在某种意义上提高了光标的位置
Sp3000 '16

1
聪明地使用-1表示255。有+1
Cyoce

@Cyoce还是实际上是-255?
sagiksp

18

MATLAB,74字节

我们使用imshow的数组创建50x50的白色背景(每个状态一列)ones。然后,使用我缩短属性名称的技巧来显示颜色,以显示文本。由于默认字体不是固定宽度,因此文本将用空格填充。

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

在此处输入图片说明

MATLAB,99个字节,固定宽度的字体

第一个版本使用摆弄空格和坐标来获得默认字体的适当字距调整,并且可能无法在您的计算机上正确显示。相反,我们可以使用固定宽度的字体,例如Courier(或者,对于更多字节,FixedWidth它可以在安装了固定宽度字体的任何系统上使用)。这确实以相当多的额外字节为代价。我们可以通过使用for循环来打印文本来稍微缓解这种情况。文本和相应的颜色存储在单元格数组中。背景需要更大一些。

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

在此处输入图片说明

Matlab,80字节奖励版

可悲的是,带下划线的蓝色文本是不允许的。否则,此答案将突出显示MATLAB中的一些有趣行为。您可以使用来打印红色文本fprintf(2,txt),并可以使用来打印带下划线的蓝色文本fprintf('<a href="">txt</a>')。结合使用这项功能...有时。完全随机地,它也可能创建带下划线的红色文本。如果您的系统属于这种情况,则可以drawnow在连续f调用之间发出指令。

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

在此处输入图片说明


您可以写<a href>而不是<a href="">。如果您不喜欢它,可以使用<a href=#>
伊斯梅尔·米格尔

@IsmaelMiguel聪明。<a>没用。
桑契斯,2016年

仅使用<a>不被视为可点击的链接。要获得蓝色,必须将其视为一种。在CSS中,选择器可能是a[href]。只要该属性href存在,它就是可单击的链接。这就是为什么只使用<a>不起作用的原因。
伊斯梅尔·米格尔

18

ImageMagick,102个字节

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

取消高尔夫:

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

在此处输入图片说明

打高尔夫球的完整ImageMagick命令包括

  • 没有明确调用默认convert实用程序

  • 使用xc:而不是canvas:xc:是(的旧同义词canvas:;我不认为ImageMagick会消除它)

  • 未指定画布颜色,而是依赖于ImageMagick的默认值(恰好是白色)

  • 60从几何图形中删除宽度(如果省略,则width == height)

  • 删除“!” 从只需要生成非正方形画布的几何图形中得出,例如canvas:white[60x30!]

  • 使用较旧的x:而不是show:作为输出文件(假设ImageMagick是在X支持的情况下构建的)

  • 删除一些我用来对齐文本字符串的空格

  • 连接命令的多行(删除了行之间的反斜杠-CR)

如果您在选举后倾向于这样做,请-rotate 180show:指令前添加12个字节:

在此处输入图片说明


4
我喜欢未打高尔夫球的版本与打高尔夫球的版本有很大不同。
安德烈KOSTYRKA

15

Bash,35个字节

我的脚本看起来像这样

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

脚本文件的xxd:

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

键入:ctrl-v-esc和ctrl-vh将插入转义符和退格键(^ [和^ H)。

在此处输入图片说明


这是如何运作的?一种解释是超级的
2016年

2
@cat似乎写了所有红色字母(以“ h”和“ p”作为替身),然后将颜色设置为蓝色,并在末尾写入“ d”。最后,它将光标向左移动,以在较早的替代实例上添加“ t”和“ V”(ascii 0x08,在上面的显示中由“ ^ H”表示,向左移动1个字符)。避免大量换色序列的巧妙方法。它还使用文字转义字符(0x1B,表示为“ ^ [”),与类似的答案(如我的)相比,可以节省一些空间。
戴夫

另外:假设终端默认情况下设置为白色背景,则可以节省3个字节(大多数其他终端的回答已经假设了这一点)。
戴夫

您可以通过删除两个引号并在分号之前添加反斜杠(转义字符)来节省字节。另外,您的脚本还具有小写的 v(您的命令行第一很好)。


14

Java,322 319 318 309 304 229 217字节

-9个字节,感谢kevin。
-75字节,感谢Angzuril,旧awt类的漂亮标注,总是忘记了它们的存在。
-12字节归功于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);}};}

输出:

在此处输入图片说明


1
JFrame j=可以打高尔夫球Frame j=; (c==' '||i++%2==0)?可以打高尔夫球c<33|i++%2<1?true可以打高尔夫球1>0。另外,@ HelkaHomba,这是有效的输出吗?由于它之间也有空格V o t e d?哦,为什么0,0,999,990,0,99,99足够我的屏幕上的文字。
凯文·克鲁伊森

1
(c<33||i++%2<1)?删除括号后可以变成三个字节,||变为|
凯文·克鲁伊森

1
我发现了一些更多的东西高尔夫:new JComponentnew Container(-1); 删除char c="IVoted".charAt(i);并更改g.drawString(c+""g.drawString("IVoted".charAt(i)+""(-8)。
凯文·克鲁伊森

1
首先需要改进,然后更改Frame j=new JFrame();j.add(new JComponent()Frame j=new Frame();j.add(new Container(),您也可以删除导入import javax.swing.*;g.setColor(Color.WHITE);g.fillRect(0,0,99,99)因此(-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);}};}允许您减少12个字节
user902383 '16

13

Bubblegum,28个字节

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

在此处输入图片说明

由于它使用ANSI颜色代码进行着色,因此无法在线运行。


这是简单的编码,还是采用其他巧妙的技巧?
科纳·奥布莱恩

2
@ ConorO'Brien在Bubblegum中没有聪明的把戏。老实说,这个答案主要是我正在研究的实际答案的副作用。
意大利面条

13

PowerShell v2 +,71 59 57 55字节

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

挽救了两个字节感谢@flashbang ...挽救了两个更感谢@ConnorLSW

需要 "I Voted"并把它变成一个char-阵列,然后循环|%{...}。每个字母,我们执行Write-Host-background颜色White-noNewLine和-foreground颜色是适当的索引。这利用了奇数ASCII值为Red,而偶数ASCII值为Blue $_%2作为索引这一事实。

PowerShell中的控制台颜色非常有限,因此这是我能获得的最接近的近似值。将4DarkRed)用作红色可能会更加高尔夫球,但是它看起来不正确,因此出于色彩准确性的考虑,我牺牲了几个字节。

下面是输出,然后是控制台可以显示的16种可用颜色。请注意,背景并非真实白色,因为Microsoft明智地选择使背景颜色与前景色略有偏离。

控制台输出


IIRC,在古老的资料中,您将4位用作前景,将3位用作背景,因此背景只能是0到7的“深色”颜色。控制台是否仍在跟随?
2016年

@Hurkyl Kinda。它似乎基于EGA调色板,但我不确定PowerShell保留该方案的历史原因。可能是Win32 API向后兼容中隐藏了一些东西,迫使他们仅使用这16种颜色。
AdmBorkBork

如果您将背景色设置为15,那是行不通的?
Random832 '16

@ Random832这是为了贴纸的白色背景。
geisterfurz007,2013年

@ geisterfurz007,TimmyD,我在问您是否可以将背景设置为“ 15”而不是“白色”(因为图像中的实际背景似乎是#7)以获得更亮的白色。但是,从更多的角度看,您的整个显示看起来很奇怪-如果在控制台中运行PowerShell,则示例中各行之间的边界以及“ I”与以下空间之间的灰线没有意义-您是否在使用其他一些工具,例如ConEmu?如果这样的话,就怪微软没有道理。
Random832 '16

11

Python,91个字节+ termcolor

不会赢,但把它发布出来很有趣。

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

一半的功劳归给Sp3000。


2
使用ANSI代码的时间应该更短
TuxCrafting,2016年

@TùxCräftîñg并非所有平台都支持,例如Windows。
卡德,2016年

3
介意添加图片吗?
加尔文的爱好

9
更改'blue' if c else 'red'为可以节省5个字节'brleude'[c^1::2]
卡德,

2
您可能应该在标题中加上+ termcolor,因为它不是标准模块。此外:from termcolor import*\nfor c in'I Voted':cprint(c,'brleude'[ord(c)%2::2],'on_white',end='')
Sp3000

8

Jolf,53个字节

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

有无法打印的内容。在这里尝试!

Jolf的输出支持HTML。我尝试做一些聪明的事情,例如模数2来决定颜色,但这只会占用更长的时间(大约69个字节)。因此,输出为HTML。

输出:

常规的“我投票”

(较大版本)

大“我投票”


8
这太糟糕了,您仅在HTML上保存了三个字节:P
仅ASCII的

@EriktheGolfer实际上仅在firefox中有效。
科纳·奥布莱恩

@ ConorO'Brien哦,我使用Chrome。谢谢。
暴民埃里克

1
...并且HTML答案超出了这个范围。
betseg

不能blue写成00f
伊斯梅尔·米格尔


8

sh,61 49字节

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

因为其中包含不可打印的内容,所以这里是可逆的xxd十六进制转储:

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英寸
我投票了
Xterm(322)

感谢-12个字节的4198(管理)。


为什么要分别设置背景和前景色?从开始[47;31;1m。并且1for粗体会一直持续到a 0,因此无需为每个字母一次又一次地设置它。
manatwork 2013年

@manatwork哦,上帝,我以为您必须重新设置它!
暴民埃里克

如果sh什么事情比老Bourne shell的更现代,一些参数扩展可以帮助:s=":1;47;1mI :4mV:1mo:4mt:1me:4md";echo ${s//:/^[[3}
manatwork

@manatwork它不起作用。看来它并不更现代。
暴民埃里克

@manatwork ${VAR/FROM/TO}需要ksh93,bash或zsh,而不仅仅是“比旧的Bourne shell更现代的东西”。POSIX要求#%参数扩展改性剂但不/…/:…:
吉尔

8

SVG + bzip2,1807字节

示例图像的矢量化版本,然后使用bzip2压缩到大约一半(4385-> 1807字节)。您可以在这里下载。(直接GitHub Pages链接)

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��

不会赢,但把它发布出来很有趣。


1
bzip2不是一种编程语言。
彼得·泰勒

3
@PeterTaylor根据元规则,它不一定是编程语言。(meta.codegolf.stackexchange.com/a/10426/41088
noɥʇʎԀʎzɐɹƆ

1
应该发布xxd文件的可逆文件
2016年

尝试使用brotli进行更大的压缩
Sarge Borsch

4
如果您真的对打高尔夫球感兴趣,那么可能需要手动设置一些带有正确颜色的文本元素来创建SVG。这是一个起点:<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>请注意,这实际上将其渲染到可打印区域之外,并且没有背景色。就像我说的,这只是一个开始。
2013年

8

C,65个字节

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

或者,更准确地说:

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

使用与betseg相同的bash颜色技术,但使用八进制转义序列而不是十六进制,并且Sp3000观察到所有奇数代码点均为红色。

将终端保留为蓝色。重置为:

printf "\33[0m";

如果||像在JavaScript(x||y -> x?x:y)中那样在C中工作,则可以c&1||4保存一个字节。
ETHproductions 2016年

1
@ETHproductions不会按照这种方式C.虽然||&& 短路,他们总是返回1或0,不论所涉及的价值。
戴夫

@戴夫,我今天学到了一些东西……

这不会设置背景颜色。另外,\33如果不符合规则,则可以使用文字转义字符而不是保存两个字节。

@yellowantphil这个假设默认终端背景设置为白色(因为挑战说,它只是需要可能有它在白色背景)。实际上,在OS X中,终端是开箱即用的黑白。
戴夫

8

节点,57 55 41字节

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

在运行之前,将每个q字节替换为文字字节1BH字节08

这是在Windows计算机上的ConEmu终端仿真器中的外观(放大):

在此处输入图片说明


那是什么终端模拟器!


8

Python IDLE,97 96 78 69字节

感谢DrMcMoylex节省了一些字节!

编辑:找出直接.write()是短9个字节

这不是一个正确的答案,更多地滥用了标准主题。IDLE是Python的IDE,除非经过定制,否则STDOUT为蓝色,STDERR红色,背景为白色。因此,以下代码:

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

打印此:

在此处输入图片说明

之所以有效,是因为ord(i)%2检查字母代码点的奇偶校验并将其打印到ERR/ OUT


8

REBOL100 90 95字节(-7字节,REPL为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"]

在REPL中,初始REBOL []不需要。那是7个字节。

非高尔夫版本为:

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

左侧为每个文本块添加了“空格0x0”,右侧为默认2x2填充。

我投票赞成
(来源:canardpc.com


7

Perl,57 + 17 = 74字节

与运行 -MTerm::ANSIColor

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

您的终端最后可能是蓝色的(附加 ,c("reset")在代码以将其恢复为正常)。

默认情况下,终端通常是黑色背景,但是可以选择将其更改为白色,我个人认为这不是欺骗。

带图片: 在此处输入图片说明


7

PHP,199个 201 151字节

该脚本将图像输出到标准输出。更新感谢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);

像这样在命令行中运行它:

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

输出:

在此处输入图片说明


2
跳过header()通话。您的代码也可以从命令行正常运行。由于error_reporting的默认值未显示通知,因此不引用字符串文字通常是可以接受的。或者,如果您不喜欢,str_split("I Voted")则比单独枚举字符还短。并将分配移至$ i的第一个用法。
manatwork 2013年

1
~2**24似乎代替了工作0xFFFFFF。不确定这是否对所有体系结构都有效。如果没有,2**24-1应该是便携式的。
manatwork 2013年

@manatwork太棒了,谢谢。下降到152。我尝试过~2**242**24-1但是遇到错误。我什至不知道它们是如何工作的。
科多斯·约翰逊

您的PHP可能早于5.6.0:“添加了幂运算符(**)。” – PHP changelog。与相同pow(),但打高尔夫球更方便。pastebin.com/jFn6ahFk
manatwork'Nov

哦,我明白了。好吧,因为似乎不支持php 5.5,所以我将使用您的解决方案。现在是150。再次感谢。
科多斯·约翰逊

7

Xamarin.Forms C#,317个 313字节

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对于iOS是必需的,否则文本将被状态栏覆盖。在Android上没有问题,因此可以节省34个字节(包括逗号)。

编辑:2016-11-14:-4字节

不打高尔夫球

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
好吧,这是一种新的想法。+1
Addison Crump

7

x86机器代码+ DOS + BIOS,25字节

十六进制转储:

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

汇编代码(适合作为的输入debug.com,因此所有数字均为十六进制):

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

它使用BIOS例程将字符串输出到显示内存。该字符串将出现在屏幕上的“随机”位置(如下所示):

屏幕截图

该字符串包含字母I V o t e d,与“属性”交错

74 74 71 74 71 74 71

指定字母的颜色。此处7作为最高有效位表示“白色背景”,而最低有效位指定前景(1 =蓝色; 4 =红色)。

字符串的显示位置由dx寄存器指定。如所提到的在这里,此寄存器的初始值等于的值cs寄存器。并且该值是DOS加载后内存中的第一个可用地址。

DOS的大小通常小于64K,也就是说,加载的用户程序的段地址小于十六进制1000。因此,输出将出现在显示屏上前16行文本的某处。在我的示例中,它出现在第8行(dx称为的上半部分dh等于8)。

的下半部分(dx称为dl)包含输出文本的列。实验表明,BIOS不会检查溢出,因此dx,例如在第100列请求输出都没有关系。


聪明,简短且非常直观。
tuskiomi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.