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
Ответы:
Python 3,
190172171169167160159147143 байтаИспользование версии PIL 1.1.7, которая имеет устаревший, но не удаленный метод смещения.
Создает изображение размером 25 * 18 пикселей, заполненное красным, затем рисует прямоугольник размером 23 * 16 пикселей, заполненный синим, с белым контуром в один пиксель. Затем он смещает изображение на (9,9), которое оборачивается по краям, изменяет размер до 100 * 72, а затем показывает его в окне.
Флаг перед смещением:
(изменен до 100 * 72)
Выход:
Анимационная:
Редактировать 1: Гольф 18 байтов, удалив обрезку, создав первоначальное изображение 25 * 18.
Edit2: Гольф 1 байт, используя
#fff
вместоwhite
.Edit3: Гольф 2 байта путем наложения алиасов.
Редактировать 4: Гольф 2 байта, удалив второй аргумент метода смещения.
Edit5: Гольф 7 байтов, показывая изображение вместо сохранения. (необходимо установить imagemagick в Unix)
Edit6: Гольф 1 байт, переписав импорт.
Редактировать 7: Гольф 12 байтов, переписав импорт снова. (спасибо @Dennis)
Edit8: добавлена анимация.
Edit9: обновлена анимация, так как отсутствовал последний кадр.
Edit10: Гольф 4 байта благодаря Альберту Реншоу!
источник
from PIL.ImageDraw import*
,I
становитсяImage
иD.Draw
становитсяDraw
, экономя 11 байтов.машинный код реального времени x86 для DOS COM,
69656362 байтаКод должен выполняться как исполняемый файл DOS COM.
Особая благодарность
Машинный код (в шестнадцатеричных байтах)
Источник сборки
Источник для NASM.
источник
_loop: jcxz _loop
. Вы также можете сократить 2 байта от конца фрагмента данных, если вы измените порядок загрузкиcx
иdi
mov bx, 320
и переместил 320 вadd di, 320
(ранееadd di, bx
).jcxz _cycle
сразу послеxchg ax,cx
этого, чтобы не загружать байты после конца данных. И есть некоторые вводящие в заблуждение комментарии в источнике:;dx = row
.dx
не используется нигде в коде.C,
194191183 байт-3 добавив один
@
на#define A
-8 добавив
[
на#define C
использование
Выход
действительный на основе этого комментария от ОП
Двойной размер, 204 байта
источник
Excel VBA,
254228153 байтаНа самом деле не удалось найти способ установить размер столбца / строки в пикселях (тем самым делая их квадратными) из-за способа, которым Excel его обрабатывает, поэтому сначала сделайте их красивыми и квадратными.
Редактировать 1: заменен RGB с возвращенными значениями для цветов, -26 байт
Редактировать 2: Пытался добавить столько предложений, сколько я мог, -75 байт. Я не мог использовать
&48e0
в качестве цвета, и я не уверен, почему. Всем спасибоРисунок:
источник
0.2cm
. Это будет сохраняться после того, как вы переключитесь обратно, и вам не нужно пытаться отработать причудливые пропорции Excel :-) Кстати, если вам нужны более крутые трюки с Excel, посмотрите видео Джоэла Спольски «Ты сосешь в Excel».MATL ,
5756524948 байтЭто дает следующий рисунок (протестировано с компилятором, работающим на Matlab и Octave).
РЕДАКТИРОВАТЬ: Вы можете попробовать экспериментально в MATL Online! (вам может понадобиться перезагрузить страницу, если она не работает изначально).
Как это устроено
источник
CSS,
285284264 байтаСохранено 1 байт благодаря @insertusernamehere.
Благодаря @ user2428118 удалось сэкономить 20 байт, удалив все
px
s. Обратите внимание, что для этого требуется, чтобы страница отображалась в режиме причуд, поэтому она не работает в фрагментах стека.Я мог бы скопировать подход Python, заключающийся в переносе изображения со смещением, но это было бы неинтересно.
Ungolfed:
При этом используются псевдоэлементы (элементы, которые не написаны в HTML)
::before
и::after
для создания линий на флаге. Причина, по которой он работает без HTML, заключается в том, что в HTML5 элементы<html>
and<body>
являются необязательными, поэтому браузеры автоматически создают их, если их нет.Смешнее:
Показать фрагмент кода
источник
white
на#fff
.px
везде.<!doctype html>
!Bash + Imagemagick 7,
94908685 байтmagick -size 84x56 xc:#0048e0 ${s=-splice 8x8}+28+28 -background \#d72828 $s+32+32 x:
Сохранено 8 байт благодаря @manatwork и 1 байт благодаря @ GlennRanders-Pehrson
источник
x:
вместо имени выходного файла, результатconvert
будет отображаться в окне, что также является приемлемым. И достаточно просто убежать от острого, не нужно цитировать\#d72828
.bash
стороне вы можете сэкономить еще 4 -х символов:convert -size 84x56 xc:#0048e0 ${s=-splice 8x8}+28+28 -background \#d72828 $s+32+32 x:
.${s=-splice 8x8}+56
?+56
трактуется как+56+0
, а не+28+28
.ZX Spectrum BASIC,
21014192 байтаРазмер определяется как размер программы BASIC на ленте через
SAVE
. Большая часть игры в гольф принадлежит некоторым членам группы ZX Spectrum на Facebook , в частности @impomatic и Johan Koelman.источник
PAPER
иBRIGHT
приносит так много хороших воспоминаний :-)FOR
,NOT
что он займет всего 1 или 2 байта каждыйFOR
это точно один байт. Однако числа являются «анти-токенизированными» в том смысле, что они хранятся как в текстовом, так и в двоичном виде и занимают на 5 байт больше, чем вы ожидаете, поэтомуNOT PI
вместо нуля и т. П.Сборка ZX Spectrum Z80, 65 байт
источник
Minecraft 1.10.2, 734 персонажа
Это может быть 734 символа, но это единственное представление, сделанное из настоящей шерсти!
Перейдите примерно к -5x -5z, вставьте в блок команд Impulse, установите для него значение «Всегда активно» и нажмите Готово.
Диапазон флагов от 0, 0 до 100, 72; и находится в 3 блоках над командным блоком в том виде, в котором он был размещен. Он отбрасывает довольно большую тень , и под ним появляются монстры. Точно ли это относится к стране Исландии, пока никто не знает.
Справедливое предупреждение - убьет всех
MinecartCommandBlock
в мире в интересах сохранения четырех символов. Не запускайте это в мире, к которому вы чрезмерно привязаны.Использовал объединитель команд MrGarretto и немного подправил вывод (808 -> 734)
источник
Логотип,
216188 байтИспользование реализации Calormen.com . Для вас, пуристы, реализация использует некоторое сглаживание, которое немного растушевывает края. Я потратил 3 байта, пряча черепаху, так что это должно компенсировать это.
Это может быть значительно уменьшено, если ваша реализация Logo позволяет вам устанавливать размер окна. Тогда вы могли бы
wrap
и пропустить черепаху, чтобы сделать крест в четыре удара, и пропустить необходимость урезать его рамкой.источник
Java 8,
449447 байт:Очень поздний ответ, и, видимо, самый длинный. Использует
java.awt.Graphics
класс, чтобы создать и открыть окно с флагом в нем, которое состоит из 5 прямоугольников, состоящих из 1 для синих блоков, 2 для белых полос и 2 для красных полос. Использует соотношение 7 пикселей: 1. Другими словами, для каждого блока используется 7 пикселей. Вот изображение вывода на Macintosh с OS X 10.11:Теперь, чтобы найти способ поиграть в гольф немного ниже ...
источник
paint
вместоpaintComponent
. Рассмотрите возможность использования анонимного класса для JPanel. Подумайте только об использовании BufferedImage и выводе в файл.Blue
качестве 1 огромного прямоугольника для фона. Я просто запутался между этой и другой версией, которую я сделал на Python. В любом случае, спасибо за другие советы! :)JPanel
, просто переопределитеJFrame
. Если вы сделаете это и просто переопределитьpaint
, вам не нужно Swing, AWT просто, так изменить ,JFrame
чтобыFrame
и удалить импорт. Не звониsuper.paint
. Переставить основной метод; переместитеsetSize
вpaint
метод ourFrame
, удалите переменнуюJ
и добавьте.setVisible(true)
в конец анонимный класс. Наконец, измените.setVisible(true)
наshow()
да, это устаревший метод, но он короче. Используйтеinterface
для удаленияpublic
из основного метода.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)
(также размер все еще был неправильным). Сейчас в 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 байтовС отступом, с новыми строками и пояснениями:
Редактировать : получается
frame()
, в отличие отplot()
илиplot.new()
по умолчанию не добавляет границу к графику, смыслbty="n"
здесь не нужен.источник
8-битный исполняемый файл Atari, 123 байта
Еще одна запись «просто для удовольствия», эта программа предназначена для запуска на 8-битном компьютере или эмуляторе Atari. Например, чтобы загрузить программу на Atari800, просто запустите:
Машинный код (в шестнадцатеричных байтах)
Исходный код ассемблера (может быть скомпилирован с помощью MADS ):
Как это устроено:
Программа использует пользовательский список отображения, основанный на режиме ANTIC 8 (40 пикселей на строку, 2 bpp). Повторные строки загружаются из одной и той же ячейки памяти. После настройки дисплея программа входит в бесконечный цикл.
Скриншот:
источник
FFmpeg,
339184 байтаПостараюсь сыграть в эту игру.
источник
Питон,
119118114112 байтНичего особенного, просто:
Вывод как двоичный PPM, использование
print
и кавычка\0
можно использовать вместо\x00
Если кто-то знает, как использовать непечатаемый ASCII-символ напрямую, сообщите об этом.
источник
b,w,r="\0Hà"*28,"ÿ"*12,"×(("*8
и с помощью Python 3, но он не работает.JavaScript, 267 байт
источник
Java, 335 байт
Функция
И пишет желаемое изображение как
f.png
, размером 100х72(Обратите внимание, что это не прямой конкурент Ответа Р. Капа , потому что он записывает файл и не отображает изображение на экране)
Вот версия ungolfed, которую можно скомпилировать и запустить:
Дополнительное примечание, касающееся связанных вопросов: Может быть, нужно создать задачу, чтобы нарисовать флаги
в то же время:
источник
SVG + Javascript,
190165164 байтаНи один эксперт там,
повторяя один путь только, чтобы изменить цвет и ширина линии выглядит глупоJavaScript FTW!Более читабельно:
источник
path d="m0,0h100v72H0"
вместо прямоугольника, чтобы сохранить два байта. Аналогично, используйтеM0 36H100M36 0V72
для данных другого пути, что экономит еще пять байтов. И вы можете отброситьstyle
атрибут в пользу объявления обоихstroke-width
иstroke
как атрибутов, чтобы сохранить еще пять байтов.Обработка , 136 байтов
Ungolfed
Выход:
источник
fill
иrect
вместоsize
иbackground
. 134 байта: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)
на один байт корочеfill(255)
Mathematica
174157 байтБез встроенных
157 байт
или в качестве альтернативы
232 байта
источник
u=Unitize;c=ConstantArray
и т. д. ^ _ ^CountryData["Iceland", "Flag"]
JavaScript (ES6), 231
240Код внутри фрагмента ниже. Запустите его, чтобы проверить.
источник
Сборка ZX Spectrum Z80, 51 байт
https://github.com/ralphbecket/Z80/blob/master/IcelandFlag/IcelandFlag.asm
источник
J
868483 байтаПодход такой же, как у @ Габора Фекете с Python.
Левый аргумент
colors
forviewmat
- это массив значений RGB, в нашем случае:И правильным аргументом является матрица показателей
colors
.(_9 _9 |. matrix)
поручает переместитьmatrix
9 элементов в каждом измерении.Страшные строительные
(border ([,~[,.~[,[,.]) matrix)
оберткиmatrix
с номеромborder
.И
(14 21 $ 1)
составляет 14 × 21 матрицу единиц.Вывод отображается в отдельном окне с изменяемым размером, по умолчанию довольно большое.
Спасибо
мили - сэкономлено 2 байта с переупорядочением цветов, используется функция
,
дублирования чисел (255) для согласования формы.источник
14 21
(18 25 - 4 4
). исправляя ... спасибо!(255,0 72 224,:215 40 40)viewmat _9 _9|.2(b=.[,~[,.~[,[,.])0 b 14 21$1
TI-BASIC (неконкурентный), 323 байта
Код написан для ТИ-84, 83 и вариантов. Я уверен, что не проблема в том, что размеры зависят от устройства, а код не окрашен.
Настроить:
Рисунок:
Golfed:
Да, отсутствие
)
преднамеренного.Размер:
Line(
и все такие команды занимают 1 байт, каждое число занимает байт. Это 323 байта.Это было абсолютно утомительно. Надеюсь, я получу это на эмуляторе (я должен вручную ввести все), но это буквально просто линии в форме флага.
источник
Line(
0x9C. Вы можете увидеть таблицу однобайтовых токенов здесь: tibasicdev.wikidot.com/one-byte-tokens<
и>
) вместо линий, чтобы получить оттенки серого?C #,
384346317292291289 байтПростое решение с Windows Forms и GDI
использование
Запустите новый консольный проект и поместите приведенный выше код в метод main, добавьте System.Drawing-Namespace.
Как это устроено
Код создает новое изображение и рисует на нем несколько линий. Сохраняет изображение на диск. Некоторые из конечных точек линий находятся за пределами видимой области.
источник
b = new
=>b=new
,using ()
=>using()
, не используйте пробелы после;
s. Если вы хотите, вы можете прочитать наши Советы по игре в гольф на C #, чтобы найти некоторые советы.Process.Start(f);
? Как я понимаю, это похоже наcmd
start
. Поскольку вы можете сохранить или отобразить изображение и уже сохранили его, этот шаг кажется бессмысленным. В этом случае, возможно, вы также можете избежать объявления переменной f.using
s, а также для объявления метода или шаблона программы. Это все часть того, что нужно (задача дает вам выбор функции или программы, но не просто набор операторов).Python IDLE,
191172156 байтIDLE - это стандартная среда разработки Python. Если у него нет пользовательской темы,
STDOUT
он синий,STDERR
красный, а фон белый. Итак, следующий код:Производит этот вывод:
Поскольку печатные символы не квадратные, это немного не так, но если взять 1 единицу равной 2 символам в поперечнике и 1 символу, то пропорции будут точными.
Это может быть сделано путем уменьшения размера по ширине и использования символа ASCII для таких блоков, как
'#'
, но это не совсем имеет тот же эффект.объяснение
Сам код кажется в настоящее время довольно неаккуратным и определенно может быть изменен, но основная идея заключается в следующем:
0
представлены пробелы,1
синий блок и2
красный блок.STDERR
/STDOUT
соответственно. Выведите новую строку после каждой строки.источник
Черепаха питона, 176 байт
Еще одна реализация Python Turtle, но на этот раз основанная на штамповке вместо рисования :
Использование штамповки и ее непростое масштабирование позволяют сэкономить около 60 байт кода.
Самое интересное, что вы можете заменить
"square"
опцию"turtle"
polygon опцией polygon вshape()
вызове и получить ecogroovy логотип:источник
Perl, 134 байта
Примечание:
\x1b
на самом деле является escape-символом ASCII и считается как 1 байтиспользование
Сохранить как
iceland-flag.pl
и запустить через:Использует escape-последовательности ANSI и предполагает, что для отображения флага используется терминал Linux. Выглядит немного странно с использованием предоставленных измерений.
Perl, 141 байт
Эта версия выглядит немного ближе к подлинным размерам ...
источник
SpecaBAS - 150 байт
Считывает цвет чернил, x, y, ширину и высоту и рисует прямоугольник с этими координатами / размерами.
источник
:
? Ох, и это 151 байт.