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:
- 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 N
jest 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
<style>body { text-align: left !important} #answer-list { padding: 10px; width: 290px; float: left; } #language-list { padding: 10px; width: 290px; float: left; } table thead { font-weight: bold; } table td { padding: 5px; }</style><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="language-list"> <h2>Shortest Solution by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr> </thead> <tbody id="languages"> </tbody> </table> </div> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr> </thead> <tbody id="answers"> </tbody> </table> </div> <table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table><script>var QUESTION_ID = 64140; var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe"; var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk"; var OVERRIDE_USER = 42156; var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page; function answersUrl(index) { return "https://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER; } function commentUrl(index, answers) { return "https://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER; } function getAnswers() { jQuery.ajax({ url: answersUrl(answer_page++), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { answers.push.apply(answers, data.items); answers_hash = []; answer_ids = []; data.items.forEach(function(a) { a.comments = []; var id = +a.share_link.match(/\d+/); answer_ids.push(id); answers_hash[id] = a; }); if (!data.has_more) more_answers = false; comment_page = 1; getComments(); } }); } function getComments() { jQuery.ajax({ url: commentUrl(comment_page++, answer_ids), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { data.items.forEach(function(c) { if (c.owner.user_id === OVERRIDE_USER) answers_hash[c.post_id].comments.push(c); }); if (data.has_more) getComments(); else if (more_answers) getAnswers(); else process(); } }); } getAnswers(); var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/; var OVERRIDE_REG = /^Override\s*header:\s*/i; function getAuthorName(a) { return a.owner.display_name; } function process() { var valid = []; answers.forEach(function(a) { var body = a.body; a.comments.forEach(function(c) { if(OVERRIDE_REG.test(c.body)) body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>'; }); var match = body.match(SCORE_REG); if (match) valid.push({ user: getAuthorName(a), size: +match[2], language: match[1], link: a.share_link, }); else console.log(body); }); valid.sort(function (a, b) { var aB = a.size, bB = b.size; return aB - bB }); var languages = {}; var place = 1; var lastSize = null; var lastPlace = 1; valid.forEach(function (a) { if (a.size != lastSize) lastPlace = place; lastSize = a.size; ++place; var answer = jQuery("#answer-template").html(); answer = answer.replace("{{PLACE}}", lastPlace + ".") .replace("{{NAME}}", a.user) .replace("{{LANGUAGE}}", a.language) .replace("{{SIZE}}", a.size) .replace("{{LINK}}", a.link); answer = jQuery(answer); jQuery("#answers").append(answer); var lang = a.language; lang = jQuery('<a>'+lang+'</a>').text(); languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang.toLowerCase(), user: a.user, size: a.size, link: a.link}; }); var langs = []; for (var lang in languages) if (languages.hasOwnProperty(lang)) langs.push(languages[lang]); langs.sort(function (a, b) { if (a.lang_raw > b.lang_raw) return 1; if (a.lang_raw < b.lang_raw) return -1; return 0; }); for (var i = 0; i < langs.length; ++i) { var language = jQuery("#language-template").html(); var lang = langs[i]; language = language.replace("{{LANGUAGE}}", lang.lang) .replace("{{NAME}}", lang.user) .replace("{{SIZE}}", lang.size) .replace("{{LINK}}", lang.link); language = jQuery(language); jQuery("#languages").append(language); } }</script>
(0, 35, 149)
,(255, 255, 255)
,(237, 41, 57)
.echo 🇫🇷
nie dość dużyOdpowiedzi:
CJam,
2322 bajtówPowyż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.
Jak to działa
W obu programach używamy sekwencji ucieczki ANSI
\x9bXYm
- gdzieX
jest3
dla koloru pierwszego planu i koloru4
tła orazY
określa kolor, który ma być użyty - do przełączania między trzema kolorami flagi.Drugi program jest podobny.
Wynik
źródło
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.
Dane wyjściowe wyglądają następująco:
Alternatywnie:
Bash z narzędziami OSX, 56
dc
Wyrażenie:3^26-1
i drukuje go w trójce22222222222222222222222222
3^26
. Dane wyjściowe w potrójnym to jest1111111111111111111111111100000000000000000000000000
tr
następnie tłumaczy 210 znaków na 🔵⚪️🔴.yes
wypisuje ten wiersz w nieskończoność.sed 26q
zatrzymuje produkcję w 26 liniach.źródło
Desmos,
3012 bajtówWypróbuj online.
Nie jestem do końca pewien, czy jest to poprawne, daj mi znać, jeśli są jakieś problemy.
źródło
Python 2, 47 bajtów
Zawiera niedrukowalne - oto zrzut heksadecymalny (odwracalny z
xxd -r
):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:
źródło
in [0]
->in[0]
\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.print("\x1b[3%s;1mF"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
.█
Postać wygląda nieco ładniej, EGprint("\x1b[3%s;1m█"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
HTML / SVG, 76 bajtów
87 88 121 122 149Zapisano 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
Korzystanie z wielu nadużyć w składni HTML może być dość krótkie.
Zrzut ekranu wyjścia:
Lub spróbuj (upewnij się, że Twoja przeglądarka obsługuje SVG):
źródło
<svg><rect width=78 height=52 fill="#ef4135"/><rect width=52 height=52 fill="#fff"/><rect width=26 height=52 fill=#0055a4>
fill=#0055a4 />
też działa (nie"
), oszczędzając cały bajt.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.
Pokaż fragment kodu
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):
źródło
Bash + ImageMagick,
607773 bajtów(ugh, +17 znaków ze względu na wymagania dotyczące kolorów, których wcześniej nie zauważyłem ...)
a
Dane wyjściowe do pliku , w formacie netpbm:Może również wyświetlać w formacie PNG, jeśli zmienisz nazwę pliku na
a.png
(+4 znaki).Wynik:
źródło
convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"
-scale
zamiast-sample
; także odwrotny ukośnik nie wydaje się koniecznyLaTeX, 139 bajtów
Dzięki @WChargin za oszczędność 21 bajtów.
Spowoduje to wydrukowanie następującego obrazu 12 cm * 8 cm na stronie A4:
Pamiętaj, że „Strona 1” jest również wydrukowana na dole strony
źródło
asymptote
rozwiązanie ...s.\newcommand\z[1].\def\z#1
aby 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\input color
\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}
Pyth, 27 bajtów
Istnieje kilka niedrukowalnych znaków, więc oto zrzut heksowy:
Spowoduje to utworzenie pliku o
o.png
szerokości dokładnie 78 pikseli i wysokości 52 pikseli:Wyjaśnienie:
źródło
save it as an image o.png
, ale nigdzie nie ma „.png”?python3 pyth.py code.pyth
, możesz go znaleźć w tym samym katalogu.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).
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):
Sprawdź jego ważność na: https://html5.validator.nu/
Wydruk wyniku:
źródło
>
?style="..."
jeśli właśnie o to chodzi w drugim przykładzie.<html>
, nie<head>
, nie<body>
, nie</tr>
, nie</td>
i nie ma zamknięcia wszystkich brakujących tagów.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ć.TI-Basic,
524442 bajty(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:
Jeśli zacienienie jest nieprawidłowe dla wyzwania, daj mi znać!
Bez pierwszych 2 wierszy wygląda to tak:
źródło
ffmpeg,
110113116117119108 108100 bajtówWyświetl za pomocą ffplay 100 bajtów:
Zapisano do pliku przy użyciu ffmpeg, 108 bajtów:
Obecna wersja polecenia przerwie się z błędem, ALE wyświetli pojedynczy obraz „.png”, taki sam jak pokazano poniżej.
źródło
white
zamiast#ffffff
: wartości powinny być takie same.CSS, 127
128144bajtówNie potrzebujesz innego tagu, działa wyłącznie z
body
elementem.Edycje
display:block;
i trochę;
.}
.źródło
JavaScript, 140
143147151 151153bajtówEdycje
2*i*26
jei*52
. Dzięki Cᴏɴᴏʀ O'Bʀɪᴇɴ .for
pętlę. Dzięki produktom ETH .with
-statement. Dzięki Dendrobium .fillStyle=["#0055a4","#ef4135"][i]
jei?"#ef4135":"#0055a4"
.źródło
2*i*26
może stać się52*i
, nie?with
oś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]
x=(d=document).body.appendChild(d.createElement
płótno).getContext
2d;for(i=3;--i;x.fillRect(i*52,0,26,52))x.fillStyle=[,"#ef4135","#0055a4"][i]
R, 59 bajtów
Wyświetlane są dane wyjściowe:
Można również zrobić 49 bajtów
jeśli nie przeszkadzają ci osie i granice:
źródło
Blitz 2D / 3D ,
154108 bajtówPowoduje to dokładnie to samo, co w przykładzie podanym w pytaniu (z wyjątkiem wygładzania krawędzi na stykach kolorów).
Dane wyjściowe są wyświetlane i wyglądają tak:
źródło
Mathematica,
6394103 bajtyKiedy 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!
(Podziękowania dla Martina Büttnera za zgolenie 5 bajtów, ale dodanie 16)
Wygląda tak:
Jeśli dodasz
,Axes->None
, wygląda to tak:Jeśli nie zależy ci na obramowaniu, możesz użyć tego: (95 bajtów)
Wygląda tak:
Bez osi:
źródło
Axes->None
. Powinieneś także sprecyzowaćAspectRatio->2/3
. Zmiana nazwyRGBColor
jest prostar=RGBColor;...r["..."]
. Możesz także użyć notacji przedrostkowej, aby zapisać jeszcze dwa bajtyr@"#0055a4"
.BarChart[{1, 1}, ChartStyle -> {RGBColor["#0055a4"], Red}, BarSpacing -> 1]
. Czerwony wygląda wystarczająco blisko.JavaScript (ES6) 117 bajtów
Rysuje w konsoli
źródło
'white'
Myślę, że jest krótszy zrobić:#fff
. Ponadto kolory czerwony i niebieski muszą pasować do kolorów określonych w specyfikacjii=c=s=[]
zamiasti=0,c=[],s=''
po aktualizacji kolorów, które mogą trochę pomóc ...red
iblue
). To drugi punkt, licząc od dołu. Jest to zgodne ze specyfikacją.pb , 68 bajtów
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:
źródło
C, 115 bajtów
Zawiera materiały niedrukowalne:
Aby ten program działał, musi być kilka rzeczy:
ESC [48;2;<r>;<g>;<b>m
sekwencję zmiany znaczenia „truecolor”.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:
źródło
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 "MATLAB,
827978 bajtówDane wyjściowe wyglądają następująco:
źródło
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.Visual Basic + Excel,
618137 bajtówCiekawe, jak można grać w golfa.
EDYCJA: Zaspokojenie ciekawości, dzięki @Neil i @JimmyJazzx, 618 bajtów spadło do 137 bajtów
źródło
Range("A1:C13").Interior.ColorIndex = 5
iRange("G1:I13").Interior.ColorIndex = 3
co wydaje się wystarczające.ActiveWorkbook.Colors
podać dokładną wartość RGB. Excel 2007 ma dodatkowe opcje kolorów, ale nie znam ich od razu.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
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
CSS, 102
110111114bajtówźródło
* *{background:linear-gradient(90deg,#0055a4,#0055a4 33%,#fff 33%,#fff 66%,#ef4135 66%) 0 0/78px 52px no-repeat}
- jeden bajt krótszy}
.66%
z0
.Dyalog APL (
4744)Wynik:
źródło
2*8 11 10
?iKe , 43 bajty
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.
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:
Wypróbuj w swojej przeglądarce .
Edytować:
Zapisano jeden bajt, używając krótkiego
#FFF
koloru CSS dla białego paska: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:
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:
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:
źródło
Oktawa,
7776 bajtówWyświetla obraz:
źródło
Przetwarzanie, 100 bajtów
Wyświetla to:
(Naiwne rozwiązanie jest krótsze niż moje pierwsze).
źródło
size(78,52);noStroke();int[]p={0xFF0055A4,255,0xFFEF4135};for(int c:p){translate(26,0);fill(c);rect(0,0,-26,52);}
size(78,52);scale(26,52);fill(#EF4135);stroke(#0055A4);rect(0,-1,0,2);stroke(255);rect(1,-1,3,3);
Rubin,
564745 bajtówASCII
źródło
PHP, 70 bajtów
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:Przyjmuję ustawienia domyślne, ponieważ nie mają one pliku .ini (możesz wyłączyć lokalne .ini z
-n
opcją). 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
Wynik
źródło
ShaderToy (GLSL), 147 bajtów
Zobacz tutaj
Niezbyt ekscytujące. Jestem pewien, że są sposoby na bardziej golfa; Zrobię sobie crack, kiedy wrócę do domu.
źródło