Fransa'nın ulusal bayrağını çizin


106

Diğer birçok bayrak yayınlanmıştır zorluklar ama değil bir olmuştur ulusal bayrak arasında Fransa'da . Bu hafta uygun bir zaman gibi görünüyor.

Bu bayrağını mümkün olan en az baytta üret:

Fransız bayrağı

  • Resim en az 78 piksel genişliğinde ve 52 piksel yüksekliğinde, 3: 2 oranında olmalıdır.
  • Her şerit genişliğinin üçte birini alır.
  • : Soldan sağa şerit renkleri RGB vardır (0, 85, 164), (255, 255, 255), (239, 65, 53).
  • Görüntü bir dosyaya kaydedilebilir veya herhangi bir ortak görüntü dosyası biçiminde STDOUT'a işlenmemiş olabilir veya görüntülenebilir.
  • Alternatif olarak, renklendirmek için ANSI renk kodlarını kullanarak bayrağı gösteren beyaz boşluk olmayan karakterlerden oluşan en az 78 karakter genişliğinde bir metin bloğu çıktısı alın. (Standart mavi, beyaz ve kırmızı kullanın.)
  • Yerleşik bayrak resimlerine / kitaplıklarına izin verilmez.

Bayt cinsinden en kısa kod kazanır.

Liderler Sıralaması

Bu yazının altındaki Yığın Parçacığı, a) dilindeki en kısa çözümlerin bir listesi olarak ve b) genel bir lider tablosu olarak cevaplardan lider tablosu oluşturur.

Cevabınızın göründüğünden emin olmak için, lütfen aşağıdaki Markdown şablonunu kullanarak cevabınızı bir başlık ile başlatın:

## Language Name, N bytes

Gönderinizin Nbüyüklüğü nerede ? Puanınızı artırmak varsa, olabilir onları içinden vurarak, başlığa eski hesapları tutmak. Örneğin:

## Ruby, <s>104</s> <s>101</s> 96 bytes

Başlığınıza birden fazla sayı eklemek istiyorsanız (örneğin, puanınız iki dosyanın toplamı olduğundan veya tercüman bayrağı cezalarını ayrı ayrı listelemek istediğiniz için), gerçek puanın başlıktaki son sayı olduğundan emin olun :

## Perl, 43 + 2 (-p flag) = 45 bytes

Dil adını, daha sonra pasajda görünecek bir bağlantı da yapabilirsiniz:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


4
Bu RGB değerleri resminizle eşleşmiyor. : Gördüğüm kadarıyla, RGB var (0, 35, 149), (255, 255, 255), (237, 41, 57).
beher

8
Belirtilen paleti kompakt bir şekilde saklamak, çoğu dilde bu sorunun en zor kısmıdır. Buna bakıldığında, standart bir paletle ANSI çıkışına izin vermek için grafiksel çözümlerin haksız göründüğü görülmektedir. Neden grafiksel çözümlerin oyun alanını dengelemek için saf (0, 0, 255) / (255, 255, 255) / (255, 0 0) kullanmasına izin vermiyorsunuz?
JohnE

15
Her şerit genişliğinin üçte birini alır. Donanma türevini kullanmak daha ilginç olabilir: 17 Mayıs 1853 tarihli bir yönetmelikle donanma, bayrak çırpma bölümlerinden uzaklaştıkça, bayrak kullanmaya devam ettiği 30:33:37 oranlarını kullanmaya devam etti. yarda daha küçük görünüyor.
Ben Jackson,

34
echo 🇫🇷yeterince büyük değil
Dijital Travma

5
@JohnE Katılıyorum. Renklerle ilgili kurallar ASCII-art çözümlerine büyük bir avantaj sağlıyor. Ayrıca, keyfi renkleri kullanabilen ve rastgele renkler yapamayan birçok harika dili diskalifiye eden diller için mücadeleyi daha zorlaştırmaz (yalnızca gerçekten bayt ekler).
bir

Yanıtlar:


38

CJam, 23 22 bayt

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*

Yukarıdakiler, tersine çevrilebilecek bir hexdump'tır xxd -r.

İki ekstra bayt pahasına - toplam 24 bayt - bunun yerine arka plan renklerini kullanabiliriz, bu da çıktıyı biraz daha güzel hale getirir.

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*

Nasıl çalışır

Her iki programda, biz ANSI çıkış sırasını kullanmak \x9bXYm- Xolduğu 3ön plan rengi için ve 4arka plan rengi için, ve Ykullanılacak rengi belirler - bayrağının üç renk arasında geçiş yapmak için.

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

Diğer program benzer.

Çıktı

çıktı


Şu anda "resmi" ne kadar uzun yapmam gerektiğinden emin değilim.
Dennis

Cevabımda 78x30 ile gittim. Lucida Console 9 pt'deki (xterm için varsayılan yazı tipi) bu boyutlar 3: 2'ye en yakın olanını verdi.
Mego

'Prettyness' için tam bir blok kullanabilirsiniz
Matthew Roh

75

Saf Bash (OSX'te), 84

Varsayılan OSX terminali tam renkli emojiyi destekler. Bunun metin veya grafik çıktı olarak sayılıp sayılmadığından emin değil.

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

Çıktı şöyle görünür:

görüntü tanımını buraya girin


Alternatif:

OSX yardımcı programları ile Bash, 56

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

dcifadesi:

  • 3^26-1üçlü olarak hesaplar ve yazdırır22222222222222222222222222
  • Bunu 2'ye böler, sonra çarpar 3^26. Üçlü çıktı bu1111111111111111111111111100000000000000000000000000

trdaha sonra 210 karakteri 🔵⚪️🔴'a çevirir. yesBu satırı süresiz olarak verir. sed 26q26 satırdaki çıkışı durdurur.


51
Emojiyi destekleyen bir terminal. Vay.
rr

6
İlk çözüm doğru RGB değerlerini kullanmıyor ya da standart ANSI renkleri kullanmıyor, değil mi?
Doorknob

@Doorknob Elbette haklısın - ne çözüm yok - yani bu cevap çizgiyi aşabilir.
Dijital Travma

3
Sadece Unicode.
undergroundmonorail

1
@ steve Bu cevabın o kadar popüler olmasını beklemiyordum, özellikle de geçerliliği ile ilgili sorular olduğu düşünülürse . Geçerli olup olmadığını düşünerek yay ya da nay verebilir misiniz? Teşekkürler!
Dijital Travma

51

Desmos, 30 12 bayt

3x>10
3x<-10

Çevrimiçi deneyin.

Bunun geçerli olup olmadığından tam olarak emin değilim, lütfen herhangi bir sorun olursa bana bildirin.


3
@ CᴏɴᴏʀO'Bʀɪᴇɴ Varsayılan renkler bu sıraya göre kırmızı ve mavidir (inanıyorum), böylece onları ayarlamanıza gerek kalmaz.
Bir spaghetto

7
@ CᴏɴᴏʀO'Bʀɪᴇɴ O zaman rastgele bir bayrak üreteci;)
DanTheMan

3
@ CᴏɴᴏʀO'Bʀɪᴇɴ Benim için rastgele değiller - iki eşitsizliği elle girmek sürekli olarak beni kırmızıya, sonra maviye çeviriyor.
Mego

1
Bu tuhaf. Ben de kırmızı ve mavi alıyorum.
lirtosiast

2
Öyle olduğunu sanmıyorum ... tam olarak en boy oranına uymuyor.
Doorknob

51

Python 2, 47 bayt

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

Yazdırılamayanları içerir - burada bir hexdump (ile geri dönüşlü 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

Renkli karakterleri STDOUT'a yazdırmak için ANSI çıkış kodlarını kullanır - Fransa için "F" yi seçtim. Çevrimiçi bağlantı yok, çünkü ideone çıktıdaki ANSI çıkış kodlarını desteklemiyor.

Dennis ve xnor'a bazı harika ipuçları için teşekkürler.

Ekran görüntüsü xterm'den:

bayrak


1
Orada fazladan bir yer var. in [0]->in[0]
mbomb007

2
1. Bunun yerine gerçek ESC baytlarını kullanabilirsiniz \x1b. 2. Bolding gerekli görünmüyor. 3. Bunun ANSI sanatına da uygulanıp uygulanmayacağından emin değilim, ancak sorunun 3: 2 oranını gerektirdiği görülüyor.
Dennis

Bu biçimlendirme ile parametrelerde denizaltıya daha kısa: print("\x1b[3%s;1mF"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30.
xnor


4
Karakteri, örneğin biraz daha hoş görünüyor print("\x1b[3%s;1m█"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
ali_m

44

HTML / SVG, 76 bayt 87 88 121 122 149

@İnsertusernamehere sayesinde 27 bayt kaydedildi

@Joey sayesinde 9 bayt kazandırır

@Sanchies sayesinde 1 bayt kaydedildi

@Neil sayesinde 1 bayt kazandırır

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

Çok sayıda HTML sözdizimi kötüye kullanımı, bu oldukça kısa olabilir.


Çıktının ekran görüntüsü:

Fransa Bayrağı Çıktı


Veya deneyin (tarayıcınızın SVG'yi desteklediğinden emin olun):

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


3
Seni CSS ile yenmeye çalıştım ve şimdi SVG'nizi CSS çözümümden bile daha küçük olduğu için golf oynadım. : D Safari, Chrome ve Firefox'ta çalışabileceğim en kısa süre , 122 bayt uzunluğunda:<svg><rect width=78 height=52 fill="#ef4135"/><rect width=52 height=52 fill="#fff"/><rect width=26 height=52 fill=#0055a4>
insertusernamehere 18:15

1
@insertusernamehere Teşekkürler, Bu 27 bayt kurtardı! Ben şaşırtıcı, 88 bayt golf bu aşağı ilerletmek için idare ettik
Downgoat

3
Benim için de fill=#0055a4 />çalışır (hayır "), bir bütün baytı kurtarır.
10'da Sanchises

3
@ bir bütün bayt @ sanchises? o_O vay : D
developerbmw

4
@developerbmw Aslında, düşündüğünüzde yarım bayt tasarruf etmek daha etkileyici olacaktır.
Sanchises

29

Brainfuck $ , 153 bayt

+++++++++++++[->>>++>+++++++>++++>>>>++++++++>+++<<<<<<<<<<]>>>+>>#->$#>$#+++++++>$--->+++++[<]<<+++++[->+++++>++++++<<]>+#>($#([-]>[.>]<[<])>>>>+++<<<<)

Görüntüyü ANSI renk kodlarıyla çıkarır. Mego gibi 30 bir boy seçtim .

Yayınlar sayfasına bağlı 2009'dan itibaren yapılan referans uygulaması kayboldu. Benim tarafımdan yapılmış, bu esolangs sayfasından her şeyi destekleyen bu tercümanı kullanarak çalıştırabilirsiniz.

Brainfuck, 258 bayt

Bu temelde aynı şey, ama sadece düz eski Brainfuck.

>>+++++++++++++[-<<++>>>>++>+++++++>++++>++++>+++++>++++>++++++++>+++[<]<]>>+>>->>------>--->+++++[<]<<<++++[>+++++[->+++++<]>+[>>[.>]<[<]<-]>>>>>+++[<]+++++[-<+++++>]<+[>>[.>]<[<]<-]>>>>>------[<]+++++[-<+++++>]<+[>>[.>]<[<]<-]>>>>>+++[<]<++++++++++.[-]<<-]

Veya, bunu bir KODU (984 bayt) cinsinden tercih ediyorsanız :

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

25

Bash + ImageMagick, 60 77 73 bayt

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

(ugh, +17 karakterleri nedeniyle daha önce farketmedim renk gereksinimleri ...)

aNetpbm formatında dosyaya çıktı verir:

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

Dosya a.pngadını (+4 karakter) olarak değiştirirseniz PNG'de de çıktı verebilir .

Çıktı:

görüntü tanımını buraya girin


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

@DigitalTrauma Teşekkürler! Bu 4 karakter kazandırır ve bir hata ile çıkmaz. (Ayrıca, ImageMagick’in
STDIN’den / STDIN’e yazabildiğini

Sen kullanabilirsiniz -scaleyerine -sample; Ayrıca, ters eğik çizgi gerekli görünmüyor
aditsu

25

LaTeX, 139 bayt

21 byte tasarruf için @ WChargin teşekkürler.

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

Bu, bir A4 sayfasına aşağıdaki 12cm * 8cm görüntüyü yazdırır:

görüntü tanımını buraya girin

Ayrıca, "Sayfa 1" sayfanın altına da basıldığını unutmayın.


1
Peki bu benim asymptote
Arcturus

1
s.\newcommand\z[1].\def\z#1bir demet baytı kurtarmak için. Ayrıca, birkaçını kullanarak tıraş olabilirsiniz \def\z#1!{…}\z0,.33,.64!\z1,1,1!\z.94,.25,.21!- bu, gruplama için parantez yerine kendi sınırlayıcılarınızı kullanın
wchargin 20:15

1
Ayrıca yapabilirsiniz\input color
wchargin 20:15

1
\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}
Bütünlüğü için

24

Pyth, 27 bayt

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

Bazı yazdırılamayan karakterler var, bu yüzden burada bir 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

Bu o.png, tam 78 piksel genişliğinde ve 52 piksel yüksekliğinde bir dosya oluşturur :

görüntü tanımını buraya girin

Açıklama:

.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

1
Bir anlığına, PNG spesifikasyonunu çok yanlış anladığımı sanıyordum.
primo

1
save it as an image o.png, ama hiçbir yerde ".png" yok mu?
rev

1
@ AsidShout Programı nasıl çağırırsınız? Kullanırsanız python3 pyth.py code.pyth, aynı dizinde bulabilirsiniz.
Jakube

20

HTML (ilginç mod), 68 bayt

Bu, bayrağı oluşturmak için tuhaflıklar modunu kullanır.

HTML, ÇOK geçersiz, ancak bir hisse senedi Android 4.4.2 tarayıcısında ve Firefox 42.0'da (Windows 7 x64'te) çalışır.

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

Bayrak doğru boyutta ve standart kırmızı ve mavi renklerle oluşturulur. Tüm web sayfaları standart bir beyaz arka planla başlar.



Alternatif olarak:

Mükemmel derecede geçerli bir HTML5 sürümü (141 bayt):

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

Bunun geçerliliğini kontrol edin: https://html5.validator.nu/

Sonuç ekran görüntüsü:

doğrulama sonucu


1
Emin misiniz? Sadece bu satırda bir HTML dosyasına sahip olduğumda, Firefox, Chrome ve Safari’de çalışmıyor. Dosya bu satırdan sonra başka HTML elemanları içeriyorsa, benim için çalışıyor. Öyleyse belki de izini atamazsın >?
insertusernamehere

1
"Mükemmel derecede geçerli"? style="..."İkinci örnekte bunun için gidiyoruz eğer olmalı .
mbomb007

3
@ mbomb007 Ben gidiyorum en küçük geçerli HTML kodunu oluşturmaktır. Resmi onaylayıcı ile doğrulanır, bu yüzden tamamen geçerli bir HTML'dir. İnanmazsan kendin deneyebilirsin.
Ismael Miguel

1
@ mbomb007 Ayrıca, eksik tırnak en küçük konudur: yok <html>, hayır <head>, hayır <body>, hayır </tr>, hayır </td>ve tüm eksik etiketlerin kapatılması yoktur.
Ismael Miguel

1
@insertusernamehere Haklıydın. Android'de de rahatsız ediyordu. Jsfiddle'da test ettim. Ancak erişirken data:text/html,<table width=78 height=52><td bgcolor=0055a4><td><td bgcolor=ef4135>, işe yaramadı. Şimdi düzeltildi ve test etmek için bağlantıyı kullanın.
Ismael Miguel

17

TI-Basic, 52 44 42 bayt

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

([-10,10,1] grafik alanı tarafından varsayılan [-10,10,1] varsayılır)

İlk 2 satır olmadan 4 bayt daha kısa olurdu, ancak varsayılan olarak eksenleri olurdu ve güzel görünmüyordu.

Buna benzer:

görüntü tanımını buraya girin

Gölgeleme zorluk için geçersizse, bana bildirin!

İlk 2 satır olmadan şöyle görünür:

görüntü tanımını buraya girin


Aynı zamanda ilk üç satırı olmayan versiyonu da kıyaslayacağım.
GamrCorps

1
Bence Ymin'den Ymax'a gidebilirsin. Ayrıca -10 ile 10 arasında varsayılan bir ekran da kullanabilirsiniz. Kırmızı ve mavi bölgeler sadece yarı gölgeli olduğu için bunun geçerliliğinden de emin değilim.
lirtosiast 18:15

@ThomasKwa Neden sadece Ymin ve Ymax kullanmadığımı göstermek için yazımı düzenledim. Varsayılan bir ekranı seçebileceğimin farkında değildim, ancak bu varsayılan ekranın ne olduğu konusunda net değilsiniz. Lütfen açıklığa kavuşturur musunuz? "Yarı gölgeli" bir şey hakkında, bu TI-Basic’in gölgelendirme şeklidir, geçersizse derhal değiştiririm.
DanTheMan

1
Varsayılan ekran Ymin = Xmin = -10, Ymax = Xmax = 10'dur. Hesap makinesi bu pencere ayarlarıyla ve AxesOn vb. İle başlar, böylece bunları varsayabilirsiniz.
lirtosiast

1
@Doorknob Bildiğim kadarıyla, büyücülüğe başvurmadan bunu yapmak imkansız.
DanTheMan

17

ffmpeg, 110 113 116 117 119 108 100 bayt

Ffplay, 100 bayt kullanarak göster:

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

Ffmpeg, 108 bayt kullanılarak dosyaya kaydedildi:

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

Komutun şu anki sürümü bir hatayla sonlandırılacak, ancak aşağıda gösterildiği gibi tek bir ".png" görüntüsü çıkacak.

görüntü tanımını buraya girin


8
Vay. Görüntüleri yapmak için ffmpeg kötüye kullanmak ...
Cole Johnson

Heh, bu soruyu gördüm ve aynı şeyi düşündüm. Kompakt yapmak güzel bir iş. O izin verilirse size kullanarak bunu biraz daha küçük yapabilir whiteyerine #ffffffdeğerleri aynı olmalıdır.
kasım 1915’de.

Biliyorum. Yeterince rahatsız değildi. Şimdi yapacağım.
Gyan

#Fff çalışıyor mu?
ev3 komutanı

Hayır Ama f.png içinde f atlayabilirsiniz
Gyan

16

CSS, 127 128 144 bayt

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

Başka bir etikete gerek yok, sadece body-element ile çalışır .

Düzenlemeler

  • Ve bazı kaldırarak 16 bayt kaydedildi .display:block;;
  • 1 bayt kaydedildi , sondaki kaldırıldı }.

6
Teknik olarak CSS tanımlarımız tarafından bir programlama dili değildir.
Conor O'Brien

10
@ CᴏɴᴏʀO'Bʀɪᴇɴ biliyorum - sadece dövmek istedi SVG'yi .
insertusernamehere

4
@ CᴏɴᴏʀO'Bʀɪᴇɴ haklı, bu geçerli bir cevap değil.
Mego

2
@ CᴏɴᴏʀO'Bʀɪᴇɴ css bir SASS dosyası olarak kaydedildi, çünkü SASS bir betik dili olduğundan geçerli bir cevap mı olurdu?
fcalderan

6
Evet, normal CSS geçerli bir SASS dosyasıdır.
ev3 komutanı

16

JavaScript, 140 143 147 151 153 bayt

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


Düzenlemeler

  • Kaydedilen 2 bayt yerine 2*i*26ile i*52. Cᴏɴᴏʀ O'Bʀɪᴇɴ'ya teşekkürler .
  • Döngü refactoring tarafından 4 bayt kaydedildifor . ETHproductions'a teşekkürler .
  • -Statement kullanarak 2 bayt kaydedildiwith . Dendrobium'a teşekkürler .
  • Artışı azalmaya dönüştürerek 2 bayt kurtarıldı . Shaun H'ye teşekkürler .
  • Kaydedilen 3 bayt yerine fillStyle=["#0055a4","#ef4135"][i]ile i?"#ef4135":"#0055a4".

3
2*i*26olabilir 52*imi?
Conor O'Brien

7
@ CᴏɴᴏʀO'Bʀɪᴇɴ Tabii ki olabilir. Teşekkürler. Yatma zamanımın çok ötesinde.
insertusernamehere

2
Aşağıdaki withifadeyi kullanarak 2 bayt'ı tıraş edebilirsiniz :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
bir bayt kaydet: x=(d=document).body.appendChild(d.createElementtuval ).getContext2d;for(i=3;--i;x.fillRect(i*52,0,26,52))x.fillStyle=[,"#ef4135","#0055a4"][i]
Shaun H

2
@Dendrobium Bu iyi. Çok teşekkürler.
insertusernamehere

13

R, 59 bayt

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

Çıktı görüntülenir:

görüntü tanımını buraya girin

Bir de 49 bayt ile yapabilirsiniz

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

Eksenleri ve sınırları dikkate almazsanız:

görüntü tanımını buraya girin


2
Oran yanlış görünüyor. Tüm bayrakta 3: 2 oran yerine tek renkli bir dikdörtgenin oranını 2: 3 olarak bulduğunuzu düşünüyorum.
15'de

Çizim penceresi yeniden boyutlandırılarak oran manuel olarak ayarlanabilir.
Flodel

3
Kalifiye olmak için, girişiniz 'kutudan çıkarılmalıdır'. Aksi takdirde, herkes 6 piksellik bir çözüm yayınlayabilir ve 'Manuel olarak yakınlaştırabilirsiniz' diyebilir.
Sanchises

4
'Eksen' diyorsun, 'bayrak direği' diyorum.

2
@ sanchises: Ben Fransız ve f ** k diyorum. LIBERTE!
flodel

12

Blitz 2D / 3D , 154 108 bayt

Bu, tam olarak soruda verilenle aynı şeyi üretir (renklerin birleştiği kenarlardaki kenar yumuşatma hariç).

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

Çıktı görüntülenir ve şöyle görünür:

görüntü tanımını buraya girin


12

Mathematica, 63 94 103 bayt

Bu meydan okumayı ilk gördüğümde, Sweet! Mathematica bunun için mükemmel olurdu! Yerleşiklerin yasaklandığını fark edene kadar: '(

Fakat bekle! Çubuk grafikleri kullanabilirim!

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

(Martin Büttner'e 5 byte'ı tıraş ettiği için 16 ekleyerek teşekkür ederiz)

Buna benzer:

görüntü tanımını buraya girin

Eklerseniz ,Axes->Noneşöyle görünür:

görüntü tanımını buraya girin

Kenarlığı umursamıyorsanız, şunu kullanabilirsiniz: (95 bayt)

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

Buna benzer:

görüntü tanımını buraya girin

Eksenler olmadan:

görüntü tanımını buraya girin


3
Axes->None. Ayrıca belirtmelisiniz AspectRatio->2/3. İsim değiştirme RGBColorbasittir: r=RGBColor;...r["..."]. İki bayttan daha fazla tasarruf etmek için ön ek gösterimi de kullanabilirsiniz r@"#0055a4".
Martin Ender

Taslağa ihtiyacınız yoksa, deneyin BarChart[{1, 1}, ChartStyle -> {RGBColor["#0055a4"], Red}, BarSpacing -> 1]. Kırmızı yeterince yakın görünüyor.
DavidC

@DavidCarraher Meh, soru belirli bir RGB değerini belirttiğinden, bu soru tam olarak kullanılmalı.
Martin Ender

Benim ana tavsiyem üç değil, iki dikdörtgen çizmekti. Bununla birlikte, teknik olarak Kırmızı konusunda haklısın.
DavidC

Çubukların etrafındaki sınırlar bu çözümü geçersiz saymaz mı?
LegionMammal978

11

Javascript (ES6) 117 bayt

Konsolda çizer

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


2
İçin 'white'bunu yapmak daha kısa olduğunu düşünüyorum: #fff. Ayrıca, Kırmızı ve Mavi renkler teknik özelliklerde belirtilen renklerle aynı olmalıdır
Downgoat

1
Sen bir kaç bayt kaydedebilirsiniz i=c=s=[]yerine i=0,c=[],s=''... biraz yardımcı olabilecek renkleri güncelledikten sonra
Dom Hastings

1
@ Vɪʜᴀɴ Metin çıktısı alırken standart renkleri ( redve blue) kullanabilirsiniz. Bu 2 puan, alttan sayıyor. Bu özellik içinde.
Ismael Miguel

@HomHastings Güzel bir ipucu, zorlamanın zekice kullanılması. Teşekkürler!
George Reith

1
@sysreq Konsoldaki metni ... Konsolunuzun hat yüksekliği üzerinde hiçbir kontrolüm yok. Boyu 78 karakter genişliğinde.
George Reith

10

pb , 68 bayt

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

Vay be, pb'nin gerçekten iyi olduğu bir meydan okuma! Bunlar arasında çok az ve çok var.

Pb için spec yazarken, renkli çıktı çoğunlukla şaka olarak dahil ettim. Dil, bir "fırça", neden olur almıştır değil rengini do? Örnek programlar dışında, bu onu ikinci kez kullandım. Sorunun gerektirdiği şekilde ANSI kodları ile uygulanır.

Çıkmak için 'M' karakterini kullandım çünkü oldukça yoğun.

Çıktı:

Bu ekran görüntüsünü dikey olarak yüksekliğinin üçte ikisi olacak şekilde yeniden boyutlandırdım, çünkü harfler kare değildir. Çıktı 78 x 52'dir, ancak orijinal ekran görüntüsü gerçekten yanlış görünüyor.

Yorumlar ve girinti ve önemsiz:

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
}

78x30 terminal çıkışı için istediğiniz ölçüleri alacaktır.
Mego

@Mego Evet, ama izin verilip verilmediğinden emin değilim.
undergroundmonorail

Varsayılan fonttaki xterm'deki sonuç belirtilen boyutlarla eşleşir.
Mego

Yine de, konsol çıktısının boyutunu "karakterler" dışında ölçmek kendimi garip hissediyorum.
undergroundmonorail

1
Karakterleriniz geniş oldukları kadar 1.2x olduğunda, çok iyi pikseller oluşturmazlar.
Mego

10

C, 115 bayt

görüntü tanımını buraya girin

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

Yazdırılamaz

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

Bu programın çalışması için birkaç şeyin doğru olması gerekir:

  • Terminal ESC [48;2;<r>;<g>;<b>m"truecolor" kaçış sırasını destekler .
  • Terminal xterm değildir, çünkü xterm yukarıdakileri uyguladığında biraz yanlış renkler ortaya çıkar.
  • Terminal, NUL karakterlerini tamamen görmezden gelir.

Terminalinizin arka planı siyahsa, aynı zamanda daha hoş görünür.

Bayrağın yüksekliğini değiştirmek için programa komut satırı argümanlarını iletin. Geçen her argüman için bayrak bir satır kısalır. Bu bir hata değil, bir özelliktir!

Çıktı:

görüntü tanımını buraya girin


Bunu derlerken sorun yaşadım gcc(sürüm 5.1.1). Derlemek için gerekli herhangi bir özel bayrak var mı? "ac: 1: 10: uyarı: ISO C99, #define c" adından sonra boşluk gerektirir. [48; 2;% d;% d;% dm "
steve

1
@ Steve bu bizim hatamızın bir uyarı mı?
Functino,

1
@ Steve Sadece tekrar denedim, gcc 5.2.1. Bayrak yok 12 uyarı üretti, ancak çalışan bir ikili dosya yaptı.
Functino

özür dilerim - iyi çalışıyor - uyarılarla karıştı (ve kodun benim gibi bir C acemisine oldukça gizli göründüğü gerçeği)
steve

9

MATLAB, 82 79 78 bayt

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)

Çıktı şöyle görünür:


1
MATLAB'ın hangi versiyonu? R2013a üzerinde çalışmaz çünkü renklerin aralıkta ondalık sayılar olması gerekir [0,1].
Tom Carpenter

1
Aşağıdaki satır çalışır fill(x,y,[0 85 164]/255,x+1,y,'w',x+2,y,[239 65 53]/255)ve size 2 byte kazandırır. :) Ayrıca fazladan malzemelerin basılmasını önlemek için yeni hatlar yerine noktalı virgül kullanırdım.
Tom Carpenter

1
@ TomCarpenter 0-1 renk skalasında boşluk bıraktım, renkleri belirtmek zorunda kaldığımdan bu yana biraz zaman geçti. Noktalı virgül / yeni satırlara gelince, konsol yazımında okunabilirliği
seçiyordum

9

Visual Basic + Excel, 618 137 bayt

Bunun nasıl oynanabileceğini görmek merak ediyorum.

EDIT: Meraklar @ Neil ve @JimmyJazzx sayesinde satıldı, 618 bayt 137 bayta düştü

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

Excel bayrağı


1
Bir makroyu kaydetmek, korkunç derecede verimsiz kodla sonuçlanır. Deneyin Range("A1:C13").Interior.ColorIndex = 5ve Range("G1:I13").Interior.ColorIndex = 3yeterli görünüyor.
Neil

2
Üzgünüz, bu Excel ActiveWorkbook.Colors2003'tü ve tam RGB değerlerini belirtmek için eklemeyi unuttum . Excel 2007'nin ek renk seçenekleri var ama bunları önceden bilmiyorum.
Neil

1
Birkaç Hızlı Değişiklik ile 137 bayt alıyorum. Sanırım bunu daha da azaltabilirsiniz ama bu kolay değişimler. 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

Ben 135 ile alırımSub 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 bayt

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


1
* *{background:linear-gradient(90deg,#0055a4,#0055a4 33%,#fff 33%,#fff 66%,#ef4135 66%) 0 0/78px 52px no-repeat}- bir bayt daha kısa
user2428118

1
Aslında bir tek * yeterli :) Teşekkürler!
Thomas Eschemann

1
+ 1; İzi kaldırarak başka bir bayttan tasarruf edebilirsiniz }.
insertusernamehere

1
İlk rengi silebilir, 8 bayt kaydedebilirsiniz.
Awashi

Geçen yerini alabilir 66%ile 0.
Mr_Green


8

iKe , 43 bayt

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

Bu bir "raw tuple" iKe programına bir örnektir - sadece bir orijin ( 0 0), bir palet ( 3 7#"#0055A4#FFFFFF#EF4135") ve bir bitmap ( +52#'&3#26) tanımlamasıdır . Böyle bir açıklamayı bir fonksiyona sarmanız veya canlandırmak istiyorsanız görünümlere referanslar kullanmanız gerekir.

Palet, spesifikasyonun onaltılık eşdeğeri olan bir dizi CSS rengi oluşturmanın çok basit bir yoludur.

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

Renk gereksinimleri daha az sıkı olsaydı, iKe'nin yerleşik paletlerinden birini kullanabilir ve hatırı sayılır sayıda karakter kaydedebilirdik:

windows@7 0 4

bayrak

Tarayıcınızda deneyin .

Düzenle:

#FFFBeyaz şerit için kısa bir CSS rengi kullanarak bir bayt kurtarıldı :

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

Başka biri iKe ile oynamak istiyorsa, github deposunda bir kılavuz var . iKe kullanarak çözdüğüm başka bir sorun daha var.

Düzenleme 2:

Bitmap'i oluşturmak için daha basit bir yolla bir bayt kaydedildi:

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

OP'deki soruma cevap verilmedi, ancak daha esnek renk gereksinimlerine izin verilirse kayıt için bu program Windows 3.1 paletini kullanarak 30 bayt olacaktır:

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

flag2

Bu sorun gönderildiğinden beri, iKe konumu olmayan çizilmiş dokuları otomatik olarak ortalayan ve başka bir 3 byte kazandırabilecek bir özellik kazanmıştır, ancak bu kurallara aykırıdır:

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

7

Octave, 77 76 bayt

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

Görüntüyü gösterir:

görüntü tanımını buraya girin


7

İşlem, 100 Bayt

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

Bunu görüntüler: Fransa

(Saf çözüm, ilk çözümden daha kısa.)


Sanırım İşleme'nin çizim komutları burada ilerleyen pikselin önünde ortaya size(78,52);noStroke();int[]p={0xFF0055A4,255,0xFFEF4135};for(int c:p){translate(26,0);fill(c);rect(0,0,-26,52);}
çıkabilir

@JohnE Lol, evet bunu farkettim.
geokavel

@JohnE Süper basit çözümüm bile sizinkinden daha kısa!
geokavel

Görünüşe göre ikimiz de fazla karmaşıktık
JohnE

Ölçek talimatlarını kötüye kullanmaktan ne haber? Bu, sketchpad.cc'de çalışır ancak İşleme 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 bayt

ASCII

$><<"\e[34z\e[37z\e[31z\n".gsub(?z,?m*27)*52

Evet, bu benimkinden daha iyi. Ancak orta çubuğun beyaz olması gerekiyor.
iamnotmaynard

@iamnotmaynard Doğru, düzeltildi. Teşekkürler!
Peter Lenkefi,

7

PHP, 70 bayt

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

Yukarıdakiler, tersine çevrilebilen bir hexdump'tır xxd -r. Alternatif olarak, aşağıdaki PHP betiği ile de oluşturulabilir:

<?=hex2bin('424d0000000000000000230000000c0000002001c00001000800a45500ffffff3541ef3c3f666f72283b3665343e24693b296563686f206368722824692b2b2f39362533293b');

Varsayılan ayarları varsayılan bir varsayım olarak kabul ediyorum (.ini olmadan) ( -nseçenekle yerel .ini'nizi devre dışı bırakabilirsiniz ). Bir dosyaya aktarılması gereken bir .bmp görüntüsü (288 x 192) üretir. Bu, bayt sayısını etkilemeden başarabildiğim kadar büyük.


Örnek Kullanım

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

Çıktı

Fransız bayrağı


Bu renkler doğru görünmüyor. Soruda belirtilen RGB değerlerini kullanıyorlar mı?
Doorknob

@Doorknob Onlar yapar. Bayt 26'dan başlayarak, üç değerlik bir renk paleti tanımlanır (bgr): A45500, FFFFFF, 3541EF.
primo

6

ShaderToy (GLSL), 147 bayt

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

Burada gör

Özellikle heyecan verici değil. Eminim daha çok golf oynamanın yolları vardır; Eve gittiğimde bir çatlak alacağım.


3
Bağlantı, shadertoy.com/error adresine yönlendirir : /
Quentin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.