var QUESTION_ID = 85141; // Obtain this from the url
// It will be like https://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 41859; // This should be the user ID of the challenge author.
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,]*[^\s,]),.*?(-?\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,});});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;if (! /<a/.test(lang)) lang = '<i>' + lang + '</i>';lang = jQuery(lang).text().toLowerCase();languages[lang] = languages[lang] || {lang: a.language, user: a.user, size: a.size, link: a.link, uniq: lang};});var langs = [];for (var lang in languages)if (languages.hasOwnProperty(lang))langs.push(languages[lang]);langs.sort(function (a, b) {if (a.uniq > b.uniq) return 1;if (a.uniq < b.uniq) 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);}}
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;}
<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/Sites/codegolf/all.css?v=617d0685f6f3"><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><div id="language-list"><h2>Winners 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><table style="display: none"><tbody id="answer-template"><tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td><a href="{{LINK}}">{{SIZE}}</a></td></tr></tbody></table><table style="display: none"><tbody id="language-template"><tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td><a href="{{LINK}}">{{SIZE}}</a></td></tr></tbody></table>
#0048e0
Odpowiedzi:
Python 3,
190172171169167160159147143 bajtówKorzystanie z PIL w wersji 1.1.7, która ma przestarzałą, ale nie usuniętą metodę przesunięcia.
Tworzy obraz 25 * 18 pikseli wypełniony czerwonym, a następnie rysuje prostokąt 23 * 16 pikseli wypełniony niebieskim z białym konturem jednego piksela. Następnie przesuwa obraz o (9,9), który owija się na krawędziach, zmienia rozmiar na 100 * 72, a następnie pokazuje w oknie.
Flaga przed przesunięciem:
(zmieniono na 100 * 72)
Wynik:
Ożywiony:
Edycja1: Gra w golfa 18 bajtów, usuwając kadrowanie, początkowo tworząc obraz 25 * 18.
Edycja2: Grał w golfa 1 bajt, używając
#fff
zamiastwhite
.Edycja3: Gra w golfa 2 bajty, aliasingując import.
Edycja4: Gra w golfa 2 bajty, usuwając drugi argument metody offset.
Edycja5: Grał w golfa 7 bajtów, pokazując obraz zamiast zapisywać. (wymaga zainstalowanego imagemagick na Uniksie)
Edycja6: 1 bajt w golfa, przepisując import.
Edycja7: Gra w golfa 12 bajtów, ponownie przepisując import. (dzięki @Dennis)
Edycja8: Dodano animację.
Edycja9: Zaktualizowano animację, ponieważ brakowało ostatniej klatki.
Edycja10: Grał w golfa 4 bajty dzięki Albertowi Renshawowi!
źródło
from PIL.ImageDraw import*
,I
staje sięImage
iD.Draw
staje sięDraw
, oszczędzając 11 bajtów.Kod maszynowy trybu rzeczywistego x86 dla DOS COM,
69656362 bajtówKod ma być wykonywany jako plik wykonywalny COM systemu DOS.
Szczególne podziękowania
Kod maszynowy (w bajtach szesnastkowych)
Źródło zestawu
Źródło jest dla NASM.
źródło
_loop: jcxz _loop
. Możesz także wyciąć 2 bajty z końca fragmentu danych, jeśli zmienisz kolejność ładowaniacx
idi
mov bx, 320
i przeniosłem 320 doadd di, 320
(poprzednioadd di, bx
).jcxz _cycle
razu,xchg ax,cx
aby nie ładować bajtów poza koniec danych. A tam niektóre wprowadzające w błąd komentarze w źródle:;dx = row
.dx
nie jest nigdzie używany w kodzie.C,
194191183 bajtów-3 dodanie jednego
@
NA#define A
-8 dodanie
[
na#define C
Stosowanie
Wynik
ważny na podstawie tego komentarza z PO
Wyjście podwójnej wielkości, 204 bajty
źródło
Excel VBA,
254228153 bajtówNaprawdę nie mogłem znaleźć sposobu, aby ustawić rozmiar kolumny / wiersza na piksele (tym samym czyniąc je kwadratowymi) ze względu na sposób, w jaki Excel to obsługuje, więc najpierw powinny być ładne i kwadratowe.
Edycja 1: Zamieniono RGB na zwracane wartości kolorów, -26 bajtów
Edycja 2: Próbowałem dodać tyle sugestii, ile mogłem, -75 bajtów. Nie mogłem użyć
&48e0
jako koloru i nie jestem pewien, dlaczego. Dziękuję wszystkimObrazek:
źródło
0.2cm
. Zostanie to zachowane, gdy przełączysz się z powrotem, i nie musisz próbować wypracowywać dziwnych proporcji Excela :-) Przy okazji, jeśli chcesz więcej fajnych sztuczek Excela, spójrz na wideo Joela Spolsky'ego „Ssisz w Excelu”.MATL ,
5756524948 bajtówDaje to następujący rysunek (testowany z kompilatorem działającym na Matlabie i Octave).
EDYCJA: Możesz eksperymentalnie wypróbować w MATL Online! (może być konieczne ponowne załadowanie strony, jeśli początkowo nie działa).
Jak to działa
źródło
CSS,
285284264 bajtówZapisano 1 bajt dzięki @insertusernameherehere.
Zaoszczędzono 20 bajtów dzięki @ user2428118, usuwając wszystkie
px
s. Pamiętaj, że wymaga to renderowania strony w trybie dziwactw, więc nie działa w urywkach stosu.Mógłbym skopiować podejście Pythona do zawijania obrazu z przesunięciem, ale nie byłoby to interesujące.
Nie golfowany:
Wykorzystuje pseudoelementy (elementy, które nie są napisane w HTML)
::before
i::after
tworzy linie na fladze. Powodem, dla którego działa bez HTML, jest to, że w HTML5 elementy<html>
i<body>
są opcjonalne, więc przeglądarki automatycznie je tworzą, jeśli nie są obecne.Więcej zabawy:
Pokaż fragment kodu
źródło
white
go#fff
.px
wszędzie.<!doctype html>
!Bash + Imagemagick 7,
94908685 bajtówmagick -size 84x56 xc:#0048e0 ${s=-splice 8x8}+28+28 -background \#d72828 $s+32+32 x:
Zaoszczędzono 8 bajtów dzięki @manatwork i 1 bajt dzięki @ GlennRanders-Pehrson
źródło
x:
zamiast nazwy pliku wyjściowego,convert
wyświetli wynik w oknie, co jest również dopuszczalne. A wystarczy po prostu uciec ostry, nie ma potrzeby cytować:\#d72828
.bash
stronie można zaoszczędzić kolejne 4 znaki:convert -size 84x56 xc:#0048e0 ${s=-splice 8x8}+28+28 -background \#d72828 $s+32+32 x:
.${s=-splice 8x8}+56
?+56
jest traktowane jako+56+0
nie+28+28
.ZX Spectrum BASIC,
21014192 bajtówRozmiar określony jako rozmiar programu BASIC na taśmie przez
SAVE
. Wiele zasług golfowych dla niektórych członków grupy ZX Spectrum na Facebooku , w szczególności @impomatic i Johan Koelman.źródło
PAPER
iBRIGHT
przynosząc tak wiele dobrych wspomnień :-)FOR
, żeNOT
itd. Zajmą tylko 1, a może 2 bajty każdyFOR
ma dokładnie jeden bajt. Liczby są jednak „blokowane”, ponieważ są przechowywane zarówno w postaci tekstowej, jak i binarnej i zajmują 5 bajtów więcej, niż można się spodziewać, dlategoNOT PI
zamiast zera i tym podobnych.Zespół ZX Spectrum Z80, 65 bajtów
źródło
Minecraft 1.10.2, 734 znaków
Może to być 734 znaków, ale jak dotąd jest to jedyne zgłoszenie wykonane z prawdziwej wełny!
Przejdź do około -5x -5z, wklej do bloku poleceń Impulse, ustaw na „Always Active” i naciśnij Gotowe.
Rozpiętość flag od 0, 0 do 100, 72; i znajduje się 3 bloki powyżej bloku poleceń, jak umieszczony. To rzuca cień dość duży , a potwory tarło pod nią. Jednak, czy jest to dokładne w przypadku Islandii, nie wiadomo.
Uczciwe ostrzeżenie - zabije wszystkich
MinecartCommandBlock
na świecie w celu uratowania czterech postaci. Nie uruchamiaj tego w świecie, do którego jesteś zbyt przywiązany.Używane polecenia sumator MrGarretto za i tweaked wyjście A trochę (808 -> 734)
źródło
Logo,
216188 bajtówKorzystanie z implementacji Calormen.com . Dla was, purystów, implementacja wykorzystuje pewne wygładzanie krawędzi, które nieco wtapia krawędzie. Zmarnowałem 3 bajty, chowając żółwia, więc to powinno to nadrobić.
Można to znacznie zmniejszyć, jeśli implementacja Logo pozwala ustawić rozmiar okna. Następnie możesz
wrap
i zmusić żółwia pługiem, aby wykonał krzyż w czterech pociągnięciach, i pomiń konieczność przycinania go ramką.źródło
Java 8,
449447 bajtów:Odpowiedź bardzo późna, a zarazem najdłuższa tutaj. Wykorzystuje
java.awt.Graphics
klasę do utworzenia i otwarcia okna z flagą, która jest utworzona przez 5 całkowitych prostokątów składających się z 1 dla niebieskich bloków, 2 dla białych pasków i 2 dla czerwonych pasków. Wykorzystuje stosunek 7 pikseli: 1. Innymi słowy, dla każdej jednostki używa się 7 pikseli. Oto obraz danych wyjściowych na komputerze Macintosh z systemem OS X 10.11:Teraz, aby znaleźć sposób na odrobinę golfa ...
źródło
paint
zastąpić zamiastpaintComponent
. Rozważ użycie anonimowej klasy dla JPanel. Rozważ skorzystanie z BufferedImage i wyjście do pliku.Blue
jako 1 ogromny prostokąt jako tło. Właśnie pomieszałem tę i inną wersję, którą stworzyłem w Pythonie. Niezależnie od tego, dziękuję za inne wskazówki! :)JPanel
, po prostu zastąpJFrame
. Jeśli to zrobić i po prostu zastąpićpaint
, nie trzeba huśtawka, tylko AWT, więc zmienićJFrame
sięFrame
i usunąć importu. Nie dzwońsuper.paint
. Zmień układ głównej metody; przenieśćsetSize
dopaint
sposobu naszegoFrame
, usuń zmiennąJ
i dołącz.setVisible(true)
do końca anonimowy klasy. Na koniec zmień.setVisible(true)
nashow()
, tak, jest to przestarzała metoda, ale jest krótsza. Użyj a,interface
aby usunąćpublic
metodę główną.import java.awt.*;interface A{static void main(String[]a){new Frame(){public void paint(Graphics G){setSize(175,119);G.setColor(new Color(0,72,224));G.fillRect(0,0,175,126);G.setColor(Color.WHITE);G.fillRect(49,0,28,126);G.fillRect(0,49,175,28);G.setColor(new Color(215,40,40));G.fillRect(56,0,14,126);G.fillRect(0,56,175,14);}}.show();}}
setBackground(color)
(również rozmiar był nadal nieprawidłowy). Teraz o 317:import java.awt.*;interface A{static void main(String[]a){new Frame(){public void paint(Graphics G){setSize(175,126);setBackground(new Color(0,72,224));G.setColor(Color.WHITE);G.fillRect(49,0,28,126);G.fillRect(0,49,175,28);G.setColor(new Color(215,40,40));G.fillRect(56,0,14,126);G.fillRect(0,56,175,14);}}.show();}}
R,
197195187 bajtówWcięte, z nowymi liniami i objaśnieniami:
Edycja : okazuje się
frame()
, w przeciwieństwie doplot()
lubplot.new()
domyślnie nie dodaje obramowania do fabuły, co oznacza, żebty="n"
tutaj nie było to konieczne.źródło
8-bitowy plik wykonywalny Atari, 123 bajty
Kolejny wpis „tylko dla zabawy”, ten program jest przeznaczony do uruchamiania na 8-bitowym komputerze lub emulatorze Atari. Na przykład, aby załadować program na Atari800, po prostu uruchom:
Kod maszynowy (w bajtach szesnastkowych)
Kod źródłowy asemblera (można skompilować za pomocą MADS ):
Jak to działa:
Program wykorzystuje niestandardową listę wyświetlania opartą na trybie ANTIC 8 (40 pikseli na linię, 2 bpp). Powtarzające się linie są ładowane z tego samego miejsca w pamięci. Po skonfigurowaniu wyświetlacza program wchodzi w nieskończoną pętlę.
Zrzut ekranu:
źródło
FFmpeg,
339184 bajtówSpróbuję zagrać w golfa w dół .. dalej.
źródło
Python,
119118114112 bajtówNic specjalnego, proste:
Wyjście jako binarny PPM, użycie
print
znak cudzysłowu i\0
można go użyć zamiast\x00
Jeśli ktoś wie, jak bezpośrednio użyć niedrukowalnego znaku ASCII, prosimy o informację.
źródło
b,w,r="\0Hà"*28,"ÿ"*12,"×(("*8
i używam Python 3, ale to nie działa.JavaScript, 267 bajtów
źródło
Java, 335 bajtów
Ta funkcja to
I zapisuje pożądany obraz jako
f.png
o rozmiarze 100 x 72(Pamiętaj, że nie jest to bezpośredni konkurent w stosunku do odpowiedzi R. Kapa , ponieważ zapisuje plik i nie wyświetla obrazu na ekranie)
Oto wersja bez golfa, którą można skompilować i uruchomić:
Uwaga dodatkowa dotycząca pokrewnych pytań: Może należy stworzyć wyzwanie, aby pomalować flagi
w tym samym czasie:
źródło
SVG + JavaScript,
190165164 bajtówŻaden ekspert,
powtarzanie jednej ścieżki tylko w celu zmiany koloru i szerokości linii wygląda głupiojavascript ftw!Bardziej czytelny:
źródło
path d="m0,0h100v72H0"
zamiast prostokąta, aby zapisać dwa bajty. Podobnie użyjM0 36H100M36 0V72
do danych drugiej ścieżki, co pozwala zaoszczędzić kolejne pięć bajtów. I możesz upuścićstyle
atrybut na rzecz zadeklarowania obustroke-width
istroke
jako atrybutów, aby zaoszczędzić kolejne pięć bajtów.Przetwarzanie , 136 bajtów
Nie golfił
Wynik:
źródło
fill
irect
zamiastsize
ibackground
. 134 bajty:noStroke();fill(#0048e0);rect(0,0,100,72);fill(255);rect(0,28,100,16);rect(28,0,16,72);fill(#d72828);rect(0,32,100,8);rect(32,0,8,72);
fill(-1)
jest o jeden bajt krótszy niżfill(255)
Mathematica
174157 bajtówBez wbudowanych:
157 bajtów
lub alternatywnie
232 bajty
źródło
u=Unitize;c=ConstantArray
etc ^ _ ^CountryData["Iceland", "Flag"]
JavaScript (ES6), 231
240Kod we fragmencie poniżej. Uruchom go, aby przetestować.
źródło
Zespół ZX Spectrum Z80, 51 bajtów
https://github.com/ralphbecket/Z80/blob/master/IcelandFlag/IcelandFlag.asm
źródło
J,
868483 bajtówPodejście jest takie samo jak @ Gábor Fekete's z Pythonem.
Lewy argument
colors
zaviewmat
to tablica wartości RGB, w naszym przypadku:Właściwym argumentem jest macierz wskaźników
colors
.(_9 _9 |. matrix)
nakazuje przesunięciematrix
9 elementów w każdym wymiarze.Straszna konstrukcja
(border ([,~[,.~[,[,.]) matrix)
owijamatrix
się liczbąborder
.I
(14 21 $ 1)
tworzy matrycę 14 × 21 z nich.Dane wyjściowe są wyświetlane w osobnym oknie o zmiennym rozmiarze, domyślnie dość dużym.
Dzięki
mile - zapisano 2 bajty przy zmianie kolejności kolorów, wykorzystano funkcję
,
powielania liczb (255) do uzgodnienia kształtu.źródło
14 21
(18 25 - 4 4
). poprawianie ... dziękuję!(255,0 72 224,:215 40 40)viewmat _9 _9|.2(b=.[,~[,.~[,[,.])0 b 14 21$1
TI-BASIC (niekonkurencyjny), 323 bajty
Kod jest napisany dla TI-84, 83 i wariantów. Mam nadzieję, że nie jest problemem, że wymiary różnią się w zależności od urządzenia i że kod nie jest kolorowy.
Ustawiać:
Rysunek:
Gra w golfa:
Tak, brak
)
jest celowy.Rozmiar:
Line(
i wszystkie takie polecenia zajmują 1 bajt, każda liczba zajmuje bajt. To 323 bajty.To było absolutnie nudne. Mam nadzieję, że dostanę to na emulatorze (muszę ręcznie wprowadzić wszystko), ale to dosłownie tylko linie w kształcie flagi.
źródło
Line(
0x9C. Możesz zobaczyć tabelę tokenów jednobajtowych tutaj: tibasicdev.wikidot.com/one-byte-tokens<
i>
) zamiast linii, aby uzyskać cieniowanie w skali szarości?DO#,
384346317292291289 bajtówProste rozwiązanie z Windows Forms i GDI
Stosowanie
Uruchom nowy projekt konsoli i umieść powyższy kod w metodzie głównej, dodaj System.Drawing-Namespace.
Jak to działa
Kod tworzy nowy obraz i rysuje na nim kilka linii. Zapisuje obraz na dysku. Niektóre punkty końcowe linii znajdują się poza widocznym obszarem.
źródło
b = new
=>b=new
,using ()
=>using()
, nie używaj spacji po;
s. Jeśli chcesz, możesz przeczytać nasze Wskazówki dotyczące gry w golfa w C #, aby znaleźć porady.Process.Start(f);
? Jak rozumiem, jest to podobne docmd
start
. Ponieważ możesz wybrać zapisanie lub wyświetlenie obrazu i już go zapisałeś, ten krok wydaje się bezcelowy. W takim przypadku może być możliwe uniknięcie zadeklarowania zmiennej f.using
a także dla deklaracji metody lub schematu programowego. Wszystko to jest częścią tego, co jest potrzebne (zadanie daje wybór funkcji lub programu, ale nie wybór tylko kilku instrukcji).Python IDLE,
191172156 bajtówIDLE to standardowe IDE Pythona. Chyba że ma niestandardowy motyw,
STDOUT
jest niebieski,STDERR
jest czerwony, a tło jest białe. Tak więc następujący kod:Daje to wyjście:
Ponieważ drukowane znaki nie są kwadratowe, jest to nieco wyłączone, ale jeśli weźmiemy 1 jednostkę na 2 znaki w poprzek i 1 znak wysokości, wówczas proporcje są dokładne.
Można to pograć w golfa, zmniejszając o połowę wymiar szerokości i używając znaku ASCII dla bloków takich jak
'#'
, ale nie ma to dokładnie takiego samego efektu.Wyjaśnienie
Sam kod wydaje się w tej chwili dość niechlujny i można go z pewnością zagrać w golfa, ale podstawową ideą jest:
0
reprezentuje białe znaki,1
reprezentuje niebieski blok i2
reprezentuje czerwony blok.STDERR
/STDOUT
odpowiednio. Wydrukuj nowy wiersz po każdym wierszu.źródło
Python Turtle, 176 bajtów
Kolejna implementacja Python Turtle, ale tym razem oparta na stemplowaniu zamiast rysowania :
Użycie stemplowania, a nie uczynienie go łatwo skalowalnym, pozwala zaoszczędzić około 60 bajtów kodu.
Zabawne jest to, że możesz zastąpić
"square"
opcję"turtle"
wielokąta opcją wielokąta wshape()
zaproszeniu i uzyskać logo ecogroovy:źródło
Perl, 134 bajty
Uwaga: w
\x1b
rzeczywistości jest to znak ucieczki ASCII i liczy się jako 1 bajtStosowanie
Zapisz jako
iceland-flag.pl
i uruchom przez:Wykorzystuje sekwencje specjalne ANSI i zakłada terminal Linux do wyświetlenia flagi. Wygląda trochę dziwnie na podstawie dostarczonych pomiarów.
Perl, 141 bajtów
Ta wersja wygląda nieco bliżej oryginalnych wymiarów ...
źródło
SpecaBAS - 150 bajtów
Odczytuje kolor atramentu, x, y, szerokość i wysokość i rysuje prostokąt z tymi współrzędnymi / wymiarami.
źródło
:
? Aha, i to 151 bajtów.