Выйти и проголосовать

114

Сегодня 8 ноября 2016 года, день выборов в Соединенных Штатах Америки.

Если вы являетесь гражданином США, имеющим право голосовать, тогда выходите и голосуйте, если вы еще этого не сделали, прежде чем ответить на этот вызов. Не обсуждайте, за кого вы проголосовали. Имеет значение только то, что вы проголосовали.

Если вы не являетесь гражданином США или не имеете права голосовать, то прежде чем ответить на этот вызов, сделайте одолжение США, сказав всем, кого вы знаете, кто имеет право участвовать в выборах и проголосовать, если они этого еще не сделали.

Вызов

Напишите программу, в которой указано, что вы проголосовали, например цифровую наклейку «Я проголосовал» .

Он не должен принимать никаких входных и должна вывести в разумных фразу , I Votedгде I, oи eкрасные ( #FF0000) и V, tи dсиний ( #0000FF). Фон должен быть белым ( #FFFFFF).

Например:

«Я проголосовал» пример графика

Эти цвета, конечно, представляют американский флаг (хотя не официальные цвета ). Красный на первом месте просто потому, что на первом месте в общей идиоме «красный белый и синий».

Чтобы быть действительным, ответ должен:

  • Используйте цвета, указанные в указанном порядке.

  • Используйте один разборчивый шрифт и размер шрифта. В примере используется 72pt Times New Roman, выделенный жирным шрифтом, но любой обычный шрифт выше 6pt, вероятно, подойдет.

  • Пишите только фразу I Votedв одной строке , правильно написав ее заглавными буквами, и между двумя словами должно быть свободное пространство. Это не должно выглядеть так IVoted.

  • Не указывайте, за кого отвечал голосующий или поддерживает президент или какие-либо избирательные гонки. Давайте не будем начинать какие-либо интернет-дебаты. Речь идет о праздновании голосования, а не кандидатов.

Любой разумный способ отображения или создания выходных данных является допустимым, например:

  • Рисование текста на изображении, которое затем отображается, сохраняется или выводится необработанным.

  • Запись текста в консоль с использованием цветового форматирования . В этом случае вы можете приблизить чистый красный и синий, если необходимо, и это нормально, если только область непосредственно за текстом может быть сделана белой.

  • Отображение текста в форме WPF / Windows.

  • Вывод файла HTML / RTF / PDF с текстом.

Пожалуйста, разместите изображение вашего вывода.

Самый короткий ответ в байтах побеждает.

Кальвин Хобби
источник
29
Немного разочарован, моя настоящая наклейка не похожа на вашу.
Geobits
39
«Имеет значение только то, что вы проголосовали». - @HelkaHomba ... Это все равно, что сказать: «Неважно, какой код ты пишешь, если ты написал какой-то код». : /
Майкл Ягер
41
@MichaelYaeger Ну, написание кода лучше, чем написание. Голосование лучше, чем не голосование. Скорее всего, люди будут задумываться о кодировании и голосовании, если захотят это сделать. Но на самом деле я сказал это, чтобы избежать гневных дебатов.
Увлечения Кэлвина
43
Если это кому-нибудь поможет, гласные - красные, согласные - синие.
mbomb007
34
@ mbomb007 Или, что еще полезнее, буквы с нечетными кодовыми точками - красные, а буквы с четными кодовыми точками - синими.
Sp3000

Ответы:

116

Minecraft Chat (клиент vanilla 1.10, сервер spigot 1.10): 19 байт

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

или со стороны клиента:

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

Minecraft использует систему цветового кодирования с этими цветами, запрограммированными в.

введите описание изображения здесь

Следуйте правилам:

  • Запись текста в консоль с использованием цветового форматирования. В этом случае вы можете приблизить чистый красный и синий, если необходимо, и это нормально, если только область непосредственно за текстом может быть сделана белой.

Все это верно, как:
красное и синее приближения АР (хотя все еще очень похоже).
Фон в чате Minecraft прозрачный, это означает, что его можно поместить на белый фон. (например, пустой мир)

tuskiomi
источник
10
Ух ты. У меня нет слов. Это очень умный ответ!
DJMcMayhem
28
Я не думаю, что Minecraft Chat полностью завершен по Тьюрингу или считается языком программирования (хотя это больше не является обязательным требованием). Очень креативно, хотя! :)
Kade
9
@Shebang gaming.stackexchange.com/questions/20219/… В чате Minecraft есть (почти) все те же команды, что и в командных блоках, и, конечно, все команды в ответ на вопрос :-)
tuskiomi
15
Технически, в ванильном Minecraft, &s должно быть §s
Оливер Ни
2
Хммм, я думаю, это можно сделать и в Quake 3
Sarge Borsch
107

C 82 80 78 74 54 байта

Спасибо @WillihamTotland и @criptych за сохранение 2 байта каждый!

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

Где символы представляют 0x1B байтов (escape-ключ). Поскольку этот код содержит непечатаемые управляющие символы, вот обратимый hexdump:

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

Вывод на мой телефон:

betseg
источник
3
@KritixiLithos, которую эта строка определяет aкак "\x1B[%dm", которая является escape-последовательностью ANSI для окраски, с заполнителем. Номера в них printf()заполнены.
Betseg
1
Два байта могут быть сокращены, заменяя a на "\x1B[47;31m"и определяя b на "\x1B[34m", затем используя putsс переменным aи bпрефиксами.
Виллихам Тотланд
3
Вы можете сохранить еще 2 байта с помощью «\ 33» вместо «\ x1B».
Криптих
1
Расширяя сказанное criptych, я не знаю, разрешено ли это, но вы бы сэкономили еще четыре байта, используя вместо них буквальный escape-символ \33. Не уверен, что об этом думает стандарт С ...
3
@paxdiablo в соответствии с этой мета- веткой , функции нормальны для гольф-кода.
Betseg
73

Google Blockly , 10 14 блоков, 28 41 35 байт

Код

введите описание изображения здесь

Выход

введите описание изображения здесь

Попробуй здесь

Не считая hide turtleблока, потому что это просто эстетика.

Блайт - это комбинация блока и байта, пока нет метапоста о том, как считать это, но я создам его позже. На данный момент, вот как я считаю:

  • I o e8 байт
  • V t d10 байт (2 ведущих пробела здесь)
  • Цвета, 1 байт каждый, всего 2
  • 90,2 байт
  • 999,3 байт
  • 0, 1 байт
  • повернуть направо, 2 байт
  • двигаться вперед, 2 байт
  • нормальные блоки, 1 байт каждый, всего 5

Поскольку Google Blockly редко используется для игры в гольф, и я думаю, что это нестандартное решение для этой задачи, я надеюсь, что это правильное представление.

Bassdrop Cumberwubwubwub
источник
20
Для записи это действительно. Приятно видеть уникальные языки. Хотя, если в Google Blockly нет мета-консенсуса по подсчету байтов, я могу игнорировать его при выборе победителя.
Увлечения Кэлвина
2
Вы можете найти обсуждение здесь актуальным. CC @HelkaHomba.
Scimonster
Хотели ли вы заменить эти три пробела I oдвумя пробелами?
Андреа Лаззаротто
Google Blockly будет переведен на JavaScript, а затем запустить. Вам нужно Inspect Elementи запустить код в Blockly API, чтобы получить настоящий код JavaScript.
1
Подождите, так можно ли использовать Scratch?
Adamawesome4
47

HTML, 52 байта

I <c>V<e>o<c>t<e>e<c>d<style>*{color:red}c{color:0ff
noɥʇʎԀʎzɐɹƆ
источник
2
Кроме того, я думаю, что #FF0000-> #F00и #0000FF-> #00Fработает
Конор О'Брайен
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
К сожалению, текущая версия, похоже, не работает как фрагмент стека, последняя версия, которая работает для меня, это c{color:blue}версия.
Нил
39

LaTeX, 147 126 байт

\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 байт и улучшен кернинг благодаря @ AndreïKostyrka.

Это печатает страницу a4 с этим в первой строке (обратите внимание, что это также печатает страницу 1 внизу):

введите описание изображения здесь

Fatalize
источник
13
Я бы подумал, что LaTeX наберет Voкернинг красивее ... Но, очевидно, он рассматривает каждую букву отдельно из-за цветов.
Sanchises
@sanchises Поскольку каждая буква находится в отдельной команде, я думаю, что она уничтожает правильный кернинг.
Fatalize
Да, именно. Хотя я уверен, что это было бы возможно, если бы гольф не был обязательным требованием.
Sanchises
@sanchises это определенно возможно , но это действительно дольше, чем это уродливое решение.
Fatalize
\documentclass{proc}\input color\begin{document}\def\z{\color{red}}\def\y{\color{blue}}\z I \y V\z o\y t\z e\y d\end{document}экономит 21 байт и приводит к 126 байтам чистой типографской красоты.
Андрей Костырка,
34

Windows 10 Batch, 51 50 байт

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

Где ␛ представляет символ ANSI Escape 0x1B. Выводы с использованием цветового форматирования. Редактировать: 1 байт сохранен благодаря @ brianush1. Я пытался написать код для генерации этого, но это заняло 97 байтов. Выход:

я голосовал

Нил
источник
1
Вы можете уменьшить его на 1 байт, если используете @color fc&echo I...
brianush1
1
интересно, я не понял, что терминал Windows поддерживает escape-последовательности ANSI
Марк К Коуэн,
3
@MarkKCowan Это только Windows 10, и (я думаю!) Опубликовать Redstone Update. Это одна из немногих вещей, которые мешают мне просто установить XP поверх нее.
wizzwizz4
@ wizzwizz4 ConEmu также поддерживает их :) Действительно, это из-за юбилея Windows 10 (т.е. Redstone 1)
Асу
@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

Bassdrop Cumberwubwubwub
источник
Это именно то, что я только что придумал, хаха. Я думаю, что самая короткая альтернатива будетconsole.log([...' I Voted'].join`%c`,r='color:red',r,b='color:blue',r,b,r,b)
ETHproductions
Также не работает в Node.js. :(
Иордания
Я был удивлен, что это действительно работает, но это работает .
Мачта
23

Р, 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 на моем мониторе и выдает:

введите описание изображения здесь

Billywob
источник
4
О, я никогда не видел el()раньше. Спасибо за помощь в изучении R! Так textкак векторные, вы можете пропустить за петлю и просто написать: 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
Разве цвета не выключены? Разве «Я» и «V» не должны быть разных цветов?
JDL
2
Я уверен, что el()улучшает 99% всех предыдущих strsplitответов на 1 байт.
Вло
21

ЛЁВ , 152 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
Geobits
источник
12
Я люблю, чтобы вы использовали что-то другое, чем Java.
AdmBorkBork
5
Так много 255 ... Переменная для них?
manatwork
1
@ ConorO'Brien Это полная программа. love.draw()это встроенная функция, которую вы переопределяете, которая выполняется на этапе рисования. Есть также такие вещи, как love.update()и love.load()для различных частей цикла рендеринга, но они необязательны. Это хороший язык, и вы можете начать с ним очень легко . Я иногда использую его для создания прототипов игровых идей.
Geobits
2
@cat Они просто нет. Я не пишу их на консоли, это графическая печать. Таким образом, пространство здесь - это просто «ничего не рисовать в этой области», а не «окрашивать фон этой области в цвет».
Geobits
2
@ ZoltánSchmidt Спасибо! Есть несколько других ответов LÖVE , если вы хотите просмотреть их: D
Geobits
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, я думаю, что это довольно читабельно.

Как ни странно, если вы попытаетесь сделать posили pos,, синяя линия не перезаписывает красную линию и появляется под ней. Даже более странно, colorон предназначен только для значений 0-255, но 0,0,-1работает для синего, 0,-1,0работает для зеленого и -1,0,0работает для ... черного? ( -257,0,0и 511,0,0работать на красный, хотя, так что что-то прикольное в моде 256 происходит)

введите описание изображения здесь

Sp3000
источник
Почему пробелы во втором не mesперезаписывают первое?
кот
@cat Пробелы на самом деле ничего не рисуют, они просто
улучшают
1
Умный, используя -1 для 255. Имейте +1
Cyoce
@Cyoce Или, может быть, это на самом деле -255?
sagiksp
18

MATLAB, 74 байта

Мы создаем белый фон 50x50 (один столбец для каждого состояния), используя imshowмассив 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')

введите описание изображения здесь

Sanchises
источник
Вы можете написать <a href>вместо <a href="">. Если вам это не нравится, вы можете использовать <a href=#>.
Исмаэль Мигель
@IsmaelMiguel Clever. <a>не работал
Санчиз
Использование только <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:

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:

введите описание изображения здесь

Игра в гольф полная команда ImageMagick состояла из

  • явно не вызывает convertутилиту по умолчанию

  • использование xc:вместо canvas:( xc:это старый синоним для canvas:; я не предвижу, что ImageMagick когда-либо его устранит)

  • не определяя цвет холста, но полагаясь на значение по умолчанию ImageMagick, которое оказывается белым

  • удаление ширины 60из геометрии (если она опущена, ширина == высота)

  • удаляя "!" из геометрии, которая необходима только для создания неквадратного холста, какcanvas:white[60x30!]

  • использование более старого файла x:вместо show:выходного (предполагается, что ImageMagick был создан с Xподдержкой)

  • удаляя некоторые пробелы, которые я использовал для выравнивания текстовых строк

  • объединение нескольких строк команды (убран обратный слеш-CR между строками)

Если вы так склонны после выборов, добавьте 12 байтов, -rotate 180предшествующих show:директиве:

введите описание изображения здесь

Гленн Рандерс-Персон
источник
4
Мне нравится, как версия без гольфа сильно отличается от версии с гольфом.
Андрей Костырка
15

Баш, 35 байт

Мой сценарий выглядит так

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

xxd файла сценария:

0000000: 6563 686f 2022 1b5b 3437 3b33 316d 4920 echo ". [47; 31 мл 
0000010: 686f 7065 1b5b 3334 6d64 0808 0874 0808 надежда. [34md ... t ..
0000020: 0876 22 .v "

Напечатайте это: ctrl-v-esc и ctrl-vh вставят escape-символы и пробелы (^ [и ^ H).

введите описание изображения здесь

Возвышенное увядание
источник
Как это работает? Объяснение будет супер
кот
2
@cat, по-видимому, пишет все красные буквы (с «h» и «p» в качестве резервных), затем устанавливает синий цвет и пишет «d» в конце. Наконец, он перемещает курсор влево, чтобы добавить «t» и «V» поверх более ранних замен (ascii 0x08, обозначенный как «^ H» на дисплее выше, перемещается влево на 1 символ). Умный способ избежать множества escape-последовательностей для смены цвета. Он также использует буквенный escape-символ (0x1B, представленный как «^ [»), который экономит место по сравнению с аналогичными ответами, такими как мой.
Дейв
Также: может сэкономить 3 байта, предполагая, что терминал по умолчанию установлен на белом фоне (большинство других ответов терминала уже принимают это).
Дейв
Вы можете сохранить байт, удалив две кавычки и добавив обратную косую черту (escape-символ) перед точкой с запятой. Кроме того, ваш скрипт имеет нижний корпус V (командная строка один штраф).
15

Mathematica (вывод изображения REPL), 65 49 байт

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

Графическое выражение REPL.

LegionMammal978
источник
3
"Частное использование?" Что это такое?
Конор О'Брайен
2
@ ConorO'Brien enwp.org/Private_Use_Areas
LegionMammal978,
Это 49 байтов: Overlay@{"I o e"~Style~Red," V t d"~Style~Blue}(должно быть два пробела между I и o и перед V)
Gerli
14

Ява, 322 319 318 309 304 229 217 байт

-9 байт благодаря Кевину.
-75 байт, благодаря Angzuril, хорошему обращению к старым классам awt, всегда забывайте, что они существуют.
-12 байт благодаря пользователю 902383.

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

Выход:

введите описание изображения здесь

Урна волшебного осьминога
источник
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,99? 0,0,99,99достаточно большой для текста на моем экране.
Кевин Круйссен
1
(c<33||i++%2<1)?можно поиграть в гольф на три байта, убрав скобки и изменив ||на|
Кевин Круйссен
1
Я нашел еще кое-что в гольфе: new JComponentдо new 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)
Ангзурил
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 11.11.16
13

Жевательная резинка, 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с -bцветом ackground to White, -noNewLine и -fцветом oreground, чтобы быть соответствующим индексом . Это использует тот факт, что нечетные значения ASCII имеют красный цвет, а четные значения ASCII - синий через $_%2индекс.

Цвета консоли в PowerShell очень ограничены, так что это самое близкое приближение, которое я мог бы получить. Было бы лучше использовать 4( DarkRed) для красного, но это выглядит неправильно, поэтому я жертвую парой байтов ради точности цвета.

Ниже приведен вывод, за которым следуют 16 доступных цветов, которые может отображать консоль. Обратите внимание, что фон на самом деле не белый, так как Microsoft, по своей мудрости, предпочла иметь цвета фона, очень немного отличающиеся от цветов переднего плана.

Консольный выход

AdmBorkBork
источник
IIRC, в древнем мире у вас было 4 бита для переднего плана и 3 бита для фона, поэтому фоном могли быть только «темные» цвета 0-7. Консоль все еще следует за этим?
@ Hurkyl Kinda. Похоже, что он основан на цветовой палитре EGA , но я не уверен в исторических причинах сохранения этой схемы в PowerShell. Вероятно, что-то скрыто в обратной совместимости Win32 API, что заставило их использовать только эти 16 цветов.
AdmBorkBork
Это не сработает, если вы установите цвет фона на 15?
Random832
@ Random832 это ради белого фона наклейки.
geisterfurz007
@ geisterfurz007, TimmyD, я спрашивал, можно ли установить фон «15» вместо «белый» [поскольку фактический фон на вашем изображении выглядит как № 7], чтобы получить более яркий белый цвет. Но если посмотреть на это более подробно, то весь ваш дисплей выглядит странно - границы между линиями в вашем примере и серая линия между «I» и следующим пробелом не имеют смысла, если в консоли запускается PowerShell - используете ли вы какой-то другой инструмент, как ConEmu? Если так, то не имеет смысла винить в этом Microsoft.
Random832
11

Python, 91 байт + termcolor

Не собираюсь побеждать, но разместил это в шутку.

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

Половина кредита идет на Sp3000.

noɥʇʎԀʎzɐɹƆ
источник
2
Использование кодов ANSI должно быть короче
TuxCrafting
@ TùxCräftîñg Не поддерживается на всех платформах, например, Windows.
Каде
3
Не возражаете, добавив изображение?
Увлечения Кэлвина
9
Вы можете сохранить 5 байтов, изменив 'blue' if c else 'red'на '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

Джольф, 53 байта

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

Есть непечатные. Попробуй это здесь!

Вывод Джольфа в формате HTML. Я пытался сделать что-то умное, например, модуль 2, чтобы определить цвет, но это завелось только дольше (около 69 байт). Итак, вывод в HTML.

Выход:

регулярное "я проголосовал"

(увеличенная версия)

большое "я проголосовал"

Конор О'Брайен
источник
8
Это ужасно, что вы сохранили только три байта через HTML: P
только ASCII
@EriktheGolfer Это действительно работает только в Firefox.
Конор О'Брайен
@ ConorO'Brien О, я использую Chrome. Благодарю.
Эрик Outgolfer
1
... и ответ HTML превзошел это.
Betseg
Не может blueбыть написано как 00f?
Исмаэль Мигель
8

Python, 99 87 байт

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

Попробуйте онлайн

mbomb007
источник
Не возражаете, добавив изображение?
Увлечения Кэлвина
@HelkaHomba Все, что вам нужно сделать, нажмите на ссылку.
mbomb007
8

ш, 61 49 байт

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

Поскольку он содержит непечатаемые, вот обратимый xxd hexdump:

00000000: 6563 686f 2022 1b5b 3437 3b33 313b 316d echo ". [47; 31; 1 м
00000010: 4920 1b5b 3334 6d56 1b5b 3331 6d6f 1b5b I. [34 мВ. [31 мес. [
00000020: 3334 6d74 1b5b 3331 6d65 1b5b 3334 6d64 34 млн. [31 мес. [34md
00000030: 22 "
Я голосовал
Xterm (322)

Спасибо 4198 (manatwork) за -12 байтов.

Эрик Outgolfer
источник
Зачем устанавливать цвет фона и переднего плана отдельно? Начни с [47;31;1m. И 1жирный шрифт сохраняется до a 0, поэтому нет необходимости устанавливать его снова и снова для каждой буквы.
manatwork
@ Manatwork О, боже, я думал, что вы должны восстановить его!
Эрик Outgolfer
Если это shчто - нибудь более современное , чем старые Bourne оболочки, некоторое расширение параметр может помочь: s=":1;47;1mI :4mV:1mo:4mt:1me:4md";echo ${s//:/^[[3}.
manatwork
@manatwork не работает. Кажется, это не более современно.
Эрик Outgolfer
Для @manatwork ${VAR/FROM/TO}требуется ksh93, bash или zsh, а не просто «что-то более современное, чем старая оболочка Bourne». POSIX требует модификаторов #и %параметров расширения, но не /…/или:…:
Жиль
8

SVG + bzip2, 1807 байт

Векторизованная версия примера изображения, затем сжатая с помощью bzip2 примерно до половины (4385 -> 1807 байт). Вы можете скачать его здесь . (прямая ссылка на страницы GitHub)

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

Не собираюсь побеждать, но разместил это в шутку.

noɥʇʎԀʎzɐɹƆ
источник
1
bzip2это не язык программирования.
Питер Тейлор
3
@PeterTaylor Согласно мета-правилам, это не обязательно должен быть язык программирования. ( meta.codegolf.stackexchange.com/a/10426/41088
noɥʇʎԀʎzɐɹƆ
1
следует опубликовать обратимый xxdфайл
кот
попробуйте использовать 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>обратите внимание, что это фактически выводит его за пределы области печати и не имеет цвета фона. Как я уже сказал, это только начало.
trlkly
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));}

Использует ту же технику цвета bash, что и betseg, но с восьмеричной escape-последовательностью вместо hex и наблюдением Sp3000, что все нечетные кодовые точки имеют красный цвет.

Оставляет терминал синим цветом. Сброс с:

printf "\33[0m";
Дейв
источник
Если ||работает в C так же, как в JavaScript ( x||y -> x?x:y), вы можете c&1||4сохранить байт.
ETHproductions
1
@ETHproductions не работает таким образом в С. While ||и && является коротким замыканием, они всегда возвращают 1 или 0, независимо от значений , участвующих.
Дейв
@ Дейв, я кое-что узнал сегодня ...
кот
Это не устанавливает цвет фона. Кроме того, вы можете использовать буквальный escape-символ вместо того, \33чтобы сохранять два байта, если это как-то не соответствует правилам.
@yellowantphil это предполагает , что терминал фон по умолчанию устанавливается в белый (так как вызов говорит , что это просто должно быть возможным , чтобы иметь его на белом фоне). Фактически в OS X терминал является черным по белому из коробки.
Дейв
8

Узел, 57 55 41 байт

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

Замените каждый qбуквенный байт 1Bи Hбайт 08перед запуском.

Вот как это выглядит в эмуляторе терминала ConEmu на моем компьютере с Windows (увеличено):

введите описание изображения здесь

ETHproductions
источник
Что это за эмулятор терминала?
кот
1
@cat ConEmu: conemu.github.io
ETHproductions
8

Python IDLE, 97 96 78 69 байт

Спасибо DrMcMoylex за то, что сбрил несколько байтов!

РЕДАКТИРОВАТЬ: понял, что прямой .write()был на 9 байт короче

Не совсем правильный ответ, больше злоупотребления стандартной темой. IDLE - это среда разработки Python, и если он не настроен, STDOUTон синий, STDERRкрасный, а фон белый. Итак, следующий код:

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

Печатает это:

введите описание изображения здесь

Это работает, потому что ord(i)%2 проверяет четность кодовой точки буквы и печатает ее в ERR/ OUTсоответственно.

FlipTack
источник
8

REBOL , 100 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.

REBOL я проголосовал
(источник: 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
1
~2**24кажется, работает вместо 0xFFFFFF. Не уверен, что это действительно для всех архитектур. Если нет, 2**24-1должен быть портативным.
manatwork
@ Manatwork потрясающе спасибо. Это заставило его до 152. Я попытался ~2**24и , 2**24-1но я получил ошибку. Я даже не знаю, как это работает.
Кодос Джонсон
Возможно, ваш PHP старше 5.6.0: «Добавлен оператор возведения в степень (**)». - PHP changelog . То же самое pow(), но удобнее для игры в гольф. pastebin.com/jFn6ahFk
manatwork
А ну понятно. Ну, поскольку 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 байта

Ungolfed

using Xamarin.Forms;
public class A : Application
{
    public A()
    {
        // Make a horizontal StackLayout for labels
        var s = new StackLayout
        {
            BackgroundColor = Color.White,
            Orientation = (StackOrientation)1,   // StackOrientation.Horizontal
            VerticalOptions = LayoutOptions.End
        };
        foreach(var c in "I Voted")
            // Make a new label for each letter, then add to StackLayout
            s.Children.Add(new Label
                {
                    // Cast char to string
                    Text = c + "",
                    // Happens that 'I', 'o', and 'e' are all odd in ASCII, and 'V', 't', and 'd' are all even :)
                    TextColor = c%2<1 ? Color.Blue : Color.Red   
                }
            );
        // Set app MainPage to be a new ContentPage, where the content is the StackLayout above
        MainPage = new ContentPage { Content = s };
    }
}
Ссылка Ng
источник
1
Ну, это новая идея. +1
Эддисон Крамп
7

машинный код x86 + DOS + BIOS, 25 байт

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

Код сборки (подходит для ввода 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 обычно меньше 64 КБ, то есть адрес сегмента загруженной пользовательской программы меньше шестнадцатеричного 1000. Таким образом, вывод появится где-то около первых 16 строк текста на дисплее. В моем примере это появилось в строке 8 (верхняя половина dx, названная dh, равна 8).

Нижняя половина dx, вызываемого dl, содержит столбец, в котором выводится текст. Эксперименты показывают, что BIOS не проверяет переполнение, поэтому не имеет значения, dxзапрашивает ли вывод, например, в столбце 100.

anatolyg
источник
умный, короткий и действительно интуитивно понятный.
Tuskiomi