Ada banyak tantangan lainnya bendera diposting tapi tidak satu untuk bendera nasional dari Perancis . Minggu ini sepertinya waktu yang tepat.
Hasilkan flag ini dalam byte sesedikit mungkin:
- Gambar harus dalam perbandingan 3: 2, dengan ukuran selebar 78 piksel dan tinggi 52 piksel.
- Setiap garis membutuhkan sepertiga dari lebar.
- Warna-warna stripe dari kiri ke kanan adalah RGB:
(0, 85, 164)
, (255, 255, 255)
, (239, 65, 53)
.
- Gambar dapat disimpan ke file atau disalurkan mentah ke STDOUT dalam format file gambar apa pun yang umum, atau dapat ditampilkan.
- Atau, output blok teks setidaknya 78 karakter lebar yang terbuat dari karakter non-spasi yang menggambarkan bendera, menggunakan kode warna ANSI untuk mewarnainya. (Gunakan standar biru, putih, dan merah.)
- Gambar / pustaka bendera bawaan tidak diizinkan.
Kode terpendek dalam byte menang.
Papan peringkat
Cuplikan Stack di bagian bawah posting ini menghasilkan leaderboard dari jawaban a) sebagai daftar solusi terpendek per bahasa dan b) sebagai leaderboard keseluruhan.
Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:
## Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Misalnya:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (mis. Karena skor Anda adalah jumlah dari dua file atau Anda ingin membuat daftar hukuman penterjemah secara terpisah), pastikan bahwa skor sebenarnya adalah angka terakhir di tajuk:
## Perl, 43 + 2 (-p flag) = 45 bytes
Anda juga dapat membuat nama bahasa menjadi tautan yang kemudian akan muncul di cuplikan:
## [><>](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 🇫🇷
tidak cukup besarJawaban:
CJam,
2322 byteDi atas adalah hexdump yang dapat dibalik dengan
xxd -r
.Dengan biaya dua byte tambahan - untuk total 24 byte - kita bisa menggunakan warna latar belakang, membuat output sedikit lebih cantik.
Bagaimana itu bekerja
Di kedua program, kami menggunakan urutan pelarian ANSI
\x9bXYm
- di manaX
adalah3
untuk warna foreground dan4
untuk warna latar belakang, danY
menentukan warna yang akan digunakan - untuk beralih di antara tiga warna bendera.Program lainnya serupa.
Keluaran
sumber
Bash Murni (pada OSX), 84
Terminal OSX default mendukung emoji penuh warna. Tidak yakin apakah ini dianggap sebagai teks atau output grafis.
Outputnya seperti:
Kalau tidak:
Bash dengan utilitas OSX, 56
The
dc
ekspresi:3^26-1
dan mencetaknya di ternary22222222222222222222222222
3^26
. Output di ternary ini adalah1111111111111111111111111100000000000000000000000000
tr
kemudian menerjemahkan 210 karakter ke 🔵⚪️🔴.yes
menampilkan garis ini tanpa batas.sed 26q
menghentikan output pada 26 baris.sumber
Desmos,
3012 byteCobalah online.
Saya tidak sepenuhnya yakin apakah ini valid, beri tahu saya jika ada masalah.
sumber
Python 2, 47 byte
Berisi unsintables - inilah hexdump (dapat dibalik dengan
xxd -r
):Menggunakan kode pelarian ANSI untuk mencetak karakter berwarna ke STDOUT - Saya memilih "F" untuk Prancis. Tidak ada tautan online karena ideone tidak mendukung kode pelarian ANSI dalam output.
Terima kasih kepada Dennis dan xnor untuk beberapa tips hebat.
Tangkapan layar dari xterm:
sumber
in [0]
->in[0]
\x1b
. 2. Bold sepertinya tidak perlu. 3. Saya tidak yakin apakah itu berlaku untuk seni ANSI juga, tetapi pertanyaannya tampaknya mengamanatkan rasio 3: 2.print("\x1b[3%s;1mF"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
.█
karakter terlihat sedikit lebih bagus, misalnyaprint("\x1b[3%s;1m█"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
HTML / SVG, 76 byte
87 88 121 122 149Disimpan 27 byte berkat @insertusernamehere
Menghemat 9 byte berkat @ Joey
Disimpan 1 byte berkat @sanchies
Menghemat 1 byte berkat @Neil
Menggunakan banyak penyalahgunaan sintaks HTML, ini bisa menjadi sangat singkat.
Tangkapan layar output:
Atau coba (pastikan browser Anda mendukung SVG):
sumber
<svg><rect width=78 height=52 fill="#ef4135"/><rect width=52 height=52 fill="#fff"/><rect width=26 height=52 fill=#0055a4>
fill=#0055a4 />
berfungsi juga (tidak"
), menghemat seluruh byte.Brainfuck $ , 153 byte
Menghasilkan gambar dengan kode warna ANSI. Saya memilih ketinggian 30 seperti Mego .
Implementasi referensi dari tahun 2009 yang tertaut pada halaman esolang telah hilang. Anda dapat menjalankannya menggunakan juru bahasa yang dibuat oleh saya, yang mendukung semuanya dari halaman esolang.
Tampilkan cuplikan kode
Brainfuck, 258 byte
Ini pada dasarnya adalah hal yang sama, tetapi hanya di Brainfuck tua biasa.
Atau, jika Anda lebih suka yang ini dalam OOo CODE (984 bytes):
sumber
Bash + ImageMagick,
607773 byte(eh, +17 karakter karena persyaratan warna yang tidak saya perhatikan sebelumnya ...)
Output ke file
a
, dalam format netpbm:Dapat juga menghasilkan PNG, jika Anda mengubah nama file menjadi
a.png
(+4 karakter).Keluaran:
sumber
convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"
-scale
sebagai ganti-sample
; juga, garis miring terbalik tampaknya tidak perluLaTeX, 139 byte
Terima kasih kepada @WChargin karena telah menghemat 21 byte.
Ini mencetak gambar 12cm * 8cm berikut pada halaman A4:
Perhatikan bahwa "Halaman 1" juga dicetak di bagian bawah halaman
sumber
asymptote
solusi saya ...s.\newcommand\z[1].\def\z#1
untuk menyimpan banyak byte. Selain itu, Anda dapat mencukur habis beberapa dengan menggunakan\def\z#1!{…}\z0,.33,.64!\z1,1,1!\z.94,.25,.21!
—yaitu, gunakan pembatas Anda sendiri alih-alih kawat gigi untuk pengelompokan\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 byte
Ada beberapa karakter yang tidak patut, jadi inilah hexdump:
Ini membuat file
o.png
, yang persis 78 lebar piksel dan tinggi 52 piksel:Penjelasan:
sumber
save it as an image o.png
, tapi tidak ada ".png" di mana saja?python3 pyth.py code.pyth
, maka Anda dapat menemukannya di direktori yang sama.HTML (mode quirks), 68 byte
Ini menggunakan mode kebiasaan untuk membuat bendera.
HTML SANGAT tidak valid, tetapi bekerja pada browser Android 4.4.2 dan pada Firefox 42.0 (pada Windows 7 x64).
Bendera diberikan dengan ukuran yang tepat dan warna merah dan biru standar. Semua halaman web dimulai dengan latar belakang putih standar.
Sebagai alternatif:
Sebuah sempurna berlaku versi HTML5 (141 bytes):
Periksa validitasnya di: https://html5.validator.nu/
Layar hasil cetak:
sumber
>
?style="..."
jika itu yang Anda inginkan dalam contoh kedua.<html>
, tidak<head>
, tidak<body>
, tidak</tr>
, tidak,</td>
dan tidak ada penutupan semua tag yang hilang.data:text/html,<table width=78 height=52><td bgcolor=0055a4><td><td bgcolor=ef4135>
, itu tidak berfungsi. Perbaiki sekarang, dan gunakan tautan untuk mengujinya.TI-Basic,
524442 byte(mengasumsikan default [-10,10,1] oleh [-10,10,1] area grafik)
Akan lebih pendek 4 byte tanpa 2 baris pertama, tetapi secara default akan memiliki sumbu dan tidak akan terlihat bagus.
Terlihat seperti ini:
Jika bayangan tidak valid untuk tantangan, beri tahu saya!
Tanpa 2 baris pertama, akan terlihat seperti ini:
sumber
ffmpeg,
110113116117119108100 byteTampilan, menggunakan ffplay, 100 byte:
Disimpan ke file, menggunakan ffmpeg, 108 byte:
Versi saat ini dari perintah akan dibatalkan dengan kesalahan TETAPI akan menghasilkan gambar tunggal ".png", sama seperti yang ditunjukkan di bawah ini.
sumber
white
alih-alih#ffffff
: nilainya harus sama.CSS, 127
128144byteTidak perlu tag lain, hanya bekerja dengan elemen
body
-ement.Suntingan
display:block;
dan beberapa;
.}
.sumber
JavaScript, 140
143147151153byteSuntingan
2*i*26
dengani*52
. Terima kasih untuk Cᴏɴᴏʀ O'Bʀɪᴇɴ .for
-loop. Terima kasih untuk produk ETH .with
pernyataan. Terima kasih untuk Dendrobium .fillStyle=["#0055a4","#ef4135"][i]
dengani?"#ef4135":"#0055a4"
.sumber
2*i*26
bisa menjadi52*i
, bukan?with
pernyataan: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
kanvas).getContext
2d;for(i=3;--i;x.fillRect(i*52,0,26,52))x.fillStyle=[,"#ef4135","#0055a4"][i]
R, 59 byte
Output ditampilkan:
Satu juga dapat melakukan 49 byte dengan
jika Anda tidak keberatan dengan sumbu dan batas:
sumber
Blitz 2D / 3D ,
154108 byteIni menghasilkan hal yang persis sama dengan contoh yang diberikan dalam pertanyaan (kecuali untuk anti-aliasing di tepi tempat warna bertemu).
Output ditampilkan dan terlihat seperti ini:
sumber
Mathematica,
6394103 byteKetika saya pertama kali melihat tantangan ini, saya berpikir Manis! Mathematica akan sempurna untuk ini! sampai saya perhatikan bahwa built-in dilarang: '(
Tapi tunggu! Saya bisa menggunakan grafik batang!
(Terima kasih kepada Martin Büttner karena mencukur 5 byte tetapi menambahkan 16)
Terlihat seperti ini:
Jika Anda menambahkan
,Axes->None
tampilannya seperti ini:Jika Anda tidak peduli dengan perbatasan, Anda dapat menggunakan ini: (95 byte)
Terlihat seperti ini:
Tanpa sumbu:
sumber
Axes->None
. Anda juga harus telitiAspectRatio->2/3
. Mengganti NamaRGBColor
sederhana:r=RGBColor;...r["..."]
. Anda juga dapat menggunakan notasi awalan untuk menyimpan dua byte lagir@"#0055a4"
.BarChart[{1, 1}, ChartStyle -> {RGBColor["#0055a4"], Red}, BarSpacing -> 1]
. Merah terlihat cukup dekat.Javascript (ES6) 117 byte
Menariknya di konsol
sumber
'white'
saya pikir itu lebih pendek untuk melakukan:#fff
. Juga, warna Merah dan Biru harus cocok dengan warna yang ditentukan dalam spesifikasii=c=s=[]
alih - alihi=0,c=[],s=''
setelah memperbarui warna yang mungkin sedikit membantu ...red
danblue
). Ini adalah poin ke-2, dihitung dari bawah. Ini dalam spesifikasi.pb , 68 byte
Wow, tantangan yang pb sebenarnya cukup bagus untuknya! Mereka sedikit dan jarang sekali.
Ketika saya sedang menulis spec untuk pb, saya memasukkan keluaran berwarna sebagian besar sebagai lelucon. Bahasa itu dinamai "kuas", mengapa itu tidak warna? Selain program contoh, ini adalah kedua kalinya saya menggunakannya. Ini diimplementasikan dengan kode ANSI sesuai pertanyaan.
Saya menggunakan 'M' sebagai karakter untuk di-output karena cukup padat.
Keluaran:
Saya mengubah ukuran tangkapan layar secara vertikal menjadi dua pertiga dari tingginya karena hurufnya tidak persegi. Outputnya 78 x 52, tetapi tangkapan layar aslinya terlihat sangat salah.
Dengan komentar dan lekukan dan sampah:
sumber
C, 115 byte
Berisi unsintables:
Agar program ini dapat berfungsi, beberapa hal harus benar:
ESC [48;2;<r>;<g>;<b>m
urutan pelarian "truecolor".Ini juga terlihat lebih bagus jika latar belakang terminal Anda berwarna hitam.
Untuk mengubah ketinggian bendera, berikan argumen baris perintah ke program. Untuk setiap argumen yang dilewati, bendera menjadi satu garis lebih pendek. Ini bukan bug, ini fitur!
Keluaran:
sumber
gcc
(versi 5.1.1). Adakah flag khusus yang diperlukan untuk dikompilasi? "ac: 1: 10: peringatan: ISO C99 memerlukan spasi putih setelah nama makro #define c" \ x1b [48; 2;% d;% d;% dm "MATLAB,
827978 byteOutputnya seperti:
sumber
fill(x,y,[0 85 164]/255,x+1,y,'w',x+2,y,[239 65 53]/255)
dan menghemat 2 byte. :) Saya juga menggunakan titik koma alih-alih baris baru untuk menghindari hal-hal tambahan yang dicetak.Visual Basic + Excel,
618137 byteHanya ingin tahu bagaimana ini bisa bermain golf.
EDIT: Keingintahuan puas, terima kasih kepada @Neil dan @JimmyJazzx, 618 byte turun hingga 137 byte
sumber
Range("A1:C13").Interior.ColorIndex = 5
danRange("G1:I13").Interior.ColorIndex = 3
yang sepertinya cukup.ActiveWorkbook.Colors
untuk menentukan nilai RGB yang tepat. Excel 2007 memiliki opsi warna tambahan tapi saya tidak mengetahuinya begitu saja.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
110111114bytesumber
* *{background:linear-gradient(90deg,#0055a4,#0055a4 33%,#fff 33%,#fff 66%,#ef4135 66%) 0 0/78px 52px no-repeat}
- satu byte lebih pendek}
.66%
dengan0
.Dyalog APL (
4744)Hasil:
sumber
2*8 11 10
?iKe , 43 byte
Ini adalah contoh dari program iKe "tuple mentah" - ini hanya deskripsi dari suatu asal (
0 0
), sebuah palet (3 7#"#0055A4#FFFFFF#EF4135"
) dan bitmap (+52#'&3#26
). Anda perlu membungkus deskripsi seperti ini dalam suatu fungsi atau menggunakan referensi untuk tampilan jika Anda ingin menghidupkannya.Palet adalah cara yang sangat sederhana untuk menciptakan serangkaian warna CSS, setara hex spesifikasi.
Jika persyaratan warna kurang ketat, kami dapat menggunakan salah satu palet bawaan iKe dan menyimpan sejumlah besar karakter:
Cobalah di browser Anda .
Sunting:
Disimpan satu byte dengan menggunakan
#FFF
warna CSS pendek untuk garis putih:Jika ada orang lain yang tertarik bermain dengan iKe, ada manual tentang repo github . inilah masalah lain saya pecahkan menggunakan iKe.
Edit 2:
Disimpan satu byte dengan cara yang lebih sederhana untuk membangun bitmap:
Pertanyaan saya di OP belum dijawab, tetapi sebagai catatan jika persyaratan warna yang lebih fleksibel diizinkan, program ini akan menjadi 30 byte dengan menggunakan palet Windows 3.1:
Karena masalah ini diposting, iKe telah memperoleh fitur yang secara otomatis memusatkan tekstur yang dibuat tanpa posisi, yang dapat menyimpan 3 byte lainnya, tetapi ini akan melanggar aturan:
sumber
Oktaf,
7776 byteMenampilkan gambar:
sumber
Memproses, 100 Bytes
Menampilkan ini:
(Solusi naif lebih pendek dari yang pertama.)
sumber
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);
Ruby,
564745 byteASCII
sumber
PHP, 70 byte
Di atas adalah hexdump yang dapat dibalik dengan
xxd -r
. Atau, itu juga dapat dibuat dengan skrip PHP berikut:Saya menganggap pengaturan default, karena mereka tanpa .ini (Anda dapat menonaktifkan .ini lokal Anda dengan
-n
opsi). Menghasilkan gambar .bmp (288 x 192), yang harus disalurkan ke file. Ini sebesar yang saya bisa membuatnya tanpa mempengaruhi jumlah byte.Contoh Penggunaan
Keluaran
sumber
ShaderToy (GLSL), 147 byte
Lihat di sini
Tidak terlalu mengasyikkan. Saya yakin ada cara untuk golf lebih banyak; Saya akan mengambil celah ketika saya pulang.
sumber