ІДІТЬ І ГОЛОСУВАТ


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
Трохи розчарований, що моя фактична наклейка не схожа на вашу.
Геобіт

39
"Важливо лише те, що ви проголосували". - @HelkaHomba ... Це як би сказати "не має значення, який код ви пишете, поки ви написали якийсь код". : /
Майкл Ягер

41
@MichaelYaeger Ну, писати якийсь код краще, ніж писати жоден. Голосувати краще, ніж не голосувати. Цілком ймовірно, що люди вкладуть певну думку у кодування та голосування, якщо вони захочуть це зробити. Але насправді я це сказав, щоб уникнути гнівних дебатів.
Захоплення Кальвіна

43
Якщо це комусь допомагає, голосні - червоні, приголосні - сині.
mbomb007

34
@ mbomb007 Або, корисніше, букви з непарними кодовими точками червоні, а літери з парними кодовими точками - синіми.
Sp3000

Відповіді:


116

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

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

або від клієнта:

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

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

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

Пам'ятайте про правила:

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

Все це вірно, як:
червоний і синій АРЕПІЗАЦІЇ (хоча все ще дуже схожі).
Фон у чаті Minecraft прозорий, це означає, що це можливо розмістити на білому тлі. (наприклад, порожній світ)


10
Ого. Я втратив дар мови. Це дуже розумна відповідь!
DJMcMayhem

28
Я не думаю, що чат Minecraft не є повним Тьюрінгом або вважається мовою програмування (хоча це, можливо, більше не є вимогою). Дуже креативно! :)
Каде

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

Де represent представляють 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
Два байти можна відтерти, замінивши на " "\x1B[47;31m"b" та визначивши його з "b" "\x1B[34m", потім використовуючи putsчергування aта bпрефікси.
Вілліхам Тотланд

3
Ви можете зберегти ще 2 байти з "\ 33" замість "\ x1B".
криптих

1
Розширюючи те, що сказав криптих, я не знаю, чи це дозволено, але ви збережете ще чотири байти, використовуючи буквальний символ втечі замість \33 . Не впевнений, що про це думає стандарт C ...

3
@paxdiablo відповідно до цієї метапотоку , функцій у порядку для коду гольф.
betseg

73

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

Код

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

Вихідні дані

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

Спробуйте тут

Не рахуючи hide turtleблок, тому що це просто естетика.

Блайт - це комбінація блоку та байта, поки немає мета-повідомлення про те, як це рахувати, але я створять його пізніше. Наразі я рахую так:

  • I o e, 8 біліт
  • V t d, 10 біт (2 провідні місця тут)
  • Кольори, по 1 білету кожен, 2 усього
  • 90, 2 білети
  • 999, 3 білети
  • 0, 1 біліт
  • повернути праворуч, 2 білети
  • рухатися вперед, 2 білети
  • звичайні блоки, по 1 біліті кожен, 5 всього

Оскільки Google Blockly рідко використовується для гри в гольф, і я думаю, що це завдання не вдається, я сподіваюсь, що це дійсне підтвердження.


20
Для запису це справедливо. Приємно бачити унікальні мови. Хоча, якщо в Google Blockly немає метаконсенсу щодо підрахунку байтів, я можу проігнорувати це при виборі переможця.
Захоплення Кальвіна

2
Ви можете знайти тут дискусію, що стосується речей. CC @HelkaHomba.
Scimonster

Чи хочете Ви замінити ці три простори на I oдва проміжки?
Андреа Лацаротто

Google Blockly буде переведено на JavaScript, а потім запуститься. Inspect ElementДля отримання реального коду JavaScript вам потрібно запустити код у Blockly API.

1
Зачекайте, чи можна використовувати Scratch?
Adamawesome4

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
На жаль, поточна версія, здається, не працює як фрагмент стека, остання версія, яка працює для мене, - це 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 внизу):

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


13
Я б міг подумати, що LaTeX набере Voгарнітуру кернінгу ... Але, мабуть, кожну букву вона розглядає окремо завдяки кольорам.
Санчіз

@sanchises Оскільки кожна буква є окремою командою, я думаю, що вона руйнує належне керування.
Фаталізувати

Так саме. Хоча я впевнений, що це можливо було б якось, якби гольф не був вимогою.
Санчіз

@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 байт чистої друкарської краси.
Андрей Костирка

34

Пакет Windows 10, 51 50 байт

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

Де ␛ являє собою символ ANSI Escape 0x1B. Виводи з використанням кольорового форматування. Редагувати: Збережено 1 байт завдяки @ brianush1. Я спробував написати код, щоб створити це, але це зайняло 97 байт. Вихід:

Я проголосував


1
Ви можете @color fc&echo I
покатати

1
що цікаво, я не розумів, що термінал Windows підтримує послідовність
Mark K Cowan

3
@MarkKCowan Це лише Windows 10 та (я думаю!) Розміщуємо Redstone Update. Це одна з небагатьох речей, яка не дозволяє мені просто встановити XP над ним.
wizzwizz4

@ Wizzwizz4 ConEmu підтримує це теж :) На насправді це з Windows , 10 - річчя (тобто Редстоун 1)
Асу

@Яко я встановив 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

Не працює і в Node.js. :(
Йорданія

Я був здивований, що насправді це працює, але це робить .
Маст

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як векторні, ви можете пропустити за петлю і просто написати: 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

LÖVE , 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

12
Я вважаю, що ти використовував щось інше, ніж Java.
AdmBorkBork

5
Стільки 255… Змінна для них?
манатство

1
@ ConorO'Brien Це повна програма. love.draw()це вбудована функція, яку ви переосмислюєте, яка працює на кроці малювання. Також є такі речі, як love.update()і love.load()для різних частин циклу візуалізації, але вони необов’язкові. Це гарна мова, і почати з неї можна дуже легко . Я іноді використовую його для прототипу ігрових ідей.
Геобіц

2
@cat Вони просто не роблять. Це не так, як я їх надрукую на консолі, це графічний принт. Тож простір тут просто "нічого не малювати в цій області", а не "фарбувати цей фон кольоровим кольором".
Геобіт

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 відбувається)

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


Чому пробіли у другій не mesпереписують перше?
кіт

@cat Spaces насправді нічого не малює, він лише
зміщує

1
Розумний, використовуючи -1 для 255. Проведіть +1
Cyoce

@Cyoce Або, можливо, це насправді -255?
sagiksp

18

MATLAB, 74 байти

Ми створюємо білий фон 50х50 (по одному стовпцю для кожного стану), використовуючи 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')

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


Можна писати <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:

Безголовки:

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; 31mI 
0000010: 686f 7065 1b5b 3334 6d64 0808 0874 0808 надія. [34md ... t ..
0000020: 0876 22 .v "

Ввівши його: ctrl-v-esc і ctrl-vh вставлятимуть вхідні та зворотні простори (^ [і ^ H).

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


Як це працює? Пояснення було б супер
кіт

2
@cat, здається, пише всі червоні літери (з "h" і "p" як очікування), а потім встановлює колір на синій і в кінці пише "d". Нарешті, він переміщує курсор ліворуч, щоб додати "t" та "V" над попередніми стендами (ascii 0x08, представлене "^ H" на дисплеї вгорі, переміщує лівий 1 символ). Розумний спосіб уникнути безлічі послідовностей для зміни кольорів. Він також використовує буквальний символ втечі (0x1B, представлений як "^ ["), що економить простір порівняно з аналогічними відповідями, як у мене.
Дейв

Також: можна зберегти 3 байти, якщо припустити, що термінал за замовчуванням встановлений на білий фон (більшість інших відповідей терміналу вже припускають це).
Дейв

Ви можете зберегти байт, видаливши дві лапки і додавши зворотній косу рису (кращий символ) перед крапкою з комою. Також ваш сценарій має малі регістри v (ваш командний рядок один добре).


14

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

-9 байт завдяки кевіну.
-75 байт завдяки Ангзурілу, приємному опису на старих класах 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)?може бути стіл golfed три байта, видаливши круглі дужки і зміни ||до|
Кевін Cruijssen

1
Я знайшов ще кілька речей для гольфу: new JComponentдо new Container(-1); видалити char c="IVoted".charAt(i);та змінити g.drawString(c+""на g.drawString("IVoted".charAt(i)+""(-8).
Kevin Cruijssen

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

13

Bubblegum, 28 байт

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

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

Не працює в Інтернеті, оскільки використовує кольори ANSI для розфарбовування.


Це пряме кодування, чи це використовується якийсь інший розумний трюк?
Conor O'Brien

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 і -fколір Колір тексту бути відповідний індекс . Це використовує той факт, що непарні значення ASCII є червоними, а навіть значення ASCII - блакитними $_%2як індекс.

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

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

Вихід консолі


IIRC, у старовинних матеріалах у вас було 4 біти для переднього плану та 3 біти для фону, тому фони могли бути лише «темними» кольорами 0-7. Чи консоль все ще слідкує за цим?

@Hurkyl Kinda. Схоже, він базується на кольоровій палітрі EGA , але я не впевнений, що історичні причини PowerShell дотримуються цієї схеми. Можливо, щось заховане в програмі Win32 API-сумісності, що змусило їх використовувати лише ці 16 кольорів.
AdmBorkBork

Не працює, якщо встановити колір тла 15?
Випадково832

@ Random832 це заради білого тла наклейки.
geisterfurz007

@ geisterfurz007, TimmyD, я запитав, чи можна встановити фон на "15", а не на "білий" [оскільки фактичний фон на вашому зображенні є №7], щоб отримати яскравіший білий колір. Але якщо дивитися на це більше, весь ваш дисплей виглядає дивним - межі між рядками у вашому прикладі та сірою лінією між "Я" та наступним пробілом не мають сенсу, якщо PowerShell працює в консолі - чи використовуєте ви якийсь інший інструмент, як ConEmu? Якщо так, то в цьому немає сенсу звинувачувати Microsoft.
Випадково832

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

@ 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.
Conor O'Brien

@ ConorO'Brien О, я використовую Chrome. Дякую.
Erik the Outgolfer

1
... і відповідь HTML перемогла це.
betseg

Не blueможна записати як 00f?
Ісмаїл Мігель


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

Завдяки 4198 (маніпуляція) на -12 байт.


Навіщо встановлювати кольори фону та переднього плану окремо? Почніть з цього [47;31;1m. І 1жирний шрифт зберігається до а 0, тому не потрібно встановлювати його знову і знову для кожної літери.
манатство

@manatwork О боже, я думав, вам доведеться його встановити наново!
Ерік Аутгольфер

Якщо це shщо - небудь більш сучасне , ніж старі Bourne оболонки, деяке розширення параметр може допомогти: s=":1;47;1mI :4mV:1mo:4mt:1me:4md";echo ${s//:/^[[3}.
манатура

@manatwork Це не працює. Здається, це не сучасніше.
Erik the Outgolfer

@manatwork ${VAR/FROM/TO}вимагає ksh93, bash або zsh, а не просто "щось сучасніше, ніж стара оболонка Борна". POSIX вимагає модифікаторів #і %параметрів розширення параметрів, але ні, /…/або:…:
Gilles

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файл
кіт

спробуйте використовувати brotli для ще більшої компресії
Sarge

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

Використовується та сама техніка кольорів башти, яка використовується betseg, але з восьмеричною послідовністю втечі замість шістнадцяткової форми та із спостереженням Sp3000, що всі непарні кодові точки червоні.

Залишає термінал синім кольором. Скинути за допомогою:

printf "\33[0m";

Якщо ||працює на C так, як це робиться в JavaScript ( x||y -> x?x:y), ви можете зробити, c&1||4щоб зберегти байт.
ETHproductions

1
@ETHproductions не працює таким чином у C. Хоча ||і && мають коротке замикання, вони завжди повертають 1 або 0, незалежно від значень.
Дейв

@Dave Я сьогодні щось дізнався ...
кіт

Це не встановлює колір тла. Крім того, ви можете використовувати буквальний символ втечі замість того, \33щоб зберегти два байти, якщо це якось не суперечить правилам.

@yellowantphil передбачає, що фон терміналу за замовчуванням встановлений на білий (оскільки виклик говорить, що просто потрібно мати можливість мати його на білому тлі). Насправді в OS X термінал є чорно-білим поза коробкою.
Дейв

8

Вузол, 57 55 41 байт

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

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

Ось як це виглядає в емуляторі терміналу ConEmu на моєму комп'ютері Windows (збільшений масштаб):

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


Який це термінальний емулятор !?
кіт


8

Python IDLE, 97 96 78 69 байт

Дякуємо DrMcMoylex за бриття деяких байтів!

EDIT: З'ясували, що прямий на .write()9 байт коротший

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

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

Друкує це:

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

Це працює, тому що ord(i)%2перевіряє паритетність кодової точки листа і друкує його в ERR/ OUTвідповідно.


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

Зліва з кожним текстовим блоком додано "пробіл 0х0", праворуч - прокладка 2х2 за замовчуванням.

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 байт

Цей сценарій виводить зображення на стандартний вихід. Оновлено завдяки манатурності

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 до його першого використання.
манастирські роботи

1
~2**24здається, працює замість 0xFFFFFF. Не впевнений, чи справедливо це для всіх архітектур. Якщо ні, 2**24-1повинні бути портативними.
манатура

@manatwork дивовижний спасибі Це змусило його до 152. Я спробував ~2**24і , 2**24-1але я отримав помилку. Я навіть не знаю, як вони працюють.
Кодос Джонсон

Можливо, ваш PHP старший 5.6.0: "Додано оператора експоненції (**)". - Реєстр змін PHP . Те саме 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 байти

Безумовно

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 байт

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 зазвичай менше 64K, тобто адреса сегмента завантаженої програми користувача менше шістнадцяткової 1000. Тож вихід буде відображатися десь біля перших 16 рядків тексту на дисплеї. У моєму прикладі він з’явився у рядку 8 (верхня половина dx, що називається dh, дорівнює 8).

Низька половина dx, що називається dl, містить стовпчик, в який виводиться текст. Експерименти показують, що BIOS не перевіряє переповнення, тому не має значення, чи dxзапитує вихід, наприклад, у стовпці 100.


розумний, короткий і справді інтуїтивний.
тускіоми
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.