Vẽ quốc kỳ Pháp


106

Đã có nhiều thách thức cờ khác được đăng nhưng không một cho lá cờ quốc gia của Pháp . Tuần này có vẻ như là một thời điểm thích hợp.

Tạo cờ này trong ít byte nhất có thể:

lá cờ Pháp

  • Hình ảnh phải có tỷ lệ 3: 2, với kích thước rộng tối thiểu 78 pixel và cao 52 pixel.
  • Mỗi sọc chiếm một phần ba chiều rộng.
  • Những màu sắc sọc từ trái sang phải là RGB: (0, 85, 164), (255, 255, 255), (239, 65, 53).
  • Hình ảnh có thể được lưu vào một tệp hoặc được dẫn thô đến STDOUT ở bất kỳ định dạng tệp hình ảnh phổ biến nào, hoặc nó có thể được hiển thị.
  • Ngoài ra, xuất một khối văn bản rộng tối thiểu 78 ký tự được tạo từ các ký tự không phải khoảng trắng mô tả cờ, sử dụng mã màu ANSI để tô màu cho nó. (Sử dụng màu xanh, trắng và đỏ tiêu chuẩn.)
  • Hình ảnh cờ / thư viện tích hợp không được phép.

Mã ngắn nhất tính bằng byte thắng.

Bảng xếp hạng

Đoạn trích Stack ở cuối bài này tạo bảng xếp hạng từ các câu trả lời a) dưới dạng danh sách các giải pháp ngắn nhất cho mỗi ngôn ngữ và b) dưới dạng bảng xếp hạng tổng thể.

Để đảm bảo rằng câu trả lời của bạn hiển thị, vui lòng bắt đầu câu trả lời của bạn bằng một tiêu đề, sử dụng mẫu Markdown sau:

## Language Name, N bytes

nơi Nlà kích thước của trình của bạn. Nếu bạn cải thiện điểm số của mình, bạn có thể giữ điểm số cũ trong tiêu đề, bằng cách đánh bại chúng thông qua. Ví dụ:

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

Nếu bạn muốn bao gồm nhiều số trong tiêu đề của mình (ví dụ: vì điểm của bạn là tổng của hai tệp hoặc bạn muốn liệt kê riêng các hình phạt cờ của thông dịch viên), hãy đảm bảo rằng điểm thực tế là số cuối cùng trong tiêu đề:

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

Bạn cũng có thể đặt tên ngôn ngữ thành liên kết sau đó sẽ hiển thị trong đoạn trích:

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


4
Những giá trị RGB không khớp với hình ảnh của bạn. Từ những gì tôi nhìn thấy, bạn đã có RGB: (0, 35, 149), (255, 255, 255), (237, 41, 57).
cốc

8
Lưu trữ bảng màu được chỉ định một cách gọn gàng có lẽ là phần khó nhất của vấn đề này trong hầu hết các ngôn ngữ. Do đó, có vẻ như không công bằng đối với các giải pháp đồ họa để cho phép đầu ra ANSI với bảng màu tiêu chuẩn. Tại sao không cho phép các giải pháp đồ họa sử dụng thuần túy (0, 0, 255) / (255, 255, 255) / (255, 0 0) để san bằng sân chơi?
JohnE

15
Mỗi sọc chiếm một phần ba chiều rộng. Có thể thú vị hơn khi sử dụng biến thể Hải quân: theo quy định ngày 17 tháng 5 năm 1853, hải quân quay trở lại sử dụng tỷ lệ 30:33:37, mà bây giờ nó vẫn tiếp tục được sử dụng, vì việc vỗ cờ khiến các phần xa hơn halyard dường như nhỏ hơn.
Ben Jackson

34
echo 🇫🇷không đủ lớn
Chấn thương kỹ thuật số

5
@ John Tôi đồng ý. Các quy tắc về màu sắc mang lại cho các giải pháp nghệ thuật ASCII một lợi thế lớn. Họ cũng không làm cho thách thức trở nên "khó khăn" hơn nữa (chỉ đơn thuần là thêm byte thực sự) cho các ngôn ngữ có thể sử dụng màu sắc tùy ý và loại bỏ một số ngôn ngữ tuyệt vời không thể tạo ra màu sắc tùy ý.
một spaghetto

Câu trả lời:


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*

Trên đây là một hexdump có thể được đảo ngược với xxd -r.

Với chi phí của hai byte bổ sung - với tổng số 24 byte - chúng ta có thể sử dụng màu nền thay thế, làm cho đầu ra đẹp hơn một chút.

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*

Làm thế nào nó hoạt động

Trong cả hai chương trình này, chúng tôi sử dụng thoát chuỗi ANSI \x9bXYm- nơi X3cho màu foreground và 4cho màu nền, và Yxác định màu sắc để sử dụng - để chuyển đổi giữa ba màu của lá cờ.

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

Các chương trình khác là tương tự.

Đầu ra

đầu ra


Hiện tại tôi không chắc mình nên tạo "hình ảnh" cao bao nhiêu.
Dennis

Tôi đã đi với 78x30 trong câu trả lời của tôi. Các kích thước đó trong Lucida Console 9 pt (phông chữ mặc định cho xterm) đã cho gần nhất với 3: 2.
Mego

Bạn có thể sử dụng một khối đầy đủ cho 'sự xinh đẹp'
Matthew Roh

75

Bash thuần túy (trên OSX), 84

Thiết bị đầu cuối OSX mặc định hỗ trợ biểu tượng cảm xúc đầy đủ màu sắc. Không chắc chắn nếu điều này được tính là đầu ra văn bản hoặc đồ họa.

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

Đầu ra trông như:

nhập mô tả hình ảnh ở đây


Cách khác:

Bash với các tiện ích OSX, 56

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

Các dcbiểu hiện:

  • tính toán 3^26-1và in nó trong ternary22222222222222222222222222
  • chia số này cho 2, sau đó nhân với 3^26. Đầu ra trong ternary này là1111111111111111111111111100000000000000000000000000

trsau đó dịch 210 ký tự thành. yesđầu ra dòng này vô thời hạn. sed 26qtạm dừng đầu ra ở 26 dòng.


51
Một thiết bị đầu cuối hỗ trợ biểu tượng cảm xúc.
rr-

6
Giải pháp đầu tiên không sử dụng đúng giá trị RGB và cũng không sử dụng màu ANSI tiêu chuẩn, phải không?
tay nắm cửa

@Doorknob Tất nhiên bạn đúng - không có giải pháp nào - vì vậy câu trả lời này có thể vượt quá giới hạn. Tôi đã yêu cầu OP làm rõ
Chấn thương kỹ thuật số

3
Nó chỉ là Unicode.
undergroundmonorail

1
@steve Tôi không thực sự mong đợi câu trả lời này trở nên phổ biến, đặc biệt là có những câu hỏi liên quan đến hiệu lực của nó . Bạn có thể đưa ra một yay hoặc nay như bạn nghĩ rằng nó là hợp lệ? Cảm ơn!
Chấn thương kỹ thuật số

51

Desmos 30 12 byte

3x>10
3x<-10

Hãy thử trực tuyến.

Tôi không hoàn toàn chắc chắn nếu điều này là hợp lệ, xin vui lòng cho tôi biết nếu có bất kỳ vấn đề.


3
@ CᴏɴᴏʀO'Bʀɪᴇɴ Màu mặc định là đỏ và xanh theo thứ tự đó (tôi tin) vì vậy không cần phải đặt chúng.
một spaghetto

7
@ CᴏɴᴏʀO'Bʀɪᴇɴ Sau đó, nó là trình tạo cờ ngẫu nhiên;)
DanTheMan

3
@ CᴏɴᴏʀO'Bʀɪᴇɴ Chúng không ngẫu nhiên đối với tôi - nhập hai bất đẳng thức theo cách thủ công luôn khiến tôi đỏ, rồi xanh.
Mego

1
Điều này thật lạ. Tôi cũng đang nhận được màu đỏ và màu xanh.
lirtosiast

2
Tôi không nghĩ rằng nó ... cũng không phù hợp với tỷ lệ khung hình một cách chính xác.
Doorknob

51

Python 2, 47 byte

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

Chứa không thể in được - đây là một hexdump (có thể đảo ngược với 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

Sử dụng mã thoát ANSI để in các ký tự được tô màu thành STDOUT - Tôi đã chọn "F" cho Pháp. Không có liên kết trực tuyến vì ideone không hỗ trợ mã thoát ANSI trong đầu ra.

Cảm ơn Dennis và xnor cho một số lời khuyên tuyệt vời.

Ảnh chụp màn hình từ xterm:

cờ


1
Bạn đã có thêm một không gian ở đó. in [0]->in[0]
mbomb007

2
1. Bạn có thể sử dụng byte ESC thực tế thay vì \x1b. 2. Nét dường như không cần thiết. 3. Tôi không chắc điều đó có đúng với nghệ thuật ANSI hay không, nhưng câu hỏi dường như bắt buộc tỷ lệ 3: 2.
Dennis

Nó ngắn hơn để phụ trong các tham số với định dạng : print("\x1b[3%s;1mF"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30.
xnor

16
Nhấn F để tỏ lòng kính trọng
Đạp xe

4
Nhân vật trông đẹp hơn một chút, ví dụ 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

Đã lưu 27 byte nhờ @insertusernamehere

Lưu 9 byte nhờ @Joey

Đã lưu 1 byte nhờ @sanchies

Lưu 1 byte nhờ @Neil

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

Sử dụng nhiều lạm dụng cú pháp HTML, điều này có thể trở nên khá ngắn.


Ảnh chụp màn hình của đầu ra:

Đầu ra cờ Pháp


Hoặc dùng thử (đảm bảo trình duyệt của bạn hỗ trợ SVG):

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


3
Tôi đã cố gắng đánh bại bạn bằng CSS và bây giờ tôi đã đánh gôn SVG của bạn rằng nó thậm chí còn nhỏ hơn giải pháp CSS của tôi. : D Đây là thời gian ngắn nhất tôi có thể làm việc trong Safari, Chrome và Firefox, dài 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 Cảm ơn, Điều đó đã lưu 27 byte! Tôi đã xoay sở để đánh gôn thêm xuống 88 byte đáng kinh ngạc
Downgoat

3
Đối với tôi, fill=#0055a4 />hoạt động quá (không "), tiết kiệm toàn bộ byte.
Chiếm

3
@sanchise cả một byte? o_O wow : D
nhà phát triển xe máy

4
@developerbmw Trên thực tế, sẽ ấn tượng hơn khi tiết kiệm nửa byte khi bạn nghĩ về nó.
Chiếm

29

Brainfuck $ , 153 byte

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

Xuất hình ảnh với mã màu ANSI. Tôi đã chọn chiều cao 30 như Mego .

Việc thực hiện tham chiếu từ năm 2009 được liên kết trên trang esolang đã bị mất tích. Bạn có thể chạy nó bằng trình thông dịch này do tôi tạo, hỗ trợ mọi thứ từ trang esolangs.

Brainfuck, 258 byte

Điều này về cơ bản là điều tương tự, nhưng chỉ trong Brainfuck cũ đơn giản.

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

Hoặc, nếu bạn thích cái này trong oOo CODE (984 byte):

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 byte

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

(ugh, +17 ký tự do yêu cầu màu tôi đã không nhận thấy trước đó ...)

Đầu ra cho tệp a, ở định dạng 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

Cũng có thể xuất ra dưới dạng PNG, nếu bạn thay đổi tên tệp thành a.png(ký tự +4).

Đầu ra:

nhập mô tả hình ảnh ở đây


1
convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"
Chấn thương kỹ thuật số

@DigitalTrauma Cảm ơn! Điều đó tiết kiệm 4 ký tự và không thoát với một lỗi. (Ngoài ra, tôi chưa bao giờ biết ImageMagick có thể đọc từ / ghi vào STDIN.)
Doorknob

Bạn có thể sử dụng -scalethay vì -sample; Ngoài ra, dấu gạch chéo ngược dường như không cần thiết
aditsu

25

LaTeX, 139 byte

Cảm ơn @WChargin đã lưu 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}

Thao tác này sẽ in hình ảnh 12cm * 8cm sau đây trên trang A4:

nhập mô tả hình ảnh ở đây

Lưu ý rằng "Trang 1" cũng được in ở cuối trang


1
Chà, cái này ngắn hơn khoảng 100 byte so với asymptotegiải pháp của tôi ...
Arcturus

1
s.\newcommand\z[1].\def\z#1để lưu một loạt các byte. Ngoài ra, bạn có thể cạo sạch một vài thứ bằng cách sử dụng, \def\z#1!{…}\z0,.33,.64!\z1,1,1!\z.94,.25,.21!đó là sử dụng các dấu phân cách của riêng bạn thay vì niềng răng để phân nhóm
wchargein

1
Bạn cũng có thể\input color
wchargein

1
Để hoàn thiện, phiên bản sửa đổi (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}
wchargein

24

Bình thường, 27 byte

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

Có một số ký tự không thể in được, vì vậy đây là một 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

Điều này tạo ra một tệp o.pngcó chiều rộng chính xác là 78 ​​pixel và cao 52 pixel:

nhập mô tả hình ảnh ở đây

Giải trình:

.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
Trong một giây, tôi nghĩ rằng tôi đã hiểu nhầm thông số kỹ thuật PNG.
primo

1
save it as an image o.png, nhưng không có ".png" ở đâu cả?
rev

1
@AsidShout Bạn gọi chương trình như thế nào? Nếu bạn sử dụng python3 pyth.py code.pyth, sau đó bạn có thể tìm thấy nó trong cùng một thư mục.
Jakube

20

HTML (chế độ quirks), 68 byte

Điều này sử dụng chế độ quirks để hiển thị cờ.

HTML là RẤT không hợp lệ, nhưng hoạt động trên trình duyệt cổ Android 4.4.2 và Firefox 42,0 (trên Windows 7 x64).

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

Cờ được hiển thị với kích thước phù hợp và màu đỏ và màu xanh tiêu chuẩn. Tất cả các trang web bắt đầu với một nền trắng tiêu chuẩn.



Như một sự thay thế:

Một hoàn toàn hợp lệ phiên bản HTML5 (141 byte):

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

Kiểm tra tính hợp lệ của nó trên: https://html5.validator.nu/

Màn hình in kết quả:

kết quả xác nhận


1
Bạn có chắc không? Khi tôi có tệp HTML chỉ có dòng này, nó không hoạt động trong Firefox, Chrome và Safari. Nếu tệp chứa các thành phần HTML khác sau dòng đó, nó hoạt động với tôi. Vì vậy, có lẽ bạn không thể loại bỏ dấu vết >?
insertusernamehere

1
"Hoàn toàn hợp lệ"? Nó sẽ là style="..."nếu đó là những gì bạn sẽ làm trong ví dụ thứ hai.
mbomb007

3
@ mbomb007 Điều tôi sẽ làm là tạo mã HTML hợp lệ nhỏ nhất. Nó xác nhận hợp lệ với trình xác nhận chính thức, vì vậy, nó là HTML hoàn toàn hợp lệ . Bạn có thể tự thử nếu bạn không tin.
Ismael Miguel

1
@ mbomb007 Ngoài ra, thiếu dấu ngoặc kép là vấn đề nhỏ nhất: không <html>, không <head>, không <body>, không </tr>, không </td>và không đóng tất cả các thẻ bị thiếu.
Ismael Miguel

1
@insertusernamehere Bạn đã đúng. Nó cũng bị lỗi trên Android. Tôi đã thử nó trên jsfiddle. Nhưng khi truy cập data:text/html,<table width=78 height=52><td bgcolor=0055a4><td><td bgcolor=ef4135>, nó không hoạt động. Đã sửa nó ngay bây giờ và sử dụng liên kết để kiểm tra nó.
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

(giả sử [-10,10,1] mặc định theo [-10,10,1] khu vực đồ thị)

Sẽ ngắn hơn 4 byte nếu không có 2 dòng đầu tiên, nhưng theo mặc định sẽ có các trục và trông không đẹp bằng.

Trông như thế này:

nhập mô tả hình ảnh ở đây

Nếu bóng mờ không hợp lệ cho thử thách, hãy cho tôi biết!

Không có 2 dòng đầu tiên, nó trông như thế này:

nhập mô tả hình ảnh ở đây


Tôi cũng sẽ bao gồm phiên bản mà không có ba dòng đầu tiên chỉ là một so sánh.
GamrCorps

1
Tôi nghĩ bạn có thể đi từ Ymin đến Ymax. Bạn cũng có thể giả sử màn hình mặc định từ -10 đến 10. Tôi cũng không chắc về tính hợp lệ của điều này, vì các vùng màu đỏ và màu xanh chỉ được tô một nửa.
lirtosiast

@ThomasKwa Tôi đã chỉnh sửa bài đăng của mình để cho thấy lý do tại sao tôi không sử dụng chỉ Ymin và Ymax. Tôi không nhận ra mình có thể giả sử màn hình mặc định, nhưng bạn không rõ màn hình mặc định đó là gì. Ông có thể làm rõ? Về điều "nửa mờ", đó chỉ là cách TI-Basic tô màu mọi thứ, nếu nó không hợp lệ, tôi sẽ nhanh chóng thay đổi nó.
DanTheMan

1
Một màn hình mặc định là Ymin = Xmin = -10, Ymax = Xmax = 10. Máy tính bắt đầu với các cài đặt cửa sổ đó và AxesOn, v.v., vì vậy bạn có thể giả sử chúng.
lirtosiast

1
@Doorknob Theo tôi biết, không thể làm điều đó mà không dùng đến phù thủy.
DanTheMan

17

ffmpeg, 110 113 116 117 119 108 100 byte

Hiển thị, sử dụng ffplay, 100 byte:

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

Được lưu vào tệp, sử dụng 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

Phiên bản hiện tại của lệnh sẽ hủy bỏ với lỗi NHƯNG sẽ xuất ra một hình ảnh duy nhất ".png", giống như hiển thị bên dưới.

nhập mô tả hình ảnh ở đây


8
Ồ Lạm dụng ffmpeg để tạo hình ảnh ...
Cole Johnson

Heh, tôi thấy câu hỏi này và nghĩ làm như vậy. Công việc tốt đẹp làm cho nó nhỏ gọn. Nếu được phép, bạn có thể làm cho nó nhỏ hơn một chút bằng cách sử dụng whitethay vì #ffffff: các giá trị phải giống nhau.
llogan

Tôi biết. Không đủ bận tâm. Sẽ làm điều đó ngay bây giờ.
Gyan

#Fff có hoạt động không?
ev3commander

Không. Nhưng tôi có thể bỏ qua f trong 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}

Không cần thẻ khác, chỉ hoạt động với body-element.

Chỉnh sửa

  • Đã lưu 16 byte bằng cách loại bỏ display:block;và một số ;.
  • Đã lưu 1 byte , loại bỏ dấu }.

6
Mặc dù về mặt kỹ thuật CSS không phải là ngôn ngữ lập trình theo định nghĩa của chúng tôi.
Conor O'Brien

10
@ CᴏɴᴏʀO'Bʀɪᴇɴ Tôi biết - chỉ muốn đánh bại SVG .
insertusernamehere

4
@ CᴏɴᴏʀO'Bʀɪᴇɴ là đúng, đây không phải là một câu trả lời hợp lệ.
Mego

2
@ CᴏɴᴏʀO'Bʀɪᴇɴ nó css đã được lưu dưới dạng tệp SASS, vì SASS là ngôn ngữ kịch bản, nó có phải là một câu trả lời hợp lệ không?
fcalderan

6
Vâng, CSS thông thường là một tệp SASS hợp lệ.
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"


Chỉnh sửa

  • Đã lưu 2 byte bằng cách thay thế 2*i*26bằng i*52. Cảm ơn Cᴏɴᴏʀ O'Bʀɪᴇɴ .
  • Đã lưu 4 byte bằng cách cấu trúc lại for-loop. Nhờ ETHproductions .
  • Đã lưu 2 byte bằng cách sử dụng with-statement. Cảm ơn Dendrobium .
  • Đã lưu 2 byte bằng cách biến tăng dần thành giảm. Nhờ Shaun H .
  • Đã lưu 3 byte bằng cách thay thế fillStyle=["#0055a4","#ef4135"][i]bằng i?"#ef4135":"#0055a4".

3
2*i*26có thể trở thành 52*i, không?
Conor O'Brien

7
@ CᴏɴᴏʀO'Bʀɪᴇɴ Tất nhiên là có thể. Cảm ơn. Nó vượt quá thời gian ngủ của tôi.
insertusernamehere

2
Bạn có thể tắt 2 byte bằng cách sử dụng withcâu lệnh: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
lưu một byte: x=(d=document).body.appendChild(d.createElementcanvas ).getContext2d;for(i=3;--i;x.fillRect(i*52,0,26,52))x.fillStyle=[,"#ef4135","#0055a4"][i]
Shaun H

2
@Dendrobium Điều đó tốt. Cảm ơn rất nhiều.
insertusernamehere

13

R, 59 byte

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

Đầu ra được hiển thị:

nhập mô tả hình ảnh ở đây

Người ta cũng có thể làm 49 byte với

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

nếu bạn không quan tâm đến các trục và biên giới:

nhập mô tả hình ảnh ở đây


2
Tỷ lệ có vẻ sai. Tôi nghĩ rằng bạn có tỷ lệ 2: 3 trên một hình chữ nhật một màu thay vì tỷ lệ 3: 2 trên toàn bộ cờ.
Gây tử vong vào

Tỷ lệ có thể được điều chỉnh bằng tay bằng cách thay đổi kích thước cửa sổ vẽ.
flodel

3
Để đủ điều kiện, mục nhập của bạn nên hoạt động 'ngoài hộp'. Khác, bất cứ ai cũng có thể đăng một giải pháp 6 pixel và nói 'Bạn có thể phóng to thủ công'.
Chiếm

4
Bạn nói 'trục', tôi nói 'cột cờ'.

2
@sanchises: Tôi là người Pháp và tôi nói f ** k đó. LIBERTE!
flodel

12

Blitz 2D / 3D , 154 108 byte

Điều này tạo ra chính xác điều tương tự như ví dụ được đưa ra trong câu hỏi (ngoại trừ việc khử răng cưa ở các cạnh nơi màu sắc gặp nhau).

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

Đầu ra được hiển thị và nó trông như thế này:

nhập mô tả hình ảnh ở đây


12

Toán học, 63 94 103 byte

Khi tôi lần đầu tiên nhìn thấy thử thách này, tôi đã nghĩ Ngọt! Mathematica sẽ là hoàn hảo cho việc này!cho đến khi tôi nhận thấy rằng các phần dựng sẵn bị cấm: '(

Nhưng chờ đã! Tôi có thể sử dụng biểu đồ thanh!

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

(Cảm ơn Martin Büttner đã loại bỏ 5 byte nhưng thêm 16)

Trông như thế này:

nhập mô tả hình ảnh ở đây

Nếu bạn thêm ,Axes->Nonenó trông như thế này:

nhập mô tả hình ảnh ở đây

Nếu bạn không quan tâm đến đường viền, bạn có thể sử dụng điều này: (95 byte)

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

Trông như thế này:

nhập mô tả hình ảnh ở đây

Không có trục:

nhập mô tả hình ảnh ở đây


3
Axes->None. Bạn cũng nên đặc biệt AspectRatio->2/3. Đổi tên RGBColorrất đơn giản : r=RGBColor;...r["..."]. Bạn cũng có thể sử dụng ký hiệu tiền tố để lưu thêm hai byte r@"#0055a4".
Martin Ender

Nếu bạn không cần phác thảo, hãy thử BarChart[{1, 1}, ChartStyle -> {RGBColor["#0055a4"], Red}, BarSpacing -> 1]. Màu đỏ trông đủ gần.
DavidC

@DavidCarraher Meh, vì câu hỏi chỉ định một giá trị RGB cụ thể, nên sử dụng chính xác một giá trị.
Martin Ender

Đề nghị chính của tôi là vẽ hai hình chữ nhật, không phải ba. Bạn đúng về mặt kỹ thuật về Red, tuy nhiên.
DavidC

Không biên giới xung quanh các thanh sẽ làm mất hiệu lực giải pháp này?
LegionMammal978

11

Javascript (ES6) 117 byte

Vẽ nó trong giao diện điều khiển

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


2
Đối với 'white'tôi nghĩ rằng nó ngắn hơn để làm : #fff. Ngoài ra, màu Đỏ và Xanh lam phải khớp với các màu được chỉ định trong thông số kỹ thuật
Downgoat

1
Bạn có thể lưu một vài byte i=c=s=[]thay vì i=0,c=[],s=''sau khi cập nhật các màu có thể giúp ích một chút ...
Dom Hastings

1
@ Vɪʜᴀɴ Khi xuất văn bản, bạn có thể sử dụng màu tiêu chuẩn ( redblue). Đó là điểm thứ 2, tính từ dưới lên. Đây là trong spec.
Ismael Miguel

@DomHastings Mẹo hay, sử dụng cưỡng chế khéo léo. Cảm ơn!
George Reith

1
@sysreq Văn bản của nó trong bảng điều khiển ... Tôi không kiểm soát được độ sáng của bảng điều khiển của bạn. Đó là 78 ​​ký tự rộng 52 cao.
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, một thách thức mà pb thực sự là tốt cho! Đó là rất ít và xa giữa.

Khi tôi đang viết thông số kỹ thuật cho pb, tôi đã bao gồm đầu ra màu chủ yếu như một trò đùa. Ngôn ngữ được đặt tên theo một "cọ vẽ", tại sao nó không làm màu? Khác với các chương trình ví dụ, đây là lần thứ hai tôi từng sử dụng nó. Nó được thực hiện với mã ANSI như câu hỏi yêu cầu.

Tôi đã sử dụng 'M' làm ký tự để xuất ra vì nó khá dày đặc.

Đầu ra:

Tôi đã thay đổi kích thước ảnh chụp màn hình theo chiều dọc thành hai phần ba chiều cao của nó vì các chữ cái không vuông. Đầu ra là 78 ​​x 52, nhưng ảnh chụp màn hình ban đầu trông thực sự sai.

Với ý kiến ​​và thụt lề và rác:

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 sẽ giúp bạn có được kích thước bạn muốn cho đầu ra thiết bị đầu cuối.
Mego

@Mego Vâng, nhưng tôi không chắc là nó có được phép hay không.
undergroundmonorail

Kết quả đầu ra trên xterm trong phông chữ mặc định khớp với kích thước đã chỉ định.
Mego

Mặc dù vậy, tôi cảm thấy kỳ lạ khi đo kích thước của đầu ra giao diện điều khiển trong bất cứ thứ gì ngoại trừ "ký tự".
undergroundmonorail

1
Khi các ký tự của bạn cao 1,2 lần khi chúng rộng, chúng không tạo ra các pixel rất tốt.
Mego

10

C, 115 byte

nhập mô tả hình ảnh ở đây

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

Chứa không thể in được:

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

Để chương trình này hoạt động, một vài điều cần phải đúng:

  • Thiết bị đầu cuối hỗ trợ ESC [48;2;<r>;<g>;<b>mchuỗi thoát "truecolor".
  • Thiết bị đầu cuối không phải là xterm, vì việc thực hiện ở trên sẽ tạo ra màu sắc hơi sai.
  • Thiết bị đầu cuối hoàn toàn bỏ qua các ký tự NUL.

Nó cũng trông đẹp hơn nếu nền của thiết bị đầu cuối của bạn màu đen.

Để thay đổi chiều cao của cờ, chuyển đối số dòng lệnh cho chương trình. Đối với mỗi đối số được thông qua, cờ sẽ trở thành một dòng ngắn hơn. Nó không phải là một lỗi, đó là một tính năng!

Đầu ra:

nhập mô tả hình ảnh ở đây


Đã gặp sự cố khi biên dịch cái này với gcc(phiên bản 5.1.1). Bất kỳ cờ cụ thể cần thiết để biên dịch? "ac: 1: 10: cảnh báo: ISO C99 yêu cầu khoảng trắng sau tên macro #define c" \ x1b [48; 2;% d;% d;% dm "
steve

1
@Steve có phải là một cảnh báo lỗi của chúng tôi?
Funcino

1
@Steve Chỉ cần thử lại lần nữa, gcc 5.2.1. Không có cờ. Tạo ra 12 cảnh báo nhưng thực hiện nhị phân hoạt động.
Funcino

lời xin lỗi - hoạt động tốt - đã bị nhầm lẫn bởi các cảnh báo (và thực tế là mã trông khá khó hiểu đối với một người mới C như tôi)
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)

Đầu ra trông như:


1
Phiên bản nào của MATLAB? Không hoạt động trên r2013a vì màu sắc cần phải là số thập phân trong phạm vi [0,1].
Tom Carpenter

1
Dòng sau hoạt động fill(x,y,[0 85 164]/255,x+1,y,'w',x+2,y,[239 65 53]/255)và giúp bạn tiết kiệm 2 byte. :) Tôi cũng sẽ sử dụng dấu chấm phẩy thay vì dòng mới để tránh những thứ thừa được in ra.
Tom Carpenter

1
@TomCarpenter Tôi đặt trên thang màu 0-1, đã được một lúc vì tôi phải chỉ định màu. Đối với dấu chấm phẩy / dòng mới, tôi đã chọn khả năng đọc trên bảng điều khiển, nhưng tôi đã thay đổi câu trả lời của mình
costrom

9

Visual Basic + Excel, 618 137 byte

Chỉ tò mò để xem làm thế nào điều này có thể được chơi golf.

EDIT: Sự tò mò được sắp xếp, nhờ @Neil và @JimmyJazzx, 618 byte đã giảm xuống còn 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

Cờ Excel


1
Ghi lại một kết quả vĩ mô trong mã không hiệu quả khủng khiếp. Hãy thử Range("A1:C13").Interior.ColorIndex = 5Range("G1:I13").Interior.ColorIndex = 3dường như đủ.
Neil

2
Xin lỗi, đó là Excel 2003 và tôi đã quên bao gồm ActiveWorkbook.Colorsđể chỉ định các giá trị RGB chính xác. Excel 2007 có các tùy chọn màu bổ sung nhưng tôi không biết chúng.
Neil

1
Tôi nhận được 137 byte với một vài thay đổi nhanh. Tôi nghĩ bạn có thể cắt giảm điều này nhiều hơn nhưng đây là những thay đổi dễ dàng. 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

Tôi nhận được 135 vớiSub 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


1
* *{background:linear-gradient(90deg,#0055a4,#0055a4 33%,#fff 33%,#fff 66%,#ef4135 66%) 0 0/78px 52px no-repeat}- ngắn hơn một byte
user2428118

1
thực sự là một * là đủ :) Cảm ơn!
Thomas Esoolann

1
+1; Bạn có thể lưu một byte khác bằng cách loại bỏ dấu }.
insertusernamehere

1
Bạn có thể xóa màu đầu tiên, bạn lưu 8 byte.
Awashi

Bạn có thể thay thế cuối cùng 66%với 0.
Mr_Green

8

Thuốc nhuộm APL ( 47 44)

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

Kết quả:

cờ


2
bạn có thể làm 2*8 11 10
lirtosiast

1
@ThomasKwa: nhờ
marinus

8

iKe , 43 byte

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

Đây là một ví dụ về chương trình iKe "tuple thô" - nó chỉ là một mô tả về một nguồn gốc ( 0 0), một bảng màu ( 3 7#"#0055A4#FFFFFF#EF4135") và một bitmap (+52#'&3#26 ). Bạn cần bọc một mô tả như thế này trong một hàm hoặc sử dụng các tham chiếu đến các khung nhìn nếu bạn muốn làm động nó.

Bảng màu là một cách rất đơn giản để tạo ra một loạt các màu CSS, tương đương hex của thông số kỹ thuật.

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

Nếu các yêu cầu về màu sắc ít nghiêm ngặt hơn, chúng ta có thể sử dụng một trong các bảng màu tích hợp của iKe và lưu một số lượng đáng kể các ký tự:

windows@7 0 4

cờ

Thử nó trong trình duyệt của bạn .

Biên tập:

Đã lưu một byte bằng cách sử dụng #FFFmàu CSS ngắn cho dải trắng:

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

Nếu bất cứ ai khác thích chơi với iKe, có một hướng dẫn về repo github .đây là một vấn đề khác tôi đã giải quyết bằng iKe.

Chỉnh sửa 2:

Đã lưu một byte với cách đơn giản hơn để xây dựng bitmap:

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

Câu hỏi của tôi trong OP chưa được trả lời, nhưng đối với bản ghi nếu được phép yêu cầu màu linh hoạt hơn, chương trình này sẽ là 30 byte bằng cách sử dụng bảng màu Windows 3.1:

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

cờ2

Vì vấn đề này đã được đăng, iKe đã có được một tính năng tự động căn giữa họa tiết được vẽ mà không có vị trí, có thể lưu thêm 3 byte, nhưng điều này sẽ trái với quy tắc:

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

7

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

Hiển thị hình ảnh:

nhập mô tả hình ảnh ở đây


7

Đang xử lý, 100 byte

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

Hiển thị này: Pháp

(Giải pháp ngây thơ ngắn hơn giải pháp đầu tiên của tôi.)


Tôi nghĩ rằng các lệnh vẽ của Chế biến có thể xuất hiện trước khi đẩy pixel ở đây:size(78,52);noStroke();int[]p={0xFF0055A4,255,0xFFEF4135};for(int c:p){translate(26,0);fill(c);rect(0,0,-26,52);}
JohnE

@JohnE Lol, vâng tôi chỉ nhận thấy điều đó.
geokavel

@ John Ngay cả giải pháp siêu cơ bản của tôi cũng ngắn hơn của bạn!
geokavel

haha- có vẻ như cả hai chúng ta đã quá phức tạp
JohnE

Làm thế nào về việc lạm dụng các hướng dẫn quy mô? Điều này hoạt động trên sketchpad.cc nhưng có thể bị size(78,52);scale(26,52);fill(#EF4135);stroke(#0055A4);rect(0,-1,0,2);stroke(255);rect(1,-1,3,3);
hỏng

7

Ruby, 56 47 45 byte

ASCII

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

Đúng, cái này tốt hơn của tôi Ngoại trừ thanh giữa cần có màu trắng.
iamnotmaynard

@iamnotmaynard Đúng, đã sửa. Cảm ơn!
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);

Trên đây là một hexdump có thể được đảo ngược với xxd -r. Ngoài ra, nó cũng có thể được tạo bằng tập lệnh PHP sau:

<?=hex2bin('424d0000000000000000230000000c0000002001c00001000800a45500ffffff3541ef3c3f666f72283b3665343e24693b296563686f206368722824692b2b2f39362533293b');

Tôi giả sử cài đặt mặc định, vì chúng không có .ini (bạn có thể tắt .ini cục bộ của mình với -ntùy chọn). Tạo một hình ảnh .bmp (288 x 192), nên được dẫn đến một tệp. Cái này lớn như tôi có thể làm mà không ảnh hưởng đến số byte.


Sử dụng mẫu

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

Đầu ra

Lá cờ Pháp


Những màu này trông không đúng. Họ có sử dụng các giá trị RGB được chỉ định trong câu hỏi không?
tay nắm cửa

@Doorknob Họ làm. Bắt đầu từ byte 26, một bảng màu ba giá trị được xác định (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);}

Xem nó ở đây

Không đặc biệt thú vị. Tôi chắc chắn có nhiều cách để chơi golf hơn; Tôi sẽ có một vết nứt khi tôi về nhà.


3
Liên kết chuyển hướng đến shadertoy.com/error : /
Quentin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.