Gambarlah bendera nasional Perancis

106

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:

Bendera Perancis

  • 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 Nukuran 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

steve
sumber
4
Nilai-nilai RGB itu tidak cocok dengan gambar Anda. Dari apa yang saya lihat, Anda punya RGB: (0, 35, 149), (255, 255, 255), (237, 41, 57).
gelas kimia
8
Menyimpan palet yang ditentukan secara kompak mungkin adalah bagian tersulit dari masalah ini di sebagian besar bahasa. Mengingat itu, tampaknya agak tidak adil untuk solusi grafis untuk mengizinkan keluaran ANSI dengan palet standar. Mengapa tidak mengizinkan solusi grafis menggunakan pure (0, 0, 255) / (255, 255, 255) / (255, 0 0) untuk meningkatkan level lapangan bermain?
JohnE
15
Setiap garis membutuhkan sepertiga dari lebar. Mungkin lebih menarik untuk menggunakan varian Naval: dengan peraturan tertanggal 17 Mei 1853, angkatan laut kembali menggunakan proporsi 30:33:37, yang sekarang terus digunakan, karena mengepakkan bendera membuat bagian-bagian lebih jauh dari tali bendera tampak lebih kecil.
Ben Jackson
34
echo 🇫🇷tidak cukup besar
Trauma Digital
5
@ JohnE saya setuju. Aturan warna memberi solusi ASCII-art keuntungan besar. Mereka juga tidak membuat tantangan lagi "sulit" (hanya menambahkan byte benar) untuk bahasa yang dapat menggunakan warna sewenang-wenang dan mendiskualifikasi beberapa bahasa keren yang tidak dapat melakukan warna sewenang-wenang.
spaghetto

Jawaban:

38

CJam, 23 22 byte

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*

Di 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.

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*

Bagaimana itu bekerja

Di kedua program, kami menggunakan urutan pelarian ANSI \x9bXYm- di mana Xadalah 3untuk warna foreground dan 4untuk warna latar belakang, dan Ymenentukan warna yang akan digunakan - untuk beralih di antara tiga warna bendera.

'<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.

Program lainnya serupa.

Keluaran

keluaran

Dennis
sumber
Saat ini saya tidak yakin seberapa tinggi saya harus membuat "gambar".
Dennis
Saya menjawab 78x30 dalam jawaban saya. Dimensi-dimensi dalam Lucida Console 9 pt (font default untuk xterm) memberi yang paling dekat dengan 3: 2.
Mego
Anda bisa menggunakan balok penuh untuk 'cantik'
Matthew Roh
75

Bash Murni (pada OSX), 84

Terminal OSX default mendukung emoji penuh warna. Tidak yakin apakah ini dianggap sebagai teks atau output grafis.

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

Outputnya seperti:

masukkan deskripsi gambar di sini


Kalau tidak:

Bash dengan utilitas OSX, 56

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

The dcekspresi:

  • menghitung 3^26-1dan mencetaknya di ternary22222222222222222222222222
  • membaginya dengan 2, lalu dikalikan dengan 3^26. Output di ternary ini adalah1111111111111111111111111100000000000000000000000000

trkemudian menerjemahkan 210 karakter ke 🔵⚪️🔴. yesmenampilkan garis ini tanpa batas. sed 26qmenghentikan output pada 26 baris.

Trauma Digital
sumber
51
Terminal yang mendukung emoji. Wow.
rr-
6
Solusi pertama tidak menggunakan nilai RGB yang tepat juga tidak menggunakan warna ANSI standar, bukan?
Gagang Pintu
@Doorknob Anda tentu saja benar - tidak ada solusi - jadi jawaban ini mungkin melampaui batas. Saya sudah meminta OP untuk klarifikasi
Digital Trauma
3
Itu hanya Unicode.
undergroundmonorail
1
@veve Saya tidak benar-benar berharap jawaban ini menjadi sangat populer, terutama mengingat bahwa ada pertanyaan mengenai validitasnya . Bisakah Anda memberikan yay atau nay, apakah menurut Anda itu valid? Terima kasih!
Digital Trauma
51

Desmos, 30 12 byte

3x>10
3x<-10

Cobalah online.

Saya tidak sepenuhnya yakin apakah ini valid, beri tahu saya jika ada masalah.

sebuah spaghetto
sumber
3
@ CᴏɴᴏʀO'Bʀɪᴇɴ Warna default merah dan biru dalam urutan itu (saya percaya) sehingga tidak perlu mengaturnya.
spaghetto
7
@CᴏɴᴏʀO'Bʀɪᴇɴ Maka itu adalah generator bendera acak;)
DanTheMan
3
@ CᴏɴᴏʀO'Bʀɪᴇɴ Mereka tidak acak untuk saya - memasukkan dua ketidaksetaraan secara manual membuat saya merah, kemudian biru.
Mego
1
Ini aneh. Saya menjadi merah dan biru juga.
lirtosiast
2
Saya tidak berpikir itu ... juga tidak sesuai dengan aspek rasio tepatnya.
Gagang Pintu
51

Python 2, 47 byte

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

Berisi unsintables - inilah hexdump (dapat dibalik dengan 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

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:

bendera

Mego
sumber
1
Anda punya ruang ekstra di sana. in [0]->in[0]
mbomb007
2
1. Anda dapat menggunakan byte ESC yang sebenarnya, bukan \x1b. 2. Bold sepertinya tidak perlu. 3. Saya tidak yakin apakah itu berlaku untuk seni ANSI juga, tetapi pertanyaannya tampaknya mengamanatkan rasio 3: 2.
Dennis
Ini lebih pendek untuk sub dalam parameter dengan format: print("\x1b[3%s;1mF"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30.
xnor
16
Tekan F untuk memberi penghormatan
Riking
4
The karakter terlihat sedikit lebih bagus, misalnya print("\x1b[3%s;1m█"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
ali_m
44

HTML / SVG, 76 byte 87 88 121 122 149

Disimpan 27 byte berkat @insertusernamehere

Menghemat 9 byte berkat @ Joey

Disimpan 1 byte berkat @sanchies

Menghemat 1 byte berkat @Neil

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

Menggunakan banyak penyalahgunaan sintaks HTML, ini bisa menjadi sangat singkat.


Tangkapan layar output:

Output Bendera Perancis


Atau coba (pastikan browser Anda mendukung SVG):

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

Downgoat
sumber
3
Saya mencoba untuk mengalahkan Anda dengan CSS dan sekarang saya telah membuat SVG Anda bahwa itu bahkan lebih kecil daripada solusi CSS saya. : D Ini adalah yang terpendek yang dapat saya lakukan untuk bekerja di Safari, Chrome, dan Firefox, panjangnya 122 byte :<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 Terima kasih, Itu menghemat 27 byte! Saya telah berhasil melanjutkan golf ini hingga 88 byte yang menakjubkan
Downgoat
3
Bagi saya, fill=#0055a4 />berfungsi juga (tidak "), menghemat seluruh byte.
Sanchises
3
@menyimpan seluruh byte? o_O wow : D
developerbmw
4
@developerbmw Sebenarnya, akan lebih mengesankan untuk menyimpan setengah byte ketika Anda memikirkannya.
Sanchises
29

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.

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):

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
PurkkaKoodari
sumber
25

Bash + ImageMagick, 60 77 73 byte

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

(eh, +17 karakter karena persyaratan warna yang tidak saya perhatikan sebelumnya ...)

Output ke file a, dalam format 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

Dapat juga menghasilkan PNG, jika Anda mengubah nama file menjadi a.png(+4 karakter).

Keluaran:

masukkan deskripsi gambar di sini

Gagang pintu
sumber
1
convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"
Digital Trauma
@DigitalTrauma Terima kasih! Itu menghemat 4 karakter dan tidak keluar dengan kesalahan. (Juga, saya tidak pernah tahu bahwa ImageMagick dapat membaca dari / menulis ke STDIN.)
Gagang Pintu
Anda bisa menggunakannya -scalesebagai ganti -sample; juga, garis miring terbalik tampaknya tidak perlu
aditsu
25

LaTeX, 139 byte

Terima kasih kepada @WChargin karena telah menghemat 21 byte.

\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}

Ini mencetak gambar 12cm * 8cm berikut pada halaman A4:

masukkan deskripsi gambar di sini

Perhatikan bahwa "Halaman 1" juga dicetak di bagian bawah halaman

Fatalisasi
sumber
1
Nah ini sekitar 100 byte lebih pendek dari asymptotesolusi saya ...
Arcturus
1
s.\newcommand\z[1].\def\z#1untuk 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
wchargin
1
Anda juga bisa\input color
wchargin
1
Untuk kelengkapan, versi revisi (139 byte):\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 byte

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

Ada beberapa karakter yang tidak patut, jadi inilah hexdump:

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

Ini membuat file o.png, yang persis 78 lebar piksel dan tinggi 52 piksel:

masukkan deskripsi gambar di sini

Penjelasan:

.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
Jakube
sumber
1
Untuk sesaat, saya pikir saya telah salah mengerti spesifikasi PNG.
primo
1
save it as an image o.png, tapi tidak ada ".png" di mana saja?
rev
1
@ AsidShout Bagaimana Anda memanggil program? Jika Anda menggunakan python3 pyth.py code.pyth, maka Anda dapat menemukannya di direktori yang sama.
Jakube
20

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).

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

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):

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

Periksa validitasnya di: https://html5.validator.nu/

Layar hasil cetak:

hasil validasi

Ismael Miguel
sumber
1
Apakah kamu yakin Ketika saya memiliki file HTML dengan hanya baris ini, itu tidak berfungsi di Firefox, Chrome dan Safari. Jika file berisi elemen HTML lain setelah baris itu, itu berfungsi untuk saya. Jadi mungkin Anda tidak bisa membuang jejaknya >?
masukkan nama pengguna di sini
1
"Sangat valid"? Seharusnya style="..."jika itu yang Anda inginkan dalam contoh kedua.
mbomb007
3
@ mbomb007 Yang ingin saya lakukan adalah membuat kode HTML terkecil yang valid. Ini divalidasi dengan validator resmi, jadi, itu adalah HTML yang benar-benar valid . Anda dapat mencobanya sendiri jika Anda tidak percaya.
Ismael Miguel
1
@ mbomb007 Selain itu, kutipan yang hilang adalah masalah terkecil: tidak ada <html>, tidak <head>, tidak <body>, tidak </tr>, tidak, </td>dan tidak ada penutupan semua tag yang hilang.
Ismael Miguel
1
@insertusernamedi sini Anda benar. Itu mengganggu di Android juga. Saya mengujinya di jsfiddle. Tetapi ketika mengakses 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.
Ismael Miguel
17

TI-Basic, 52 44 42 byte

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

(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:

masukkan deskripsi gambar di sini

Jika bayangan tidak valid untuk tantangan, beri tahu saya!

Tanpa 2 baris pertama, akan terlihat seperti ini:

masukkan deskripsi gambar di sini

DanTheMan
sumber
Saya juga akan menyertakan versi tanpa tiga baris pertama hanya sebagai perbandingan.
GamrCorps
1
Saya pikir Anda bisa pergi dari Ymin ke Ymax. Anda juga dapat mengasumsikan layar default dari -10 hingga 10. Saya juga tidak yakin tentang validitas ini, karena wilayah merah dan biru hanya setengah teduh.
lirtosiast
@ThomasKwa Saya mengedit posting saya untuk menunjukkan mengapa saya tidak hanya menggunakan Ymin dan Ymax. Saya tidak menyadari bahwa saya dapat menganggap layar default, tetapi Anda tidak jelas tentang apa itu layar default. Bisakah Anda menjelaskan? Tentang hal "setengah teduh", itu hanya bagaimana TI-Basic menaungi sesuatu, jika tidak valid, saya akan segera mengubahnya.
DanTheMan
1
Layar default adalah Ymin = Xmin = -10, Ymax = Xmax = 10. Kalkulator dimulai dengan pengaturan jendela itu, dan AxesOn dll, sehingga Anda dapat menganggapnya.
lirtosiast
1
@ Doorknob Sejauh yang saya tahu, tidak mungkin melakukan itu tanpa menggunakan ilmu sihir.
DanTheMan
17

ffmpeg, 110 113 116 117 119 108 100 byte

Tampilan, menggunakan ffplay, 100 byte:

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

Disimpan ke file, menggunakan ffmpeg, 108 byte:

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

Versi saat ini dari perintah akan dibatalkan dengan kesalahan TETAPI akan menghasilkan gambar tunggal ".png", sama seperti yang ditunjukkan di bawah ini.

masukkan deskripsi gambar di sini

Gyan
sumber
8
Wow. Menyalahgunakan ffmpeg untuk membuat gambar ...
Cole Johnson
Heh, saya melihat pertanyaan ini dan berpikir untuk melakukan hal yang sama. Pekerjaan yang bagus membuatnya kompak. Jika diizinkan, Anda dapat membuatnya sedikit lebih kecil dengan menggunakan whitealih-alih #ffffff: nilainya harus sama.
Logan
Aku tahu. Tidak cukup terganggu. Akan melakukannya sekarang.
Gyan
Apakah #fff berfungsi?
ev3commander
Tidak. Tapi saya bisa melewatkan f di f.png
Gyan
16

CSS, 127 128 144 byte

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

Tidak perlu tag lain, hanya bekerja dengan elemen body-ement.

Suntingan

  • Disimpan 16 byte dengan menghapus display:block;dan beberapa ;.
  • Disimpan 1 byte , menghapus trailing }.
masukkan nama pengguna di sini
sumber
6
Padahal secara teknis CSS bukan bahasa pemrograman dengan definisi kami.
Conor O'Brien
10
@ CᴏɴᴏʀO'Bʀɪᴇɴ Saya tahu - hanya ingin mengalahkan SVG .
masukkan nama pengguna di sini
4
@ CᴏɴᴏʀO'Bʀɪᴇɴ benar, ini bukan jawaban yang valid.
Mego
2
@CᴏɴᴏʀO'Bʀɪᴇɴ it css disimpan sebagai file SASS, karena SASS adalah bahasa scripting apakah itu jawaban yang valid?
fcalderan
6
Ya, CSS biasa adalah file SASS yang valid.
ev3commander
16

JavaScript, 140 143 147 151 153 byte

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


Suntingan

  • Disimpan 2 byte dengan mengganti 2*i*26dengan i*52. Terima kasih untuk Cᴏɴᴏʀ O'Bʀɪᴇɴ .
  • Disimpan 4 byte dengan refactoring for-loop. Terima kasih untuk produk ETH .
  • Disimpan 2 byte dengan menggunakan withpernyataan. Terima kasih untuk Dendrobium .
  • Disimpan 2 byte dengan mengubah kenaikan menjadi penurunan. Berkat Shaun H .
  • Disimpan 3 byte dengan mengganti fillStyle=["#0055a4","#ef4135"][i]dengan i?"#ef4135":"#0055a4".
masukkan nama pengguna di sini
sumber
3
2*i*26bisa menjadi 52*i, bukan?
Conor O'Brien
7
@ CᴏɴᴏʀO'Bʀɪᴇɴ Tentu saja bisa. Terima kasih. Ini jauh melebihi waktu tidur saya.
masukkan nama pengguna di sini
2
Anda dapat mengurangi 2 byte dengan menggunakan withpernyataan: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
simpan satu byte: x=(d=document).body.appendChild(d.createElementkanvas ).getContext2d;for(i=3;--i;x.fillRect(i*52,0,26,52))x.fillStyle=[,"#ef4135","#0055a4"][i]
Shaun H
2
@Dendrobium Itu bagus. Terima kasih banyak.
masukkan nama pengguna di sini
13

R, 59 byte

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

Output ditampilkan:

masukkan deskripsi gambar di sini

Satu juga dapat melakukan 49 byte dengan

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

jika Anda tidak keberatan dengan sumbu dan batas:

masukkan deskripsi gambar di sini

flodel
sumber
2
Rasio tampaknya salah. Saya pikir Anda memiliki rasio 2: 3 pada satu persegi panjang berwarna, bukan rasio 3: 2 pada seluruh bendera.
Fatalkan
Rasio dapat disesuaikan secara manual dengan mengubah ukuran jendela plot.
flodel
3
Agar memenuhi syarat, entri Anda harus bekerja 'di luar kotak'. Lain, siapa pun dapat memposting solusi 6-pixel dan mengatakan 'Anda dapat memperbesar secara manual'.
Sanchises
4
Anda mengatakan 'kapak', saya katakan 'tiang bendera'.
2
@sanchises: Saya orang Prancis dan saya katakan f ** k it. LIBERTE!
flodel
12

Blitz 2D / 3D , 154 108 byte

Ini menghasilkan hal yang persis sama dengan contoh yang diberikan dalam pertanyaan (kecuali untuk anti-aliasing di tepi tempat warna bertemu).

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

Output ditampilkan dan terlihat seperti ini:

masukkan deskripsi gambar di sini

El'endia Starman
sumber
12

Mathematica, 63 94 103 byte

Ketika 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!

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

(Terima kasih kepada Martin Büttner karena mencukur 5 byte tetapi menambahkan 16)

Terlihat seperti ini:

masukkan deskripsi gambar di sini

Jika Anda menambahkan ,Axes->Nonetampilannya seperti ini:

masukkan deskripsi gambar di sini

Jika Anda tidak peduli dengan perbatasan, Anda dapat menggunakan ini: (95 byte)

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

Terlihat seperti ini:

masukkan deskripsi gambar di sini

Tanpa sumbu:

masukkan deskripsi gambar di sini

DanTheMan
sumber
3
Axes->None. Anda juga harus teliti AspectRatio->2/3. Mengganti Nama RGBColorsederhana: r=RGBColor;...r["..."]. Anda juga dapat menggunakan notasi awalan untuk menyimpan dua byte lagi r@"#0055a4".
Martin Ender
Jika Anda tidak membutuhkan garis besarnya, cobalah BarChart[{1, 1}, ChartStyle -> {RGBColor["#0055a4"], Red}, BarSpacing -> 1]. Merah terlihat cukup dekat.
DavidC
@DavidCarraher Meh, karena pertanyaan menentukan nilai RGB tertentu, yang harus digunakan dengan tepat.
Martin Ender
Rekomendasi utama saya adalah menggambar dua persegi panjang, bukan tiga. Anda secara teknis benar tentang Merah, namun.
DavidC
Tidakkah perbatasan di sekitar bilah membatalkan solusi ini?
LegionMammal978
11

Javascript (ES6) 117 byte

Menariknya di konsol

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

George Reith
sumber
2
Untuk 'white'saya pikir itu lebih pendek untuk melakukan: #fff. Juga, warna Merah dan Biru harus cocok dengan warna yang ditentukan dalam spesifikasi
Downgoat
1
Anda dapat menyimpan beberapa byte dengan i=c=s=[]alih - alih i=0,c=[],s=''setelah memperbarui warna yang mungkin sedikit membantu ...
Dom Hastings
1
@ Vɪʜᴀɴ Saat mengeluarkan dalam teks, Anda dapat menggunakan warna standar ( reddan blue). Ini adalah poin ke-2, dihitung dari bawah. Ini dalam spesifikasi.
Ismael Miguel
@HomHastings Tip yang bagus, penggunaan paksaan yang cerdas. Terima kasih!
George Reith
1
@sysreq Teksnya di konsol ... Saya tidak punya kendali atas ketinggian konsol Anda. Ini 78 karakter lebar 52 tinggi.
George Reith
10

pb , 68 byte

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

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:

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
}
monmon bawah tanah
sumber
78x30 akan memberi Anda dimensi yang Anda inginkan untuk output terminal.
Mego
@Mego Ya, tapi saya tidak yakin apakah itu diizinkan.
undergroundmonorail
Output yang dihasilkan pada xterm dalam font default cocok dengan dimensi yang ditentukan.
Mego
Namun, saya merasa aneh mengukur ukuran output konsol selain "karakter".
undergroundmonorail
1
Ketika karakter Anda 1.2x lebih tinggi dari lebar, mereka tidak menghasilkan piksel yang sangat baik.
Mego
10

C, 115 byte

masukkan deskripsi gambar di sini

#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);}

Berisi unsintables:

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                                  ;}.

Agar program ini dapat berfungsi, beberapa hal harus benar:

  • Terminal mendukung ESC [48;2;<r>;<g>;<b>murutan pelarian "truecolor".
  • Terminal bukan xterm, karena implementasi xterm di atas akan menghasilkan warna yang sedikit salah.
  • Terminal sepenuhnya mengabaikan karakter NUL.

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:

masukkan deskripsi gambar di sini

Functino
sumber
Mengalami masalah saat menyusun ini dengan 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 "
steve
1
@ Sveve apakah itu peringatan kesalahan kita?
Functino
1
@Steve Baru saja mengujinya, gcc 5.2.1. Tidak ada bendera. Menghasilkan 12 peringatan tetapi membuat biner yang berfungsi.
Functino
permintaan maaf - berfungsi dengan baik - bingung dengan peringatan (dan fakta bahwa kode tersebut terlihat cukup samar untuk seorang pemula C seperti saya)
steve
9

MATLAB, 82 79 78 byte

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)

Outputnya seperti:

costrom
sumber
1
Versi MATLAB yang mana? Tidak bekerja pada r2013a karena warna harus angka desimal dalam kisaran [0,1].
Tom Carpenter
1
Baris berikut berfungsi 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.
Tom Carpenter
1
@ TomCarpenter Saya berjarak pada skala warna 0-1, sudah agak lama sejak saya harus menentukan warna. Sedangkan untuk titik koma / baris baru, saya memilih keterbacaan daripada penulisan konsol, tapi saya sudah mengubah jawaban saya
costrom
9

Visual Basic + Excel, 618 137 byte

Hanya ingin tahu bagaimana ini bisa bermain golf.

EDIT: Keingintahuan puas, terima kasih kepada @Neil dan @JimmyJazzx, 618 byte turun hingga 137 byte

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

Bendera Excel

steve
sumber
1
Merekam hasil makro dalam kode sangat tidak efisien. Coba Range("A1:C13").Interior.ColorIndex = 5dan Range("G1:I13").Interior.ColorIndex = 3yang sepertinya cukup.
Neil
2
Maaf, itu adalah Excel 2003, dan saya lupa menyertakan ActiveWorkbook.Colorsuntuk menentukan nilai RGB yang tepat. Excel 2007 memiliki opsi warna tambahan tapi saya tidak mengetahuinya begitu saja.
Neil
1
Saya mendapatkan 137 byte dengan beberapa Perubahan Cepat. Saya pikir Anda bisa Kurangi ini tetapi ini adalah perubahan yang mudah. 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
Saya mendapatkan 135 denganSub 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 byte

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

Thomas Eschemann
sumber
1
* *{background:linear-gradient(90deg,#0055a4,#0055a4 33%,#fff 33%,#fff 66%,#ef4135 66%) 0 0/78px 52px no-repeat}- satu byte lebih pendek
user2428118
1
sebenarnya satu * sudah cukup :) Terima kasih!
Thomas Eschemann
1
+1; Anda bisa menyimpan byte lain dengan menghapus trailing }.
masukkan nama pengguna di sini
1
Anda dapat menghapus warna pertama, Anda menghemat 8 byte.
Awashi
Anda dapat mengganti yang terakhir 66%dengan 0.
Mr_Green
8

Dyalog APL ( 47 44)

⎕SM←↑1 21 41{(''⍴⍨2/20)1⍺,⍵,⍨4↑0}¨2*8 11 10

Hasil:

bendera

marinus
sumber
2
Anda dapat melakukan 2*8 11 10?
lirtosiast
1
@ ThomasKwa: terima kasih
marinus
8

iKe , 43 byte

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

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.

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

Jika persyaratan warna kurang ketat, kami dapat menggunakan salah satu palet bawaan iKe dan menyimpan sejumlah besar karakter:

windows@7 0 4

bendera

Cobalah di browser Anda .

Sunting:

Disimpan satu byte dengan menggunakan #FFFwarna CSS pendek untuk garis putih:

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

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:

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

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:

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

flag2

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:

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

Oktaf, 77 76 byte

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

Menampilkan gambar:

masukkan deskripsi gambar di sini

gelas kimia
sumber
7

Memproses, 100 Bytes

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

Menampilkan ini: Perancis

(Solusi naif lebih pendek dari yang pertama.)

geokavel
sumber
Saya pikir perintah menggambar Processing dapat keluar sebelum pixel mendorong di sini:size(78,52);noStroke();int[]p={0xFF0055A4,255,0xFFEF4135};for(int c:p){translate(26,0);fill(c);rect(0,0,-26,52);}
JohnE
@ John Lol, ya saya baru saja memperhatikan itu.
geokavel
@ JohnE Bahkan solusi super dasar saya lebih pendek dari milik Anda!
geokavel
haha- sepertinya kita berdua terlalu rumit
JohnE
bagaimana dengan menyalahgunakan instruksi skala? Ini berfungsi pada sketchpad.cc tetapi mungkin rusak dalam Memproses 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

Ruby, 56 47 45 byte

ASCII

$><<"\e[34z\e[37z\e[31z\n".gsub(?z,?m*27)*52
Peter Lenkefi
sumber
Yap, ini lebih baik dari milikku. Kecuali bilah tengah harus berwarna putih.
iamnotmaynard
@iamnotmaynard Benar, sudah diperbaiki. Terima kasih!
Peter Lenkefi
7

PHP, 70 byte

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);

Di atas adalah hexdump yang dapat dibalik dengan xxd -r. Atau, itu juga dapat dibuat dengan skrip PHP berikut:

<?=hex2bin('424d0000000000000000230000000c0000002001c00001000800a45500ffffff3541ef3c3f666f72283b3665343e24693b296563686f206368722824692b2b2f39362533293b');

Saya menganggap pengaturan default, karena mereka tanpa .ini (Anda dapat menonaktifkan .ini lokal Anda dengan -nopsi). Menghasilkan gambar .bmp (288 x 192), yang harus disalurkan ke file. Ini sebesar yang saya bisa membuatnya tanpa mempengaruhi jumlah byte.


Contoh Penggunaan

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

Keluaran

Bendera Perancis

primo
sumber
Warna-warna ini tidak terlihat benar. Apakah mereka menggunakan nilai RGB yang ditentukan dalam pertanyaan?
Gagang Pintu
@ Doorknob Mereka lakukan. Mulai dari byte 26, tiga palet warna nilai didefinisikan (bgr): A45500, FFFFFF, 3541EF.
primo
6

ShaderToy (GLSL), 147 byte

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);}

Lihat di sini

Tidak terlalu mengasyikkan. Saya yakin ada cara untuk golf lebih banyak; Saya akan mengambil celah ketika saya pulang.

Robert Fraser
sumber
3
Tautan dialihkan ke shadertoy.com/error : /
Quentin