Narysuj flagę narodową Francji


106

Było wiele wyzwań inny flaga wysłane, ale nie jeden za flagę narodową z Francji . Ten tydzień wydaje się odpowiednim czasem.

Utwórz tę flagę w jak najmniejszej liczbie bajtów:

Francuska flaga

  • Obraz musi mieć proporcje 3: 2, rozmiar co najmniej 78 pikseli szerokości i 52 piksele wysokości.
  • Każdy pasek zajmuje jedną trzecią szerokości.
  • Kolory pasków od lewej do prawej są RGB: (0, 85, 164), (255, 255, 255), (239, 65, 53).
  • Obraz można zapisać do pliku lub przesłać strumieniowo do STDOUT w dowolnym popularnym formacie pliku obrazu lub można go wyświetlić.
  • Alternatywnie, wypisz blok tekstu o szerokości co najmniej 78 znaków, złożony ze znaków spacji, które przedstawiają flagę, używając kodów kolorów ANSI, aby go pokolorować. (Użyj standardowego niebieskiego, białego i czerwonego.)
  • Wbudowane obrazy / biblioteki flag są niedozwolone.

Najkrótszy kod w bajtach wygrywa.

Tabela liderów

Fragment kodu na dole tego postu generuje tabelę wyników na podstawie odpowiedzi a) jako lista najkrótszych rozwiązań dla każdego języka oraz b) jako ogólna tabela wyników.

Aby upewnić się, że twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:

## Language Name, N bytes

gdzie Njest rozmiar twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:

## Ruby, <s>104</s> <s>101</s> 96 bytes

Jeśli chcesz umieścić w nagłówku wiele liczb (np. Ponieważ twój wynik jest sumą dwóch plików lub chcesz osobno wymienić kary za flagi tłumacza), upewnij się, że rzeczywisty wynik jest ostatnią liczbą w nagłówku:

## Perl, 43 + 2 (-p flag) = 45 bytes

Możesz także ustawić nazwę języka jako link, który pojawi się we fragmencie:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


4
Te wartości RGB nie pasują do twojego obrazu. Z tego co widzę, masz RGB: (0, 35, 149), (255, 255, 255), (237, 41, 57).
zlewka

8
Kompaktowe przechowywanie określonej palety jest prawdopodobnie najtrudniejszą częścią tego problemu w większości języków. Biorąc to pod uwagę, wydaje się niesprawiedliwe wobec rozwiązań graficznych pozwalających na wyjście ANSI ze standardową paletą. Dlaczego nie pozwolić, aby rozwiązania graficzne wykorzystywały czysty (0, 0, 255) / (255, 255, 255) / (255, 0 0) do wyrównania szans?
JohnE,

15
Każdy pasek zajmuje jedną trzecią szerokości. Bardziej interesujące może być użycie wariantu Marynarki Wojennej: na mocy rozporządzenia z 17 maja 1853 r. Marynarka wojenna wróciła do proporcji 30:33:37, z których obecnie korzysta, ponieważ trzepotanie flagi powoduje, że części oddalają się od fala wydaje się mniejsza.
Ben Jackson

34
echo 🇫🇷nie dość duży
Digital Trauma

5
@JohnE Zgadzam się. Zasady dotyczące kolorów dają ogromną przewagę rozwiązaniom ASCII-art. Nie sprawiają też, że wyzwanie staje się „trudne” (tak naprawdę dodaje bajty) dla języków, które mogą używać dowolnych kolorów i dyskwalifikuje kilka fajnych języków, które nie potrafią tworzyć dowolnych kolorów.
spaghetto

Odpowiedzi:


38

CJam, 23 22 bajtów

00000000: 27 9b 22 5c 22 25 1f 22 66 7b 69 27 6d 32 37 2a  '."\"%."f{i'm27*
00000010: 7d 4e 5d 32 36 2a                                }N]26*

Powyżej jest zrzut heksowy, który można odwrócić xxd -r.

Kosztem dwóch dodatkowych bajtów - w sumie 24 bajtów - możemy zamiast tego użyć kolorów tła, dzięki czemu wydruk jest nieco ładniejszy.

00000000: 27 9b 22 2c 2f 29 00 22 66 7b 69 27 6d 53 32 36  '.",/)."f{i'mS26
00000010: 2a 7d 57 4e 74 32 36 2a                          *}WNt26*

Jak to działa

W obu programach używamy sekwencji ucieczki ANSI \x9bXYm- gdzie Xjest 3dla koloru pierwszego planu i koloru 4tła oraz Yokreśla kolor, który ma być użyty - do przełączania między trzema kolorami flagi.

'<CSI>       Push the '\x9b' character (Control Sequence Introducer).
"\"%<US>"    Push the string of the ISO 8859-1 characters with code
             points 34, 37, and 31.
f{           For each character in the string, push the CSI and that
             character; then:
  i            Cast the character to integer.
  'm27*        Push 27 m's. The first completes the control sequence,
               the remaining 26 will be printed.
}
N]           Wrap the generated array and "\n" in an array.
26*          Repeat it 26 times.

Drugi program jest podobny.

Wynik

wynik


Obecnie nie jestem pewien, jak wysoki powinien być „obraz”.
Dennis,

W swojej odpowiedzi wybrałem 78x30. Te wymiary w Lucida Console 9 pt (domyślna czcionka dla xterm) dały najbliższą wartość 3: 2.
Mego

Możesz użyć pełnego bloku dla „ładności”
Matthew Roh

75

Pure Bash (w OSX), 84

Domyślny terminal OSX obsługuje kolorowe emoji. Nie jestem pewien, czy liczy się to jako wynik tekstowy czy graficzny.

printf -vs %26s
for i in {1..26}
do echo ${s// /🔵}${s// /⚪️}${s// /🔴}
done

Dane wyjściowe wyglądają następująco:

wprowadź opis zdjęcia tutaj


Alternatywnie:

Bash z narzędziami OSX, 56

yes `dc -e3do26^d1-dn2/*p|tr 201 🔵🔴⚪️`|sed 26q

dcWyrażenie:

  • oblicza 3^26-1i drukuje go w trójce22222222222222222222222222
  • dzieli to przez 2, a następnie mnoży przez 3^26. Dane wyjściowe w potrójnym to jest1111111111111111111111111100000000000000000000000000

trnastępnie tłumaczy 210 znaków na 🔵⚪️🔴. yeswypisuje ten wiersz w nieskończoność. sed 26qzatrzymuje produkcję w 26 liniach.


51
Terminal obsługujący emoji. Łał.
rr-

6
Pierwsze rozwiązanie nie używa właściwych wartości RGB, ani nie używa standardowych kolorów ANSI, prawda?
Klamka

@Doorknob Masz oczywiście rację - żadne z rozwiązań tego nie robi - więc ta odpowiedź może przekraczać granicę. Poprosiłem OP o wyjaśnienia
Digital Trauma

3
To tylko Unicode.
undergroundmonorail

1
@steve Nie spodziewałem się, że ta odpowiedź stanie się tak popularna, szczególnie biorąc pod uwagę, że istnieją pytania dotyczące jej ważności . Czy możesz powiedzieć „tak” lub „nie”, czy uważasz, że jest to ważne? Dzięki!
Cyfrowa trauma

51

Desmos, 30 12 bajtów

3x>10
3x<-10

Wypróbuj online.

Nie jestem do końca pewien, czy jest to poprawne, daj mi znać, jeśli są jakieś problemy.


3
@ CᴏɴᴏʀO'Bʀɪᴇɴ Domyślne kolory to czerwony i niebieski w tej kolejności (uważam), więc nie ma potrzeby ich ustawiania.
spaghetto

7
@ CᴏɴᴏʀO'Bʀɪᴇɴ To generator losowych flag;)
DanTheMan

3
@ CᴏɴᴏʀO'Bʀɪᴇɴ Nie są dla mnie przypadkowe - ręczne wprowadzenie dwóch nierówności powoduje, że konsekwentnie robię się czerwony, a potem niebieski.
Mego

1
To jest dziwne. Ja też robię się czerwony i niebieski.
lirtosiast

2
Nie sądzę, że jest ... ani nie pasuje dokładnie do proporcji.
Klamka

51

Python 2, 47 bajtów

s="[3%smF";print(s%4*26+s%7*26+s%1*26+"\n")*30

Zawiera niedrukowalne - oto zrzut heksadecymalny (odwracalny z xxd -r):

00000000: 733d 221b 5b33 2573 3b31 6d46 223b 7072  s=".[3%s;1mF";pr
00000010: 696e 7428 7325 342a 3236 2b73 2537 2a32  int(s%4*26+s%7*2
00000020: 362b 7325 312a 3236 2b22 5c6e 2229 2a33  6+s%1*26+"\n")*3
00000030: 30                                       0

Używa kodów ucieczki ANSI do drukowania kolorowych znaków na STDOUT - dla Francji wybrałem „F”. Brak linku online, ponieważ ideone nie obsługuje kodów wyjściowych ANSI w danych wyjściowych.

Podziękowania dla Dennisa i Xnora za wspaniałe wskazówki.

Zrzut ekranu z Xterm:

flaga


1
Masz tam dodatkowe miejsce. in [0]->in[0]
mbomb007,

2
1. Zamiast tego możesz użyć rzeczywistych bajtów ESC \x1b. 2. Pogrubienie nie wydaje się konieczne. 3. Nie jestem pewien, czy dotyczy to również sztuki ANSI, ale wydaje się, że pytanie to wymaga proporcji 3: 2.
Dennis,

Jest krótszy sub w parametry formatowania: print("\x1b[3%s;1mF"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30.
xnor

16
Naciśnij F, aby złożyć
hołd

4
Postać wygląda nieco ładniej, EG print("\x1b[3%s;1m█"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
ali_m

44

HTML / SVG, 76 bajtów 87 88 121 122 149

Zapisano 27 bajtów dzięki @insertusernameherehere

Oszczędza 9 bajtów dzięki @Joey

Zaoszczędzono 1 bajt dzięki @sanchies

Oszczędza 1 bajt dzięki @Neil

<svg><path fill=#0055a4 d=m0,0h26v52H0 /><path fill=#ef4135 d=M52,0h26v52H52

Korzystanie z wielu nadużyć w składni HTML może być dość krótkie.


Zrzut ekranu wyjścia:

Wyjście flagi Francji


Lub spróbuj (upewnij się, że Twoja przeglądarka obsługuje SVG):

<svg><path fill=#0055a4 d=m0,0h26v52H0 /><path fill=#ef4135 d=M52,0h26v52H52


3
Próbowałem pokonać Cię CSS, a teraz grałem w SVG, że jest jeszcze mniejszy niż moje rozwiązanie CSS. : D Jest to najkrótsza mogłem dostać się do pracy w Safari, Chrome i Firefox, to 122 bajtów długości:<svg><rect width=78 height=52 fill="#ef4135"/><rect width=52 height=52 fill="#fff"/><rect width=26 height=52 fill=#0055a4>
insertusernamehere

1
@insertusernamehere Thanks, That save 27 bytes! Udało mi się
pograć w

3
Dla mnie fill=#0055a4 />też działa (nie "), oszczędzając cały bajt.
Sanchises

3
@ świętuje cały bajt? o_O wow : D
developerbmw

4
@developerbmw W rzeczywistości bardziej imponujące byłoby zaoszczędzenie pół bajta, gdy się nad tym zastanowić.
Sanchises

29

Brainfuck $ , 153 bajty

+++++++++++++[->>>++>+++++++>++++>>>>++++++++>+++<<<<<<<<<<]>>>+>>#->$#>$#+++++++>$--->+++++[<]<<+++++[->+++++>++++++<<]>+#>($#([-]>[.>]<[<])>>>>+++<<<<)

Wysyła obraz z kodami kolorów ANSI. Wybrałem wysokość 30 jak Mego .

Zaginęła implementacja referencyjna z 2009 r. Połączona na stronie esolangs. Możesz go uruchomić za pomocą stworzonego przeze mnie interpretera, który obsługuje wszystko ze strony esolangs.

Brainfuck, 258 bajtów

To w zasadzie to samo, ale w zwykłym starym Brainfuck.

>>+++++++++++++[-<<++>>>>++>+++++++>++++>++++>+++++>++++>++++++++>+++[<]<]>>+>>->>------>--->+++++[<]<<<++++[>+++++[->+++++<]>+[>>[.>]<[<]<-]>>>>>+++[<]+++++[-<+++++>]<+[>>[.>]<[<]<-]>>>>>------[<]+++++[-<+++++>]<+[>>[.>]<[<]<-]>>>>>+++[<]<++++++++++.[-]<<-]

Lub, jeśli wolisz ten kod oOo CODE (984 bajtów):

one day ThERe WIlL Be PEaCE iN ThIS wORlD
OnE DaY ThERe WiLl Be peaCe iN ThIS wOrld
one day theRe WIlL be pEaCE iN ThIS wORlD
OnE DaY theRe WIlL Be PEaCe in ThIS wORlD
OnE day ThERe WIlL Be PEaCe in ThIS wORlD
OnE day ThERe WIlL Be PEaCE iN ThIS wOrld
OnE DaY ThErE wilL bE PeaCe IN this woRlD
one day There will Be pEacE in ThiS woRld
one Day TheRe will Be PEaCE iN ThIS wOrLd
onE dAY thEre WilL Be PEaCE iN ThIs World
OnE DaY ThERe WIlL bE pEace in ThIS wORlD
OnE DaY thErE Will Be PeAce in this WoRLd
one dAY thErE wilL bE PeaCE in tHIs world
one day theRe WIlL Be PeAce iN tHIS wORlD
OnE DaY ThErE wIll be PEaCE iN ThIS wORlD
one dAY thERe WiLl be peace In THis worLD
onE dAy thErE WilL Be peACe in this world
one Day TheRe wIll Be pEace In thIs WORlD
OnE DaY ThERe WiLl Be peaCE iN ThIS wORlD
OnE day tHEre WIlL bE peace in tHiS World
oNE daY tHere WiLL be PEace IN this world
one day ThERe WIlL bE peaCe IN thIS wORlD
OnE DaY ThERe WIlL Be PEaCE iN THis WoRld
oNE daY thERe wiLL

25

Bash + ImageMagick, 60 77 73 bajtów

convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"

(ugh, +17 znaków ze względu na wymagania dotyczące kolorów, których wcześniej nie zauważyłem ...)

aDane wyjściowe do pliku , w formacie netpbm:

llama@llama:~$ convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"
llama@llama:~$ file a
a: Netpbm image data, size = 78 x 52, rawbits, pixmap

Może również wyświetlać w formacie PNG, jeśli zmienisz nazwę pliku na a.png(+4 znaki).

Wynik:

wprowadź opis zdjęcia tutaj


1
convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"
Digital Trauma,

@DigitalTrauma Thanks! To oszczędza 4 znaki i nie wychodzi z błędem. (Poza tym nigdy nie wiedziałem, że ImageMagick może czytać / zapisywać do STDIN.)
Klamka

Możesz użyć -scalezamiast -sample; także odwrotny ukośnik nie wydaje się konieczny
aditsu

25

LaTeX, 139 bajtów

Dzięki @WChargin za oszczędność 21 bajtów.

\documentclass{proc}\input color\begin{document}\def\z#1!{{\color[rgb]{#1}\rule{4cm}{8cm}}}\z0,.33,.64!\z1,‌​1,1!\z.94,.25,.21!\end{document}

Spowoduje to wydrukowanie następującego obrazu 12 cm * 8 cm na stronie A4:

wprowadź opis zdjęcia tutaj

Pamiętaj, że „Strona 1” jest również wydrukowana na dole strony


1
To jest o około 100 bajtów krótsze niż moje asymptoterozwiązanie ...
Arcturus,

1
s.\newcommand\z[1].\def\z#1aby zaoszczędzić sporo bajtów. Możesz także ogolić kilka, używając \def\z#1!{…}\z0,.33,.64!\z1,1,1!\z.94,.25,.21!- czyli użyj własnych ograniczników zamiast nawiasów klamrowych do grupowania
wchargin

1
Możesz także\input color
wchargin

1
Dla kompletności, poprawiona wersja (139 bajtów):\documentclass{proc}\input color\begin{document}\def\z#1!{{\color[rgb]{#1}\rule{4cm}{8cm}}}\z0,.33,.64!\z1,1,1!\z.94,.25,.21!\end{document}
wchargin

24

Pyth, 27 bajtów

 .w*52[smmdGc3CM"\0U¤ÿÿÿïA5

Istnieje kilka niedrukowalnych znaków, więc oto zrzut heksowy:

00000000   2E 77 2A 35  32 5B 73 6D  6D 64 47 63  33 43 4D 22  .w*52[smmdGc3CM"
00000010   5C 30 55 A4  FF FF FF EF  41 35                     \0U.....A5

Spowoduje to utworzenie pliku o o.pngszerokości dokładnie 78 pikseli i wysokości 52 pikseli:

wprowadź opis zdjęcia tutaj

Wyjaśnienie:

.w*52[smmdGc3CM"........
               "........  a string containing the bytes 
                          0, 85, 164, 255, 255, 255, 239, 65, 53
             CM           convert them to integers
           c3             split into 3 lists
      smmdG               duplicate each list 26 times
     [                    put them into a list
  *52                     and duplicate it 52 times
.w                        save it as an image o.png

1
Przez chwilę myślałem, że rażąco źle zrozumiałem specyfikację PNG.
primo,

1
save it as an image o.png, ale nigdzie nie ma „.png”?
rev

1
@AsidShout Jak wywołać program? Jeśli używasz python3 pyth.py code.pyth, możesz go znaleźć w tym samym katalogu.
Jakube,

20

HTML (tryb dziwactwa), 68 bajtów

Używa trybu dziwactwa do renderowania flagi.

Kod HTML jest BARDZO nieprawidłowy, ale działa na standardowej przeglądarce Androida 4.4.2 i Firefox 42.0 (w systemie Windows 7 x64).

<table width=78 height=52><td bgcolor=0055a4><td><td bgcolor=ef4135>

Flaga jest renderowana w odpowiednim rozmiarze i standardowych kolorach czerwonym i niebieskim. Wszystkie strony zaczynają się od standardowego białego tła.



Jako alternatywa:

Całkowicie poprawny wersja HTML5 (141 bajtów):

<!DOCTYPE html><title>x</title><table style=width:78px;height:52px><tr><td style=background:#0055a4><td><td style=background:#ef4135></table>

Sprawdź jego ważność na: https://html5.validator.nu/

Wydruk wyniku:

wynik walidacji


1
Jesteś pewny? Gdy mam plik HTML zawierający tylko ten wiersz, nie działa on w przeglądarkach Firefox, Chrome i Safari. Jeśli plik zawiera inne elementy HTML po tej linii, działa dla mnie. Więc może nie możesz odrzucić końcowego >?
inserttusernamehere

1
„Idealnie ważny”? Powinno tak być, style="..."jeśli właśnie o to chodzi w drugim przykładzie.
mbomb007,

3
@ mbomb007 Idę po to, aby stworzyć najmniejszy prawidłowy kod HTML. Sprawdza to za pomocą oficjalnego walidatora, więc jest to całkowicie poprawny HTML. Możesz spróbować sam, jeśli nie wierzysz.
Ismael Miguel,

1
@ mbomb007 Również brakujące cytaty to najmniejszy problem: nie ma <html>, nie <head>, nie <body>, nie </tr>, nie </td>i nie ma zamknięcia wszystkich brakujących tagów.
Ismael Miguel,

1
@insertusernamehere Masz rację. Działa też na Androidzie. Przetestowałem to na jsfiddle. Ale podczas uzyskiwania dostępu data:text/html,<table width=78 height=52><td bgcolor=0055a4><td><td bgcolor=ef4135>nie działało. Napraw to teraz i użyj linku, aby go przetestować.
Ismael Miguel,

17

TI-Basic, 52 44 42 bajty

GridOff
AxesOff
11
Shade(-Ans,Ans,Xmin,Xmin/3
Shade(-Ans,Ans,Xmax/3,Xmax,1,1,Ans

(zakłada domyślny obszar wykresu [-10,10,1] na [-10,10,1])

Byłby 4 bajty krótszy bez pierwszych 2 linii, ale domyślnie miałby osie i nie wyglądałby tak ładnie.

Wygląda tak:

wprowadź opis zdjęcia tutaj

Jeśli zacienienie jest nieprawidłowe dla wyzwania, daj mi znać!

Bez pierwszych 2 wierszy wygląda to tak:

wprowadź opis zdjęcia tutaj


Chciałbym również dołączyć wersję bez pierwszych trzech linii tylko dla porównania.
GamrCorps,

1
Myślę, że możesz po prostu przejść z Ymin do Ymax. Możesz także założyć domyślny ekran od -10 do 10. Nie jestem również pewien, czy jest to poprawne, ponieważ regiony czerwony i niebieski są tylko w połowie zacienione.
lirtosiast

@ThomasKwa Zredagowałem swój post, aby pokazać, dlaczego nie używałem tylko Ymin i Ymax. Nie zdawałem sobie sprawy, że mogę założyć domyślny ekran, ale nie wiesz, co to jest domyślny ekran. Czy mógłbyś wyjaśnić? Jeśli chodzi o „półcieniowanie”, tak właśnie TI-Basic cienia rzeczy, jeśli jest nieważny, natychmiast go zmienię.
DanTheMan,

1
Domyślny ekran to Ymin = Xmin = -10, Ymax = Xmax = 10. Kalkulator zaczyna się od ustawień okna i AxesOn itp., Więc możesz je założyć.
lirtosiast

1
@Doorknob O ile mi wiadomo, nie można tego zrobić bez uciekania się do czarów.
DanTheMan,

17

ffmpeg, 110 113 116 117 119 108 108 100 bajtów

Wyświetl za pomocą ffplay 100 bajtów:

ffplay -f lavfi color=#0055a4:49x98[r];color=white:49x98[w];color=#ef4135:49x98[b];[r][w][b]hstack=3

Zapisano do pliku przy użyciu ffmpeg, 108 bajtów:

ffmpeg -lavfi color=#0055a4:49x98[r];color=white:49x98[w];color=#ef4135:49x98[b];[r][w][b]hstack=3 -t 1 .png

Obecna wersja polecenia przerwie się z błędem, ALE wyświetli pojedynczy obraz „.png”, taki sam jak pokazano poniżej.

wprowadź opis zdjęcia tutaj


8
Łał. Nadużywanie ffmpeg do robienia zdjęć ...
Cole Johnson

Heh, widziałem to pytanie i pomyślałem o zrobieniu tego samego. Dobra robota, dzięki której jest kompaktowy. Jeśli jest to dozwolone, możesz go nieco zmniejszyć, używając whitezamiast #ffffff: wartości powinny być takie same.
llogan

Wiem. Nie przeszkadzało mi wystarczająco. Zrobię to teraz.
Gyan,

Czy #fff działa?
ev3commander

Nie. Ale mogę pominąć f w f.png
Gyan

16

CSS, 127 128 144 bajtów

body:before,body:after{content:'';float:left;width:33%;height:100%;background:#0055a4}body:after{float:right;background:#ef4135}

Nie potrzebujesz innego tagu, działa wyłącznie z bodyelementem.

Edycje

  • Zapisano 16 bajtów , usuwając display:block;i trochę ;.
  • Zapisano 1 bajt , usunięto końcowe }.

6
Chociaż technicznie CSS nie jest językiem programowania według naszych definicji.
Conor O'Brien,

10
@ CᴏɴᴏʀO'Bʀɪᴇɴ Wiem - po prostu chciałem pokonać SVG .
inserttusernamehere

4
@ CᴏɴᴏʀO'Bʀɪᴇɴ ma rację, to nie jest prawidłowa odpowiedź.
Mego

2
@ CᴏɴᴏʀO'Bʀɪᴇɴ to css został zapisany jako plik SASS, ponieważ SASS jest językiem skryptowym, czy byłaby to prawidłowa odpowiedź?
fcalderan,

6
Tak, zwykły CSS jest prawidłowym plikiem SASS.
ev3commander

16

JavaScript, 140 143 147 151 151 153 bajtów

   with(document)with(body.appendChild(createElement`canvas`).getContext`2d`)for(i=2;i--;fillRect(i*52,0,26,52))fillStyle=i?"#ef4135":"#0055a4"


Edycje

  • Zaoszczędzono 2 bajty , zastępując 2*i*26je i*52. Dzięki Cᴏɴᴏʀ O'Bʀɪᴇɴ .
  • Zaoszczędzono 4 bajty , refaktoryzując forpętlę. Dzięki produktom ETH .
  • Zaoszczędzono 2 bajty , używając opcji with-statement. Dzięki Dendrobium .
  • Zaoszczędzono 2 bajty , zamieniając przyrost na zmniejszenie. Dzięki Shaun H .
  • Zapisano 3 bajty , zastępując fillStyle=["#0055a4","#ef4135"][i]je i?"#ef4135":"#0055a4".

3
2*i*26może stać się 52*i, nie?
Conor O'Brien

7
@ CᴏɴᴏʀO'Bʀɪᴇɴ Oczywiście, że może. Dzięki. To znacznie poza czasem mojego łóżka.
inserttusernamehere

2
Możesz ogolić 2 bajty, używając withoświadczenia:with(document)with(body.appendChild(createElement`canvas`).getContext`2d`)for(i=0;i<2;fillRect(i++*52,0,26,52))fillStyle=["#0055a4","#ef4135"][i]
Dendrobium,

2
zapisz bajt: x=(d=document).body.appendChild(d.createElementpłótno ).getContext2d;for(i=3;--i;x.fillRect(i*52,0,26,52))x.fillStyle=[,"#ef4135","#0055a4"][i]
Shaun H

2
@Dendrobium To dobrze. Wielkie dzięki.
inserttusernamehere

13

R, 59 bajtów

frame();rect(0:2/3,0,1:3/3,1,,,c("#0055a4",0,"#ef4135"),NA)

Wyświetlane są dane wyjściowe:

wprowadź opis zdjęcia tutaj

Można również zrobić 49 bajtów

barplot(rep(1,3),,0,col=c("#0055a4",0,"#ef4135"))

jeśli nie przeszkadzają ci osie i granice:

wprowadź opis zdjęcia tutaj


2
Współczynnik wydaje się zły. Myślę, że masz stosunek 2: 3 do jednokolorowego prostokąta zamiast stosunku 3: 2 na całej fladze.
Fatalize

Współczynnik można regulować ręcznie, zmieniając rozmiar okna kreślenia.
flodel

3
Aby się zakwalifikować, twój wpis powinien działać „po wyjęciu z pudełka”. W przeciwnym razie każdy może opublikować rozwiązanie 6-pikselowe i powiedzieć „Możesz ręcznie powiększyć”.
Sanchises,

4
Mówisz „siekiery”, ja mówię „maszt flagowy”.

2
@sanchises: Jestem Francuzem i mówię, kurwa. LIBERTE!
flodel

12

Blitz 2D / 3D , 154 108 bajtów

Powoduje to dokładnie to samo, co w przykładzie podanym w pytaniu (z wyjątkiem wygładzania krawędzi na stykach kolorów).

Graphics 800,533
ClsColor 255,255,255
Cls
Color 0,35,149
Rect 0,0,267,533
Color 237,41,57
Rect 533,0,267,533

Dane wyjściowe są wyświetlane i wyglądają tak:

wprowadź opis zdjęcia tutaj


12

Mathematica, 63 94 103 bajty

Kiedy po raz pierwszy zobaczyłem to wyzwanie, pomyślałem: Sweet! Mathematica byłaby do tego idealna! dopóki nie zauważyłem, że wbudowane zostały zbanowane: ”(

Ale poczekaj! Mogę używać wykresów słupkowych!

r=RGBColor;BarChart[{1,1,1},ChartStyle->{r@"#0055a4",White,r@"#ef4135"},BarSpacing->0,AspectRatio->2/3]

(Podziękowania dla Martina Büttnera za zgolenie 5 bajtów, ale dodanie 16)

Wygląda tak:

wprowadź opis zdjęcia tutaj

Jeśli dodasz ,Axes->None, wygląda to tak:

wprowadź opis zdjęcia tutaj

Jeśli nie zależy ci na obramowaniu, możesz użyć tego: (95 bajtów)

r=RGBColor;BarChart[{1,1},ChartStyle->{r@"#0055a4",r@"#ef4135"},BarSpacing->1,AspectRatio->2/3,Axes->None]

Wygląda tak:

wprowadź opis zdjęcia tutaj

Bez osi:

wprowadź opis zdjęcia tutaj


3
Axes->None. Powinieneś także sprecyzować AspectRatio->2/3. Zmiana nazwy RGBColorjest prosta r=RGBColor;...r["..."]. Możesz także użyć notacji przedrostkowej, aby zapisać jeszcze dwa bajty r@"#0055a4".
Martin Ender,

Jeśli nie potrzebujesz konspektu, spróbuj BarChart[{1, 1}, ChartStyle -> {RGBColor["#0055a4"], Red}, BarSpacing -> 1]. Czerwony wygląda wystarczająco blisko.
DavidC,

@DavidCarraher Meh, ponieważ pytanie określa konkretną wartość RGB, którą należy zastosować dokładnie.
Martin Ender

Moim głównym zaleceniem było narysowanie dwóch prostokątów, a nie trzech. Jednak technicznie masz rację co do Red.
DavidC,

Czy granice wokół kratek nie unieważnią tego rozwiązania?
LegionMammal978,

11

JavaScript (ES6) 117 bajtów

Rysuje w konsoli

for(i=c=s=[];i<156;c[i++]=`color:${[,'blue','#fff'][i%3]||(s+=`
`,'red')}`)s+='%c'+'+'.repeat(26);console.log(s,...c)


2
Na 'white'Myślę, że jest krótszy zrobić: #fff. Ponadto kolory czerwony i niebieski muszą pasować do kolorów określonych w specyfikacji
Downgoat

1
Możesz zaoszczędzić kilka bajtów i=c=s=[]zamiast i=0,c=[],s=''po aktualizacji kolorów, które mogą trochę pomóc ...
Dom Hastings

1
@ Vɪʜᴀɴ Podczas wyświetlania tekstu można użyć standardowych kolorów ( redi blue). To drugi punkt, licząc od dołu. Jest to zgodne ze specyfikacją.
Ismael Miguel

@DomHastings Dobra wskazówka, sprytne użycie przymusu. Dzięki!
George Reith,

1
@sysreq Tekst w konsoli ... Nie mam kontroli nad wysokością linii konsoli. Ma 78 znaków, szerokość 52 cm.
George Reith,

10

pb , 68 bajtów

cw[Y!52]{cccw[X!26]{b[77]>}ccccw[X!52]{b[77]>}cw[X!78]{b[77]>}<[X]v}

Wow, wyzwanie, dla którego pb jest naprawdę dobre! Te są nieliczne i dalekie.

Kiedy pisałem specyfikację dla pb, włączyłem kolorowe wydruki głównie jako żart. Język został nazwany na cześć „pędzla”, dlaczego miałby nie robić koloru? Poza programami przykładowymi po raz drugi go użyłem. Jest on zaimplementowany za pomocą kodów ANSI, jak wymaga tego pytanie.

Użyłem „M” jako postaci do wyjścia, ponieważ jest dość gęsty.

Wynik:

Zmieniłem rozmiar zrzutu ekranu w pionie, aby wynosił dwie trzecie jego wysokości, ponieważ litery nie są kwadratowe. Dane wyjściowe wynoszą 78 na 52, ale oryginalny zrzut ekranu wygląda naprawdę źle.

Z komentarzami, wcięciami i śmieciami:

c               # Increase output colour by 1
                # 0 (White) -> 1 (Red)
                # Loop ends with output colour == 1, this is cheaper than
                # setting it back to white every time.

w[Y!52]{        # While the brush's Y coordinate is not 52:
    ccc           # Increase output colour by 3
                    # 1 (Red) -> 4 (Blue)

    w[X!26]{      # While the brush's X coordinate is not 26:
        b[77]       # Write 'M' at the brush's coordinates
        >           # Increase X coordinate by 1
    }             

    cccc          # Increase output colour by 4
                    # 4 (Blue) -> 8 mod 8 = 0 (White)

    w[X!52]{      # While the brush's X coordinate is not 52:
        b[77]       # (same as before)
        >         
    }             

    c             # Increase output colour by 1
                    # 0 (White) -> 1 (Red)

    w[X!78]{      # While the brush's X coordinate is not 78:
        b[77]       # (same as before)
        >
    }

    <[X]          # Set X back to 0
    v             # Increase Y by 1
}

78x30 dostarczy Ci wymiary, które chcesz dla wyjścia końcowego.
Mego

@Mego Tak, ale nie jestem pewien, czy jest to dozwolone.
undergroundmonorail

Wynikowy wynik na xterm w domyślnej czcionce odpowiada określonym wymiarom.
Mego

Czułbym się dziwnie, mierząc wielkość wyjścia konsoli w niczym innym jak „znakach”.
undergroundmonorail

1
Kiedy twoje postacie są 1,2 raza wyższe niż są szerokie, nie robią bardzo dobrych pikseli.
Mego

10

C, 115 bajtów

wprowadź opis zdjęcia tutaj

#define c"[48;2;%d;%d;%dm%9c"
d=255;main(a){while(a++<9)printf(c c c c,0,85,164,0,d,d,d,0,239,65,53,0,0,0,0,10);}

Zawiera materiały niedrukowalne:

00000000: 2364 6566 696e 6520 6322 1b5b 3438 3b32  #define c".[48;2
00000010: 3b25 643b 2564 3b25 646d 2539 6322 0a64  ;%d;%d;%dm%9c".d
00000020: 3d32 3535 3b6d 6169 6e28 6129 7b77 6869  =255;main(a){whi
00000030: 6c65 2861 2b2b 3c39 2970 7269 6e74 6628  le(a++<9)printf(
00000040: 6320 6320 6320 632c 302c 3835 2c31 3634  c c c c,0,85,164
00000050: 2c30 2c64 2c64 2c64 2c30 2c32 3339 2c36  ,0,d,d,d,0,239,6
00000060: 352c 3533 2c30 2c30 2c30 2c30 2c31 3029  5,53,0,0,0,0,10)
00000070: 3b7d 0a                                  ;}.

Aby ten program działał, musi być kilka rzeczy:

  • Terminal obsługuje ESC [48;2;<r>;<g>;<b>msekwencję zmiany znaczenia „truecolor”.
  • Terminal nie jest xterm, ponieważ implementacja powyższego xterm spowoduje nieznacznie nieprawidłowe kolory.
  • Terminal całkowicie ignoruje znaki NUL.

Wygląda również ładniej, jeśli tło twojego terminala jest czarne.

Aby zmienić wysokość flagi, przekaż argumenty wiersza poleceń do programu. Z każdym przekazanym argumentem flaga staje się o jedną linię krótsza. To nie jest błąd, to jest funkcja!

Wynik:

wprowadź opis zdjęcia tutaj


Miałem problem z kompilacją tego gcc(wersja 5.1.1). Jakieś konkretne flagi potrzebne do kompilacji? „ac: 1: 10: ostrzeżenie: ISO C99 wymaga spacji po nazwie makra #define c" \ x1b [48; 2;% d;% d;% dm "
Steve

1
@ Steve czy to ostrzeżenie jest naszym błędem?
Functino,

1
@ Steve Właśnie przetestowałem to ponownie, gcc 5.2.1. Brak flag. Wyprodukował 12 ostrzeżeń, ale stworzył działający plik binarny.
Functino,

przeprosiny - działa dobrze - zostały zdezorientowane ostrzeżeniami (i faktem, że kod wygląda całkiem tajemniczo dla początkującego C jak ja)
Steve

9

MATLAB, 82 79 78 bajtów

x=[0 1 1 0];y(3:4)=2;fill(x,y,[0 85 164]/255,x+1,y,'w',x+2,y,[239 65 53]/255)

Dane wyjściowe wyglądają następująco:


1
Która wersja MATLAB? Nie działa na r2013a, ponieważ kolory muszą być liczbami dziesiętnymi z zakresu [0,1].
Tom Carpenter,

1
Poniższy wiersz działa fill(x,y,[0 85 164]/255,x+1,y,'w',x+2,y,[239 65 53]/255)i oszczędza 2 bajty. :) Używałbym również średników zamiast znaków nowej linii, aby uniknąć drukowania dodatkowych rzeczy.
Tom Carpenter

1
@TomCarpenter I odstępy na skali kolorów 0-1, minęło trochę czasu, odkąd musiałem określić kolory. Jeśli chodzi o średniki / znaki nowej linii, wybrałem czytelność zamiast pisania na konsoli, ale zmieniłem swoją odpowiedź
koszt z

9

Visual Basic + Excel, 618 137 bajtów

Ciekawe, jak można grać w golfa.

EDYCJA: Zaspokojenie ciekawości, dzięki @Neil i @JimmyJazzx, 618 bajtów spadło do 137 bajtów

Sub a(): Columns("A:C").ColumnWidth = 26: Range("A1:A13").Interior.Color = RGB(0, 85, 164): Range("C1:C13").Interior.Color = RGB(239, 65, 53): End Sub

Flaga programu Excel


1
Nagrywanie makra skutkuje strasznie nieefektywnym kodem. Spróbuj Range("A1:C13").Interior.ColorIndex = 5i Range("G1:I13").Interior.ColorIndex = 3co wydaje się wystarczające.
Neil,

2
Przepraszam, że to był Excel 2003 i zapomniałem ActiveWorkbook.Colorspodać dokładną wartość RGB. Excel 2007 ma dodatkowe opcje kolorów, ale nie znam ich od razu.
Neil,

1
Dostaję 137 bajtów z kilkoma szybkimi zmianami. Myślę, że możesz to jeszcze bardziej ograniczyć, ale to łatwe zmiany. Sub a():Columns("A:C").ColumnWidth=26:Range("A1:A13").Interior.Color=RGB(0,85,164):Range("C1:C13").Interior.Color=RGB(239,65,53):End Sub
JimmyJazzx

Dostaję 135 zSub a:Columns("A:C").ColumnWidth=26:Range("A1:A13").Interior.Color=RGB(0,85,164):Range("C1:C13").Interior.Color=RGB(239,65,53):End Sub
Joey

9

CSS, 102 110 111 114 bajtów

*{background:linear-gradient(90deg,#0055a4 33%,#fff 33%,#fff 66%,#ef4135 66%) 0 0/78px 52px no-repeat


1
* *{background:linear-gradient(90deg,#0055a4,#0055a4 33%,#fff 33%,#fff 66%,#ef4135 66%) 0 0/78px 52px no-repeat}- jeden bajt krótszy
user2428118,

1
właściwie wystarczy jeden * :) Dzięki!
Thomas Eschemann,

1
+1; Możesz zapisać kolejny bajt, usuwając końcowy }.
inserttusernamehere

1
Możesz usunąć pierwszy kolor, oszczędzasz 8 bajtów.
Awashi,

Można zastąpić ostatni 66%z 0.
Mr_Green,


8

iKe , 43 bajty

,(0 0;"|"\"#0055A4|#FFF|#EF4135";52#,&3#26)

Jest to przykład programu iKe „surowej krotki” - to tylko opis pochodzenia ( 0 0), palety ( 3 7#"#0055A4#FFFFFF#EF4135") i mapy bitowej ( +52#'&3#26). Musisz zawinąć taki opis w funkcję lub użyć odniesień do widoków, jeśli chcesz go animować.

Paleta jest bardzo prostym sposobem na utworzenie serii kolorów CSS, równoważnych szesnastkowo specyfikacji.

  3 7#"#0055A4#FFFFFF#EF4135"
("#0055A4"
 "#FFFFFF"
 "#EF4135")

Gdyby wymagania dotyczące kolorów były mniej rygorystyczne, moglibyśmy użyć jednej z wbudowanych palet iKe i zaoszczędzić znaczną liczbę znaków:

windows@7 0 4

flaga

Wypróbuj w swojej przeglądarce .

Edytować:

Zapisano jeden bajt, używając krótkiego #FFFkoloru CSS dla białego paska:

,(0 0;3 7#"#0055A4#FFFFFF#EF4135";+52#'&3#26)
,(0 0;"|"\"#0055A4|#FFF|#EF4135";+52#'&3#26)

Jeśli ktoś jest zainteresowany grą z iKe, w repozytorium github znajduje się instrukcja . oto kolejny problem, który rozwiązałem za pomocą iKe.

Edycja 2:

Zapisano jeden bajt z prostszym sposobem na zbudowanie mapy bitowej:

+52#'&3#26
52#,&3#26

Moje pytanie w OP nie zostało udzielone, ale dla przypomnienia, jeśli dozwolone są bardziej elastyczne wymagania dotyczące kolorów, ten program miałby 30 bajtów przy użyciu palety Windows 3.1:

,(0 0;windows@7 0 4;52#,&3#26)

flag2

Od czasu opublikowania tego problemu iKe zyskał funkcję, która automatycznie wyśrodkowuje tekstury narysowane bez pozycji, co może zaoszczędzić kolejne 3 bajty, ale byłoby to niezgodne z regułami:

,(;windows@7 0 4;52#,&3#26)

7

Oktawa, 77 76 bajtów

s(98,49)=0;imshow(cat(3,[s w=s+255 w-18],[s+35 w s+41],[s+149 w s+57])/255);

Wyświetla obraz:

wprowadź opis zdjęcia tutaj


7

Przetwarzanie, 100 bajtów

size(78,52);background(255);noStroke();fill(#0055A4);rect(0,0,26,52);fill(#EF4135);rect(52,0,26,52);

Wyświetla to: Francja

(Naiwne rozwiązanie jest krótsze niż moje pierwsze).


Myślę, że polecenia rysowania przetwarzania mogą wyjść przed wypychaniem pikseli tutaj:size(78,52);noStroke();int[]p={0xFF0055A4,255,0xFFEF4135};for(int c:p){translate(26,0);fill(c);rect(0,0,-26,52);}
JohnE

@JohnE Lol, tak, właśnie to zauważyłem.
geokavel

@JohnE Nawet moje super podstawowe rozwiązanie jest krótsze niż twoje!
geokavel

haha- wygląda na to, że oboje to
skomplikowaliśmy

co powiesz na nadużywanie instrukcji wagi? Działa to na sketchpad.cc, ale może się zepsuć w Przetwarzaniu 3:size(78,52);scale(26,52);fill(#EF4135);stroke(#0055A4);rect(0,-1,0,2);stroke(255);rect(1,-1,3,3);
JohnE


7

PHP, 70 bajtów

0000000: 424d 0000 0000 0000 0000 2300 0000 0c00  BM........#.....
0000010: 0000 2001 c000 0100 0800 a455 00ff ffff  .. ........U....
0000020: 3541 ef3c 3f66 6f72 283b 3665 343e 2469  5A.<?for(;6e4>$i
0000030: 3b29 6563 686f 2063 6872 2824 692b 2b2f  ;)echo chr($i++/
0000040: 3936 2533 293b                           96%3);

Powyżej jest zrzut heksowy, który można odwrócić xxd -r. Alternatywnie można go również wygenerować za pomocą następującego skryptu PHP:

<?=hex2bin('424d0000000000000000230000000c0000002001c00001000800a45500ffffff3541ef3c3f666f72283b3665343e24693b296563686f206368722824692b2b2f39362533293b');

Przyjmuję ustawienia domyślne, ponieważ nie mają one pliku .ini (możesz wyłączyć lokalne .ini z -nopcją). Tworzy obraz .bmp (288 x 192), który powinien zostać przesłany do pliku. Jest to tak duże, jak to tylko możliwe, bez wpływu na liczbę bajtów.


Przykładowe użycie

$ xxd -r in.hex > france.php
$ php -n france.php > out.bmp
$ out.bmp

Wynik

Francuska flaga


Te kolory nie wyglądają dobrze. Czy używają wartości RGB określonych w pytaniu?
Klamka

@Doorknob Oni robią. Począwszy od bajtu 26, definiowana jest trzy wartościowa paleta kolorów (bgr): A45500, FFFFFF, 3541EF.
primo,

6

ShaderToy (GLSL), 147 bajtów

void mainImage(out vec4 o,vec2 i){float x=i.x/iResolution.x*3.0;vec3 w=vec3(255,255,255);o=vec4((x<1.0?vec3(0,85,164):x<2.0?w:vec3(239,65,53))/w,1);}

Zobacz tutaj

Niezbyt ekscytujące. Jestem pewien, że są sposoby na bardziej golfa; Zrobię sobie crack, kiedy wrócę do domu.


3
Link przekierowuje na shadertoy.com/error : /
Quentin,
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.