WYJDŹ I GŁOSUJ


114

Dzisiaj jest 8 listopada 2016 r., Dzień wyborów w Stanach Zjednoczonych Ameryki.

Jeśli jesteś obywatelem USA uprawnionym do głosowania, wyjdź i zagłosuj, jeśli jeszcze tego nie zrobiłeś, zanim odpowiesz na to wyzwanie. Nie dyskutuj na kogo głosowałeś. Liczy się tylko to, że głosowałeś.

Jeśli nie jesteś obywatelem USA lub nie możesz głosować, to zanim odpowiesz na to wyzwanie, wyświadcz nam przysługę, informując każdego, kto jest uprawnionym obywatelem, aby wyszedł i głosował, jeśli jeszcze tego nie zrobił .

Wyzwanie

Napisz program informujący o głosowaniu, na przykład cyfrową naklejkę „Zagłosowałem” .

Powinno ono żadnego wejścia wyjścia i musi w rozsądny sposób frazę I Votedgdzie I, oi esą czerwone ( #FF0000) i V, ti dsą niebieskie ( #0000FF). Tło musi być białe ( #FFFFFF).

Na przykład:

Przykładowa grafika „Zagłosowałem”

Te kolory są oczywiście reprezentatywne dla flagi amerykańskiej (choć nie oficjalne kolory ). Czerwień jest na pierwszym miejscu po prostu dlatego, że jest na pierwszym miejscu we wspólnym języku „czerwony biały i niebieski”.

Aby być poprawnym, odpowiedź musi:

  • Użyj kolorów określonych w określonym układzie.

  • Użyj jednej czytelnej czcionki i rozmiaru czcionki. W przykładzie użyto pogrubienia 72-krotnego Times New Roman, ale każda popularna czcionka powyżej 6pt jest prawdopodobnie w porządku.

  • Umieść tylko wyrażenie I Votedw jednym wierszu , poprawnie zapisane dużymi literami, z odstępem między dwoma słowami. Nie powinno tak wyglądać IVoted.

  • Nie wskazuj, na kogo głosował głosujący, ani kto popiera prezydenta lub jakiekolwiek wyścigi do głosowania w dół. Nie zaczynajmy żadnych debat internetowych. Chodzi o świętowanie głosowania, a nie kandydatów.

Każdy rozsądny sposób wyświetlania lub tworzenia wyników jest prawidłowy, taki jak:

  • Rysowanie tekstu na obrazie, który jest następnie wyświetlany, zapisywany lub generowany na surowo.

  • Pisanie tekstu na konsoli za pomocą formatowania kolorów . W takim przypadku możesz w razie potrzeby uzyskać przybliżoną czystą czerwień i błękit, i jest w porządku, jeśli tylko obszar bezpośrednio za tekstem może być biały.

  • Wyświetlanie tekstu w formularzu WPF / Windows.

  • Wyprowadzanie pliku HTML / RTF / PDF z tekstem.

Proszę zamieścić obraz swojej produkcji.

Najkrótsza odpowiedź w bajtach wygrywa.


29
Trochę rozczarowana moja faktyczna naklejka nie wygląda jak twoja.
Geobits,

39
„Ważne jest tylko to, że głosowałeś”. - @HelkaHomba ... To tak, jakby powiedzieć „nie ma znaczenia, jaki kod piszesz, o ile napisałeś jakiś kod”. : /
Michael Yaeger,

41
@MichaelYaeger Cóż, pisanie kodu jest lepsze niż pisanie żadnego. Głosowanie jest lepsze niż brak głosowania. Są szanse, że ludzie zastanowią się nad kodowaniem i głosowaniem, jeśli zdecydują się to zrobić. Ale tak naprawdę powiedziałem to, aby uniknąć gniewnych debat.
Calvin's Hobbies

43
Jeśli to komuś pomoże, samogłoski są czerwone, spółgłoski są niebieskie.
mbomb007,

34
@ mbomb007 Lub bardziej użytecznie, litery z nieparzystymi punktami kodowymi są czerwone, a litery z parzystymi punktami kodowymi są niebieskie.
Sp3000,

Odpowiedzi:


116

Czat Minecraft (klient waniliowy 1.10, serwer 1.10): 19 bajtów

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

lub ze strony klienta:

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

Minecraft używa systemu kodowania kolorów z tymi kolorami zaprogramowanymi.

wprowadź opis zdjęcia tutaj

Przestrzegaj zasad:

  • Pisanie tekstu na konsoli za pomocą formatowania kolorów. W takim przypadku możesz w razie potrzeby uzyskać przybliżoną czystą czerwień i błękit, i jest w porządku, jeśli tylko obszar bezpośrednio za tekstem może być biały.

Wszystkie są prawdziwe, ponieważ:
przybliżenia czerwone i niebieskie SĄ przybliżeniami (choć nadal bardzo podobne).
Tło w czacie Minecraft jest przezroczyste, co oznacza, że ​​można je umieścić na białym tle. (taki jak pusty świat)


10
Łał. Nie wiem co powiedzieć. To bardzo sprytna odpowiedź!
DJMcMayhem

28
Nie sądzę, aby Minecraft Chat był kompletny lub uważany za język programowania (chociaż może to już nie być wymagane). Ale bardzo kreatywny! :)
Kade,

9
@Shebang gaming.stackexchange.com/questions/20219/... Czat Minecraft ma (prawie) wszystkie te same polecenia co bloki poleceń, a na pewno wszystkie polecenia z tyłu, gdy pytanie zostało zadane :-)
tuskiomi

15
Technicznie rzecz biorąc, w waniliowym Minecrafcie &powinno być §s
Oliver Ni

2
Hmmm, myślę, że da się to zrobić także w Quake 3
Sarge Borsch,

107

C, 82 80 78 74 54 bajty

Dzięki @WillihamTotland i @criptych za zapisanie 2 bajtów każdy!

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

Gdzie represent reprezentują bajty 0x1B (klawisz Escape). Ponieważ ten kod zawiera niedrukowalne znaki sterujące, oto odwracalny zrzut heksowy:

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

Dane wyjściowe na moim telefonie:


3
@KritixiLithos linia ta definiuje ajako "\x1B[%dm", która jest sekwencją ucieczkową ANSI do kolorowania, z symbolem zastępczym. Liczby w printf()wypełnij te symbole zastępcze.
betseg

1
Dwa bajty można ogolić, zastępując a "\x1B[47;31m"i definiując b do "\x1B[34m", a następnie używając putsz naprzemiennymi ai bprzedrostkami.
Williham Totland

3
Możesz zapisać kolejne 2 bajty za pomocą „\ 33” zamiast „\ x1B”.
criptych

1
Rozszerzając to, co powiedział cryptych, nie wiem, czy jest to dozwolone, ale można by zaoszczędzić kolejne cztery bajty, używając literowego znaku ucieczki zamiast \33. Nie jestem pewien, co myśli o tym standard C ...

3
@paxdiablo zgodnie z tym wątkiem meta, funkcje są OK dla kodu golfa.
betseg

73

Google Blockly , 10 14 bloków, 28 41 35 blytów

Kod

wprowadź opis zdjęcia tutaj

Wynik

wprowadź opis zdjęcia tutaj

Wypróbuj tutaj

Nie licząc hide turtlebloku, bo to tylko estetyka.

Blyte jest kombinacją bloku i bajtu, nie ma jeszcze meta postu, jak to policzyć, ale utworzę go później. Na razie liczę tak:

  • I o e, 8 blytes
  • V t d, 10 blytes (tutaj 2 wiodące miejsca)
  • Kolory, po 1 blyte, 2 w sumie
  • 90, 2 blyty
  • 999, 3 blyty
  • 0, 1 blyte
  • skręć w prawo, 2 blyty
  • idź do przodu, 2 blyty
  • normalne bloki, po 1 blyte, łącznie 5

Ponieważ Google Blockly jest rzadko używany do gry w golfa i myślę, że nie będzie gotowe na to wyzwanie, mam nadzieję, że jest to prawidłowe zgłoszenie.


20
Dla zapisu jest to ważne. Miło jest widzieć unikalne języki. Chociaż chyba, że ​​w Google Blockly występuje metakoncentracja na liczeniu bajtów, mogę go zignorować przy wyborze zwycięzcy.
Calvin's Hobbies

2
Może się okazać dyskusja tutaj istotne. CC @HelkaHomba.
Scimonster,

Czy zastanawiałeś się nad zastąpieniem tych trzech pól I odwoma polami em?
Andrea Lazzarotto,

Google Blockly zostanie przetłumaczone na JavaScript, a następnie uruchomione. Musisz uzyskać Inspect Elementi uruchomić kod w Blockly API, aby uzyskać prawdziwy kod JavaScript.

1
Poczekaj, aby można było użyć Scratch?
Adamawesome4,

47

HTML, 52 bajty

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

2
Myślę też, że #FF0000-> #F00i #0000FF-> #00Fdziała
Conor O'Brien

46
Dlaczego nie zmienić tego w fragment kodu?
Neil,

3
<r>I <c>V<r>o<c>t<r>e<c>d<style>r{color:red}c{color:bluedziała
tylko ASCII

7
właściwie możesz po prostu zagnieżdżać się bez zamykania I <c>V<e>o<c>t<e>e<c>d<style>*{color:red}c{color:0ffi zmieniać kolor na niebieski0ff

2
Niestety obecna wersja nie działa jako fragment kodu, najnowsza wersja, która działa dla mnie, to c{color:blue}wersja.
Neil,

39

LaTeX, 147 126 bajtów

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

Oszczędność 21 bajtów i lepsze kerningowanie dzięki @ AndreïKostyrka.

Spowoduje to wydrukowanie strony A4 z tym w pierwszym wierszu (zwróć uwagę, że to również wydrukuje stronę 1 na dole):

wprowadź opis zdjęcia tutaj


13
Myślałem, że LaTeX lepiej skomponuje Vokerning ... Ale najwyraźniej bierze pod uwagę każdą literę osobno ze względu na kolory.
Sanchises

@sanchises Ponieważ każda litera ma osobne polecenie, myślę, że niszczy właściwe kerning.
Fatalize

Tak, dokładnie. Chociaż jestem pewien, że byłoby to możliwe, gdyby gra w golfa nie była wymagana.
Sanchises

@ sanchises jest to zdecydowanie możliwe , ale tak naprawdę jest to dłuższe niż to brzydkie rozwiązanie.
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}oszczędza 21 bajtów i daje 126 bajtów czystego typograficznego piękna.
Andreï Kostyrka

34

Windows 10 Batch, 51 50 bajtów

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

Gdzie ␛ oznacza znak ANSI Escape 0x1B. Wydruki przy użyciu formatowania kolorów. Edycja: Zapisano 1 bajt dzięki @ brianush1. Próbowałem napisać kod, aby to wygenerować, ale zajęło to 97 bajtów. Wynik:

głosowałem


1
Możesz @color fc&echo I
zagrać w

1
co ciekawe, nie zdawałem sobie sprawy, że sekwencje specjalne ANSI obsługują terminal Windows
Mark K Cowan,

3
@MarkKCowan To tylko Windows 10 i (tak sądzę!) Opublikuj aktualizację Redstone. To jedna z niewielu rzeczy, które powstrzymują mnie przed zainstalowaniem XP.
wizzwizz4,

@ wizzwizz4 ConEmu też je obsługuje :) Rzeczywiście pochodzi z rocznicy Windows 10 (tj. redstone 1)
Asu

@Asu zainstalowałem XP.
wizzwizz4

28

JavaScript, 71 bajtów

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

Wykorzystuje console.logzdolność drukowania w kolorze. Nie działa we fragmencie stosu, więc powinieneś wkleić tę odpowiedź do konsoli, aby ją przetestować.

wprowadź opis zdjęcia tutaj

Kredyty obrazu do @Mast


Właśnie to wymyśliłem, haha. Myślę, że najkrótszą alternatywą byłobyconsole.log([...' I Voted'].join`%c`,r='color:red',r,b='color:blue',r,b,r,b)
ETHproductions

Nie działa również w Node.js. :(
Jordan

Byłem zaskoczony, że tak naprawdę działa, ale działa .
Maszt

23

R, 113 85 81 74 73 55 bajtów

Edycja: Zapisano kilka bajtów dzięki @rturnbull i @JDL

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

Rozmiar wyjścia (i odstępy itp.) Zależy od rozdzielczości aktualnie otwartego urządzenia graficznego. Testowany w RGui i RStudio na moim monitorze i produkuje:

wprowadź opis zdjęcia tutaj


4
Och, nigdy wcześniej nie widziałem el(). Dzięki za pomoc w nauce R! Ponieważ textjest wektorowy, można pominąć dla pętli i po prostu napisać: text(seq(.3,.6,.05),.5,s,col=c("red","blue")). (Zmodyfikowałem twoje pozycje x dla kodu golfisty, chociaż odstępy mogą być nieco mniej
uporządkowane

1
Ponadto, dzięki częściowemu dopasowaniu argumentów możesz użyć co=zamiast col=. I wreszcie 6:12*.05jest o kilka bajtów krótszy niż seq(.3,.6,.05).
rturnbull

1
Dobry chwyt! I teraz zdaję sobie sprawę, że 6:12/20jest to oczywiście 1 bajt krótszy niż 6:12*.05, przepraszam za sprowadzenie cię na manowce i sugerowanie nieoptymalnych edycji.
rturnbull

1
Czy kolory nie są wyłączone? Czy „I” i „V” nie powinny mieć różnych kolorów?
JDL

2
Jestem pewien, że el()poprawia 99% wszystkich poprzednich strsplitodpowiedzi o 1 bajt.
Vlo,

21

LÖVE , 152 142 136 bajtów

Pokażmy trochę zabawy dla małego języka prototypowego! Nie jest idealny do gry w golfa (no dalej, jest oparty na LUA), ale łatwo go napisać.

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

Zrzut ekranu:

zrzut ekranu


Wersja całkowicie nie golfowa:

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
Wydaje mi się, że użyłeś czegoś innego niż Java.
AdmBorkBork,

5
Tyle 255… Zmienna dla nich?
manatwork

1
@ ConorO'Brien To jest pełny program. love.draw()to wbudowana funkcja, którą zastępujesz, która działa na etapie losowania. Istnieją również rzeczy takie jak love.update()i love.load()dla różnych części pętli renderowania, ale są one opcjonalne. To fajny język i możesz zacząć z nim bardzo łatwo . Czasami używam go do prototypowania pomysłów na gry.
Geobits,

2
@cat Po prostu nie. To nie jest tak, że drukuję je na konsoli, to druk graficzny. Tak więc przestrzeń tutaj to po prostu „nie maluj nic w tym obszarze”, a nie „pomaluj ten obszar na kolorowe tło”.
Geobits,

2
@ ZoltánSchmidt Thanks! Istnieje kilka innych odpowiedzi LÖVE , jeśli chcesz je przejrzeć: D
Geobits

18

Procesor gorącej zupy , 48 bajtów

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

Wersja bez golfa to:

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

Jeśli pamiętasz, że mes(wiadomość) należy do HSP echo, myślę, że jest to dość czytelne.

Dziwnie, jeśli spróbujesz zrobić posalbo pos,, niebieska linia nie nadpisać czerwoną linię i pojawia się pod nim. Jeszcze dziwniejsze, colorma tylko przyjmować wartości 0-255, ale 0,0,-1działa na niebieski, 0,-1,0działa na zielony i -1,0,0działa na ... czarny? ( -257,0,0i 511,0,0pracuj jednak dla czerwonych, więc coś jest nie tak z modem 256)

wprowadź opis zdjęcia tutaj


Dlaczego spacje w drugim nie meszastępują pierwszego?
cat

@cat Spaces nic nie rysują, po prostu przesuwa kursor w pewnym sensie
Sp3000,

1
Sprytne użycie -1 dla 255. Miej +1
Cyoce

@Cyoce A może to właściwie -255?
sagiksp

18

MATLAB, 74 bajty

Tworzymy białe tło 50 x 50 (jedna kolumna dla każdego stanu) za imshowpomocą tablicy ones. Następnie wyświetlamy tekst, używając mojej sztuczki skracania nazw właściwości, aby uzyskać kolory. Ponieważ domyślna czcionka nie ma stałej szerokości, tekst jest wypełniany spacjami.

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

wprowadź opis zdjęcia tutaj

MATLAB, 99 bajtów, czcionka o stałej szerokości

Pierwsza wersja wykorzystuje manipulowanie spacjami i współrzędnymi, aby uzyskać prawidłowe kerning na domyślnej czcionce i może nie wyświetlać się poprawnie na twoim komputerze. Zamiast tego możemy użyć czcionki o stałej szerokości, takiej jak Courier(lub, dla niektórych bajtów, FixedWidthktóra działa w każdym systemie, w którym zainstalowana jest czcionka o stałej szerokości). Dzieje się tak kosztem kilku dodatkowych bajtów. Możemy to nieco złagodzić, używając forpętli do wydrukowania tekstu. Tekst i odpowiednie kolory są przechowywane w tablicy komórkowej. Tło musi być nieco większe.

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

wprowadź opis zdjęcia tutaj

Matlab, 80-bajtowa edycja bonusowa

Niestety podkreślony niebieski tekst jest niedozwolony. W przeciwnym razie ta odpowiedź uwypukliłaby pewne interesujące zachowanie w MATLAB. Możesz wydrukować czerwony tekst za pomocą fprintf(2,txt)i możesz wydrukować niebieski podkreślony tekst za pomocą fprintf('<a href="">txt</a>'). Łączenie tego działa ... czasami. Zupełnie losowo może również tworzyć czerwony podkreślony tekst. Jeśli tak jest w twoim systemie, możesz wydawać drawnowmiędzy kolejnymi fpołączeniami.

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

wprowadź opis zdjęcia tutaj


Możesz pisać <a href>zamiast <a href="">. Jeśli ci się nie podoba, możesz użyć <a href=#>.
Ismael Miguel,

@IsmaelMiguel Clever. <a>nie działało
Sanchises

Używanie tylko <a>nie jest uważane za klikalny link. aby uzyskać niebieski kolor, należy to uznać za jeden. W CSS selektorem może być a[href]. Tak długo, jak długo hrefistnieje atrybut , jest to link klikalny. Dlatego używanie tylko <a>nie działa.
Ismael Miguel

18

ImageMagick, 102 bajty

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

Nie golfowany:

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

wprowadź opis zdjęcia tutaj

Gra w golfa obejmowała pełne polecenie ImageMagick

  • nie wywołując jawnie domyślnego convertnarzędzia

  • używanie xc:zamiast canvas:( xc:jest starym synonimem canvas:; nie przewiduję, że ImageMagick kiedykolwiek go wyeliminuje)

  • nie określając koloru płótna, ale polegając na domyślnym ImageMagick, który okazuje się być biały

  • usunięcie szerokości 60z geometrii (gdy zostanie pominięta, szerokość == wysokość)

  • usunięcie „!” z geometrii, która jest potrzebna tylko do wytworzenia nie-kwadratowego płótnacanvas:white[60x30!]

  • używając starszego x:zamiast show:jako pliku wyjściowego (zakłada, że ​​ImageMagick został zbudowany z Xobsługą)

  • usunięcie niektórych białych znaków, których użyłem do wyrównania ciągów tekstowych

  • łączenie wielu linii polecenia (usunięto ukośnik odwrotny między wierszami)

Jeśli jesteś tak skłonny po wyborach, dodaj 12 bajtów -rotate 180przed show:dyrektywą:

wprowadź opis zdjęcia tutaj


4
Uwielbiam to, jak wersja bez golfa różni się drastycznie od wersji z golfem.
Andreï Kostyrka

15

Bash, 35 bajtów

Mój skrypt wygląda tak

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

xxd pliku skryptu:

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

Wpisanie: ctrl-v-esc i ctrl-vh wstawi znaki zmiany znaczenia i spacje (^ [i ^ H).

wprowadź opis zdjęcia tutaj


Jak to działa? Wyjaśnienie to być super
kot

2
@cat wydaje się, że zapisuje wszystkie czerwone litery (z „h” i „p” jako stand-ins), a następnie ustawia kolor na niebieski i zapisuje „d” na końcu. Na koniec przesuwa kursor w lewo, aby dodać „t” i „V” nad wcześniejszymi standardami (ascii 0x08, reprezentowane przez „^ H” na powyższym ekranie, przesuwa w lewo o 1 znak). Sprytny sposób na uniknięcie wielu sekwencji ucieczki w celu zmiany koloru. Używa także dosłownego znaku ucieczki (0x1B, reprezentowanego jako „^ [”), co oszczędza miejsce w porównaniu do podobnych odpowiedzi, takich jak moja.
Dave

Ponadto: można zapisać 3 bajty, zakładając, że terminal jest domyślnie ustawiony na białym tle (większość innych odpowiedzi terminala już to zakłada).
Dave

Możesz zapisać bajt, usuwając dwa cudzysłowy i dodając odwrotny ukośnik (znak zmiany znaczenia) przed średnikiem. Również twój skrypt ma małe litery v (twój wiersz poleceń jest w porządku).


14

Java, 322 319 318 309 304 229 217 bajtów

-9 Bajtów dzięki Kevin.
-75 Bajtów dzięki Angzurilowi, miłemu objaśnieniu na starych klasach awt, zawsze zapominaj, że one istnieją.
-12 Bajtów dzięki 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);}};}

Wynik:

wprowadź opis zdjęcia tutaj


1
JFrame j=można grać w golfa Frame j=; (c==' '||i++%2==0)?można grać w golfa c<33|i++%2<1?i truemożna grać w golfa 1>0. Ponadto, @HelkaHomba, czy jest to poprawny wynik? Ponieważ ma także spacje między V o t e d? Aha i dlaczego 0,0,999,99? 0,0,99,99jest wystarczająco duży dla tekstu na moim ekranie.
Kevin Cruijssen

1
(c<33||i++%2<1)?można jeszcze zagrać w golfa o trzy bajty, usuwając nawias i zmieniając ||na|
Kevin Cruijssen

1
Znalazłem jeszcze kilka rzeczy do gry w golfa: new JComponentto new Container(-1); usuń char c="IVoted".charAt(i);i zmień g.drawString(c+""na g.drawString("IVoted".charAt(i)+""(-8).
Kevin Cruijssen

1
Pierwszy poprawa, należy zmienić Frame j=new JFrame();j.add(new JComponent(), aby Frame j=new Frame();j.add(new Container()można także spadek importu import javax.swing.*;i g.setColor(Color.WHITE);g.fillRect(0,0,99,99)wyniku (-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);}};}pozwala zmniejszyć o 12 bajtów
użytkownik902383

13

Bubblegum, 28 bajtów

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

wprowadź opis zdjęcia tutaj

Nie działa online, ponieważ do kolorowania używa kodów kolorów ANSI.


Czy jest to proste kodowanie, czy też wykorzystuje inną sprytną sztuczkę?
Conor O'Brien

2
@ ConorO'Brien W Bubblegum nie ma czegoś takiego jak sprytne sztuczki. Szczerze mówiąc, ta odpowiedź była głównie efektem ubocznym rzeczywistej odpowiedzi, nad którą pracuję.
spaghetto

13

PowerShell v2 +, 71 59 57 55 bajtów

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

Zaoszczędzono dwa bajty dzięki @flashbang ... Zaoszczędzono jeszcze dwa dzięki @ConnorLSW

Bierze "I Voted"i zamienia go w chartablicę, a następnie zapętla |%{...}. Każdą literę wykonujemy Write-Hostz -bkolorem podłoża do White, -noNewLine i -fkolorem rudy jako odpowiednim indeksem . Wykorzystuje to fakt, że nieparzyste wartości ASCII są czerwone, a nawet wartości ASCII są niebieskie $_%2jako wskaźnik.

Kolory konsoli w programie PowerShell są bardzo ograniczone, więc jest to najbliższe przybliżenie, jakie można uzyskać. Użycie 4( DarkRed) dla koloru czerwonego byłoby bardziej golfowe , ale nie wygląda dobrze, więc poświęcam kilka bajtów ze względu na dokładność kolorów.

Poniżej znajduje się wynik, a następnie 16 dostępnych kolorów, które konsola może wyświetlić. Zwróć uwagę, że tło nie jest naprawdę białe, ponieważ Microsoft w swojej mądrości postanowił, aby kolory tła były nieco mniej od kolorów na pierwszym planie.

Wyjście konsoli


IIRC, w starożytnych materiałach, miałeś 4 bity na pierwszym planie i 3 bity na tle, więc tła mogą być tylko „ciemnymi” kolorami 0-7. Czy konsola nadal to śledzi?

@Hurkyl Kinda. Wygląda na to, że opiera się na palecie kolorów EGA , ale nie jestem pewien historycznych powodów, dla których PowerShell utrzymuje ten schemat. Prawdopodobnie coś ukrytego w kompatybilności wstecznej Win32 API, które zmusiło ich do używania tylko tych 16 kolorów.
AdmBorkBork,

Nie działa, jeśli ustawisz kolor tła na 15?
Random832,

@ Random832 to ze względu na białe tło naklejki.
geisterfurz007

@ geisterfurz007, TimmyD, pytałem, czy możesz ustawić tło na „15” zamiast na „białe” [ponieważ rzeczywiste tło na twoim obrazie wydaje się być nr 7], aby uzyskać jaśniejszą biel. Ale patrząc na to bardziej, cały ekran wygląda dziwnie - granice między liniami w twoim przykładzie i szara linia między „I” a następną spacją nie mają sensu, jeśli PowerShell jest uruchamiany w konsoli - czy używasz jakieś inne narzędzie, takie jak ConEmu? Jeśli tak, to nie ma sensu obwiniać za to Microsoft.
Random832,

11

Python, 91 bajtów + termcolor

Nie wygra, ale opublikował to dla zabawy.

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

Połowa kredytu przypada na Sp3000.


2
Używanie kodów ANSI powinno być krótsze
TuxCrafting

@ TùxCräftîñg Nie jest obsługiwany na wszystkich platformach, tj. Windows.
Kade

3
Chcesz dodać zdjęcie?
Calvin's Hobbies

9
Możesz zapisać 5 bajtów, zmieniając 'blue' if c else 'red'na 'brleude'[c^1::2].
Kade

2
Prawdopodobnie powinieneś umieścić + tytuł w tytule, ponieważ nie jest to standardowy moduł. Również:from termcolor import*\nfor c in'I Voted':cprint(c,'brleude'[ord(c)%2::2],'on_white',end='')
Sp3000,

8

Jolf, 53 bajty

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

Są niedrukowalne. Wypróbuj tutaj!

Dane wyjściowe Jolfa obsługują HTML. Próbowałem zrobić coś sprytnego, jak moduł 2, aby zdecydować o kolorze, ale to skończyło się tylko dłużej (około 69 bajtów). Dane wyjściowe są w formacie HTML.

Wynik:

regularne „Zagłosowałem”

(większa wersja)

duże „Zagłosowałem”


8
To okropne, że zapisałeś tylko trzy bajty na HTML: P
tylko ASCII

@EriktheGolfer To naprawdę działa tylko w Firefox.
Conor O'Brien

@ ConorO'Brien Och, używam Chrome. Dzięki.
Erik the Outgolfer

1
... i odpowiedź HTML go przerosła.
betseg

Nie bluemożna zapisać jako 00f?
Ismael Miguel,


8

sh, 61 49 bajtów

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

Ponieważ zawiera to niedrukowalne, oto odwracalny zrzut heksowy 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 "
Głosowałem
Xterm (322)

Dzięki 4198 (manatwork) dla -12 bajtów.


Po co osobno ustawiać kolory tła i pierwszego planu? Zacznij od [47;31;1m. I 1pogrubienie trwa do a 0, więc nie trzeba ustawiać go ponownie dla każdej litery.
manatwork

@manatwork O Boże, myślałem, że musisz to zresetować!
Erik the Outgolfer

Jeśli to shjest coś bardziej nowoczesny niż starego Bourne shell, niektóre ekspansja parametr może pomóc: s=":1;47;1mI :4mV:1mo:4mt:1me:4md";echo ${s//:/^[[3}.
manatwork

@manatwork To nie działa. Wygląda na to, że nie jest nowocześniejszy.
Erik the Outgolfer

@manatwork ${VAR/FROM/TO}wymaga ksh93, bash lub zsh, a nie tylko „czegoś bardziej nowoczesnego niż stara powłoka Bourne'a”. POSIX wymaga #i %ekspansji parametr modyfikatory ale nie /…/lub:…:
Gilles

8

SVG + bzip2, 1807 bajtów

Wektoryzowana wersja przykładowego obrazu, następnie skompresowana za pomocą bzip2 do około połowy (4385 -> 1807 bajtów). Możesz go pobrać tutaj . (bezpośredni link do stron 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��

Nie wygra, ale opublikował to dla zabawy.


1
bzip2nie jest językiem programowania.
Peter Taylor,

3
@PeterTaylor Zgodnie z meta regułami nie musi to być język programowania. ( meta.codegolf.stackexchange.com/a/10426/41088
noɥʇʎԀʎzɐɹƆ

1
Należy zakładać odwracalnym xxdpliku
kot

spróbuj użyć brotli dla jeszcze większej kompresji
Sarge Borsch

4
Jeśli naprawdę interesuje Cię gra w golfa, prawdopodobnie lepiej byłoby po prostu ręcznie utworzyć plik SVG z kilkoma elementami tekstowymi ustawionymi we właściwych kolorach. Oto punkt początkowy: <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>Zauważ, że faktycznie renderuje to poza obszarem drukowania i nie ma koloru tła. Tak jak powiedziałem, to dopiero początek.
trlkly

8

C, 65 bajtów

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

lub dokładniej:

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

Wykorzystuje tę samą technikę koloru bazowego, którą zastosował betseg, ale z ósemkową sekwencją ucieczki zamiast heksów oraz z obserwacją Sp3000, że wszystkie nieparzyste punkty kodowe są czerwone.

Pozostawia terminal w kolorze niebieskim. Zresetuj za pomocą:

printf "\33[0m";

Jeśli ||działa w C tak jak w JavaScript ( x||y -> x?x:y), możesz zrobić, c&1||4aby zapisać bajt.
ETHprodukcje

1
@ETHproductions nie działa w ten sposób w C While ||i && jest zwarcie, to zawsze zwraca 1 lub 0, niezależnie od wartości zaangażowanych.
Dave

@Dave Nauczyłem się czegoś dzisiaj ...
cat

To nie ustawia koloru tła. Możesz także użyć dosłownego znaku ucieczki zamiast \33zapisywać dwa bajty, jeśli nie jest to w jakiś sposób sprzeczne z regułami.

@yellowantphil zakłada, że ​​domyślne tło terminala jest ustawione na biały (ponieważ wyzwanie mówi, że musi być możliwe, aby mieć go na białym tle). W rzeczywistości w OS X terminal jest gotowy do użycia czarno-biały.
Dave

8

Węzeł, 57 55 41 bajtów

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

Zastąp każdy qbajtem dosłownym 1Bi Hbajtem 08przed uruchomieniem.

Oto jak wygląda emulator terminala ConEmu na moim komputerze z systemem Windows (powiększony):

wprowadź opis zdjęcia tutaj


Co to jest emulator terminala !?
cat


8

Python IDLE, 97 96 78 69 bajtów

Dzięki DrMcMoylex za golenie niektórych bajtów!

EDYCJA: Odkryłem, że bezpośredni .write()był o 9 bajtów krótszy

Niezupełnie poprawna odpowiedź, więcej nadużyć standardowego motywu. IDLE jest IDE Pythona i jeśli nie jest dostosowany, STDOUTjest niebieski, STDERRjest czerwony, a tło jest białe. Tak więc następujący kod:

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

Drukuje to:

wprowadź opis zdjęcia tutaj

Działa to, ponieważ ord(i)%2sprawdza parzystość punktu kodu litery i drukuje go odpowiednio do ERR/ OUT.


8

REBOL , 100 90 95 bajtów (-7 bajtów z REPL dla 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"]

W REPL początkowa REBOL [] nie jest wymagana. To 7 bajtów.

Wersja bez golfa to:

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

Po lewej stronie, z „spacją 0x0” dodaną do każdego bloku tekstowego, po prawej, z domyślnym wypełnieniem 2x2.

Głosował REBOL I.
(źródło: canardpc.com )


7

Perl, 57 + 17 = 74 bajty

Biegnij z -MTerm::ANSIColor

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

Twój terminal może być niebieski na końcu (dołącz ,c("reset")na końcu kodu, aby przywrócić go do normy).

Domyślnie terminale mają zazwyczaj czarne tło, ale można je opcjonalnie zmienić na białe, co osobiście nie uważam za oszustwo.

Ze zdjęciem: wprowadź opis zdjęcia tutaj


7

PHP, 199 201 151 bajtów

Ten skrypt wyświetla obraz na standardowe wyjście. Zaktualizowano dzięki 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);

Uruchom go w wierszu polecenia w następujący sposób:

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

Wynik:

wprowadź opis zdjęcia tutaj


2
Pomiń header()połączenie. Twój kod działa dobrze również z wiersza poleceń. Ponieważ error_reportingdomyślna wartość nie pokazuje powiadomień, ogólnie nie można cytować literałów łańcuchowych. Lub jeśli ci się to nie podoba, str_split("I Voted")jest jeszcze krótszy niż osobne wyliczanie znaków. I przenieś przydział do $ i do jego pierwszego użycia.
manatwork

1
~2**24wydaje się działać zamiast 0xFFFFFF. Nie jestem pewien, czy dotyczy to wszystkich architektur. Jeśli nie, 2**24-1powinien być przenośny.
manatwork

@manatwork niesamowite dzięki. Że dostał go w dół do 152. Próbowałem ~2**24i 2**24-1ale mam błędy. Nie wiem nawet, jak to działa.
Kodos Johnson

Prawdopodobnie twój PHP jest starszy niż 5.6.0: „Dodano operatora potęgowania (**).” - Dziennik zmian PHP . Taki sam jak pow(), ale poręczniejszy do gry w golfa. pastebin.com/jFn6ahFk
manatwork

Rozumiem. Cóż, ponieważ php 5.5 wydaje się nie być obsługiwany, użyję twojego rozwiązania. Teraz jest 150. Jeszcze raz dziękuję.
Kodos Johnson

7

Xamarin.Forms C #, 317 313 bajtów

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.Endjest wymagany na iOS, w przeciwnym razie tekst zostanie nałożony na pasek stanu. Nie ma problemu na Androidzie, więc można zapisać 34 bajty, w tym przecinek.

Edycja: 14.11.2016: -4 bajty

Nie golfił

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
To nowy pomysł. +1
Addison Crump

7

kod maszynowy x86 + DOS + BIOS, 25 bajtów

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

Kod zestawu (odpowiedni jako dane wejściowe debug.com, więc wszystkie liczby są szesnastkowe):

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

Wykorzystuje procedurę BIOS do wyprowadzenia ciągu do pamięci wyświetlacza. Ciąg pojawi się na ekranie w „losowej” pozycji (patrz poniżej), jak poniżej:

zrzut ekranu

Ciąg zawiera litery I V o t e dprzeplecione z „atrybutami”

74 74 71 74 71 74 71

które określają kolor liter. Tutaj 7 jako najbardziej znacząca cyfra oznacza „białe tło”, a najmniej znacząca cyfra określa pierwszy plan (1 = niebieski; 4 = czerwony).

Pozycja wyświetlania ciągu jest określona przez dxrejestr. Jak wspomniano tutaj , początkowa wartość tego rejestru jest równa wartości csrejestru. A wartość tego jest pierwszym dostępnym adresem w pamięci, po załadowaniu DOS.

Rozmiar DOS jest zwykle mniejszy niż 64 KB, to znaczy adres segmentu załadowanego programu użytkownika jest mniejszy niż szesnastkowy 1000. Tak więc wynik pojawi się gdzieś wokół pierwszych 16 wierszy tekstu na wyświetlaczu. W moim przykładzie pojawił się w linii 8 (górna połowa dx, nazywana dh, jest równa 8).

Niska połowa dxtzw. dlZawiera kolumnę, w której tekst jest wyprowadzany. Eksperymenty pokazują, że BIOS nie sprawdza przepełnienia, więc nie ma znaczenia, czy dxprosi o wyjście np. W kolumnie 100.


sprytny, krótki i naprawdę intuicyjny.
tuskiomi
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.