Vẽ quốc kỳ Iceland


107

UEFA Euro 2016 năm nay đã kết thúc và bên cạnh một vài tiêu đề tiêu cực, đã có một bất ngờ rất tích cực - đội tuyển bóng đá quốc gia Iceland . Hãy vẽ quốc kỳ của họ.

Đầu vào

Chà, rõ ràng thử thách này không có đầu vào.

Đầu ra

  • Vẽ cờ của Iceland ở bất kỳ định dạng hình ảnh có thể áp dụng nào ít nhất 100 x 72 pixel hoặc 25 x 18 ký tự .
  • Lưu kết quả đầu ra vào một tệp hoặc trình bày nó ngay lập tức - các định dạng ví dụ là: hình ảnh như png, jpg, v.v., đồ họa vector, vẽ trên khung vẽ HTML hoặc thậm chí sử dụng các ký tự không phải khoảng trắng để hiển thị.
  • Sử dụng các màu này : xanh : #0048e0, trắng : #ffffffđỏ : #d72828.
  • Nếu ngôn ngữ của bạn không hỗ trợ các giá trị màu cụ thể, hãy sử dụng các giá trị tiêu chuẩn cho màu đỏ , xanhtrắng từ mã màu ANSI .
  • Vẽ cờ với tỷ lệ chính xác, như trong hình dưới đây:

bản mẫu

  • Bạn có thể viết một chương trình hoặc một chức năng. Nếu đó là một hàm ẩn danh, vui lòng bao gồm một ví dụ về cách gọi nó.
  • Đây là để câu trả lời ngắn nhất trong byte thắng.
  • Sơ hở tiêu chuẩn là không được phép.

Bảng xếp hạng

Nếu bạn không thể tìm thấy câu trả lời của bạn, định dạng ngôn ngữ của bạn và số byte như được giải thích trong của Leaderboard " Thông tin Mục " .


Thử thách này được lấy cảm hứng từ Vẽ cờ quốc gia Pháp .


20
Thách thức hơn nhiều sẽ là lá cờ của đất nước tôi, người cũng đã làm tốt hơn nhiều so với dự kiến ​​tại Euro năm nay - xứ Wales. :-)
Gareth

24
@Gareth Tôi đang mong đợi một đặc điểm kỹ thuật không thấm nước của con rồng. ;)
Martin Ender

4
Có vẻ như màu xanh trong hình trên tối hơn thực tế#0048e0
Luis Mendo

10
@MartinEnder Có khắc nó trên một viên đá không? Đó là không thấm nước.
Immibis

5
@MartinEnder Mathematica sẽ có một.
gcampbell

Câu trả lời:


259

Python 3, 190 172 171 169 167 160 159 147 143 byte

Sử dụng PIL phiên bản 1.1.7 có phương pháp bù trừ nhưng không được loại bỏ.

from PIL.ImageDraw import*
i=Image.new('RGB',(25,18),'#d72828')
Draw(i).rectangle((1,1,23,16),'#0048e0',~0)
i.offset(9).resize((100,72)).show()

Tạo hình ảnh 25 * 18 pixel chứa đầy màu đỏ sau đó vẽ hình chữ nhật 23 * 16 pixel chứa đầy màu xanh với viền trắng của một pixel. Sau đó, nó bù đắp hình ảnh bằng (9,9) bao bọc trên các cạnh, thay đổi kích thước của nó thành 100 * 72 sau đó hiển thị nó trong một cửa sổ.

Cờ trước khi bù đắp:

nhập mô tả hình ảnh ở đây (thay đổi kích thước thành 100 * 72)

Đầu ra:

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

Hoạt hình:

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

Edit1: Golfed 18 byte bằng cách xóa xén bằng cách ban đầu tạo hình ảnh 25 * 18.

Edit2: Golfed 1 byte bằng cách sử dụng #fffthay vì white.

Edit3: Golfed 2 byte bằng cách nhập bí danh.

Edit4: Golfed 2 byte bằng cách loại bỏ đối số thứ hai của phương thức offset.

Edit5: Golfed 7 byte bằng cách hiển thị hình ảnh thay vì lưu. (cần cài đặt hình ảnh trên Unix)

Chỉnh sửa 6: Đánh gôn 1 byte bằng cách viết lại nhập.

Chỉnh sửa7: Đánh gôn 12 byte bằng cách viết lại nhập. (cảm ơn bởi @Dennis)

Edit8: Đã thêm hình ảnh động.

Edit9: Cập nhật hình ảnh động vì nó bị thiếu khung hình cuối cùng.

Chỉnh sửa10: Chơi gôn 4 byte nhờ Albert Renshaw!


42
Câu trả lời thực sự tốt đẹp.
insertusernamehere

17
Đây là thiên tài! (Viking) Hat to you.
Ioannes

25
Ồ, thật hiếm khi tôi bỏ phiếu cho các câu hỏi về môn đánh gôn trên SO, nhưng thậm chí hiếm hơn là tôi sẽ tham gia vào một cộng đồng hoàn toàn mới chỉ để làm như vậy. Bản hack bù này gợi nhớ đến những gì chúng ta từng phải làm trước khi những người bán hàng trẻ tuổi có bộ nhớ oodlebyte của bạn để làm việc. Công việc tuyệt vời.

5
thiên tài, thật đấy! 💡
InuYaksa

3
Nếu bạn làm from PIL.ImageDraw import*, Itrở thành ImageD.Drawtrở thành Draw, tiết kiệm 11 byte.
Dennis

117

Mã máy chế độ thực x86 cho DOS COM, 69 65 63 62 byte

Cờ Iceland sản xuất

Mã này có nghĩa là được thực thi dưới dạng thực thi COM COM của DOS.

Cảm tạ

Mã máy (tính theo byte hex)

68 00 A0 07 B8 13 00 CD      10 BE 23 01 AD 91 AD 91 
AC E3 FE 60 30 ED F3 AA      61 81 C7 40 01 FE CD 75 
F2 EB E9 FA B4 00 00 09      28 B4 46 00 0F FA 28 80 
57 0F 14 B4 0C 50 00 FA      14 0C 00 64 00 00

Nguồn hội

Nguồn là cho NASM.

ORG 100h

push 0a000h
pop es

mov ax, 13h
int 10h

mov si, data


_draw:
 lodsw
 xchg ax, cx

 lodsw
 xchg ax, di

 lodsb

_cycle:
 jcxz _cycle

 ;al = color
 ;cl = col
 ;ch = row

rect:
 pusha
 xor ch, ch
 rep stosb
 popa
 add di, 320
 dec ch
 jnz SHORT rect

jmp SHORT _draw


data: 

        db 250d
        db 180d
        dw 0000h
        db 09h


        db 40d
        db 180d
        dw 0070d
        db 0fh


        db 250d
        db 40d
        dw 22400d
        db 0fh

        db 20d
        db 180d
        dw 80d
        db 0ch


        db 250
        db 20
        dw 25600d 
        db 0ch


        dw 0000h

13
Đây là một câu trả lời đầu tiên thực sự mát mẻ! Chào mừng bạn
admBorkBork

5
Bạn có thể lưu 2 byte bằng cách thay thế 'Mov' bằng 'xchg' vào lúc 10h & 13h và 2 byte khác bằng cách thay thế 'test cx, cx / jz' bằng 'jcxz' lúc 16h
meden

3
Một vài suy nghĩ nữa. Vì chương trình chạy trong vòng lặp vô hạn, bạn có thể tránh nhấp nháy chỉ bằng cách làm cho vòng lặp ngắn hơn : _loop: jcxz _loop. Bạn cũng có thể cắt 2 byte từ cuối đoạn dữ liệu nếu bạn thay đổi thứ tự tải của cxdi
meden

Cảm ơn một lần nữa @meden. Việc nhấp nháy hoàn toàn không cần thiết có hiệu lực :) Tôi cũng đã gỡ bỏ mov bx, 320và chuyển 320 vào add di, 320(trước đó add di, bx).
Margaret Bloom

Tuyệt quá. Bây giờ bạn đã có một lợi thế vững chắc trên tất cả các câu trả lời mã máy trong thử thách này. Chỉ vì mục đích chính xác: tốt hơn là nên di chuyển jcxz _cyclengay sau xchg ax,cxđó để nó không tải byte qua cuối dữ liệu. Và có một số ý kiến ​​sai lệch trong nguồn : ;dx = row. dxkhông được sử dụng ở bất cứ đâu trong mã.
meden

55

C, 194 191 183 byte

#define C "\x1b["
#define A "@@@@@@"
y;f(){for(;y++<14;)printf(y>5&&y<10?y>6&&y<9?C"31m"A A A A"@\n":C"0m"A"@@"C"31m@@"C"0m"A A"@@@\n":C"34m"A"@"C"0m@"C"31m@@"C"0m@"C"34m"A A"@@\n");}

-3 thêm một @trên #define A
-8 thêm [vào#define C

Sử dụng

main(){f();}

Đầu ra

Hình ảnh, tưởng tượng

dựa trên nhận xét này từ OP

Đầu ra kích thước gấp đôi, 204 byte

#define C "\x1b["
#define B "████"
#define A B B B
y;f(){for(;y++<28;)printf(y>10&&y<19?y>12&&y<17?C"31m"A A A A"██\n":C"0m"A B C"31m"B C"0m"A A B"██\n":C"34m"A"██"C"0m██"C"31m"B C"0m██"C"34m"A A B"\n");}

hình ảnh 2


22
upvote thứ 5 đã kích hoạt mạng lưới đại diện +810 ... Cảm ơn! (Vâng, đó là trang web đầu tiên tôi đạt tới 200 đại diện: D)
Giacomo Garabello 11/07/2016

1
Không phải kết quả phải là "ít nhất 100 x 72 đơn vị, trong đó một đơn vị là pixel hoặc ký tự"? Điều này không đáp ứng yêu cầu này, nhưng tôi nghi ngờ OP đã phạm sai lầm khi xây dựng định nghĩa đó.
Kritzefitz

4
@Kritzefitz Chà, một nhân vật chiếm nhiều pixel, vì vậy nó có thể là một pixel thay vì một ký tự. Tìm thấy một cái lỗ.
Erik the Outgolfer 13/07/2016

@GiacomoGarabello Trang web đầu tiên trong pic bạn có +150 là gì? Tôi không nhận ra biểu tượng.

@LegoStormtroopr Đó là PPCG !! Hãy xem Dự án GitHub
Giacomo Garabello

31

VBA Excel, 254 228 153 byte

Thực sự không thể tìm cách đặt kích thước cột / hàng thành pixel (do đó làm cho chúng vuông) vì cách Excel xử lý nó để làm cho chúng đẹp và vuông trước.

Chỉnh sửa 1: RGB thay thế bằng các giá trị được trả về cho màu sắc, -26 byte

Chỉnh sửa 2: Đã thử thêm nhiều đề xuất nhất có thể, -75 byte. Tôi đã không thể sử dụng &48e0như một màu sắc và tôi không chắc tại sao. Cảm ơn mọi người

Sub e()
c "A1:CV72", rgbBlue
c "AC1:AR72", -1
c "A29:CV44", -1
c "AG1:AN72", 255
c "A33:CV40", 255
End Sub

Sub c(d, f)
Range(d).Interior.Color = f
End Sub

Hình ảnh: Cờ Iceland


Làm thế nào bạn làm cho các tế bào vuông? Bạn đã làm nó bằng tay, hoặc với một số kịch bản khác không được bao gồm? Tôi muốn xem nó, ngay cả khi nó không phải là một phần của chương trình ghi điểm của bạn.
mbomb007

Tôi đã thực hiện thủ công, mã để thay đổi độ rộng của ô đủ dễ để tôi có thể thêm nó nhưng kích thước không nhất quán giữa độ phân giải Hàng / Cột hoặc màn hình trừ khi bạn đặt kích thước dựa trên pixel không thể thực hiện được những gì tôi có thể tìm thấy. Từ những gì tôi đọc, bạn phải tìm độ phân giải và thực hiện một số phép toán để chuyển đổi các pixel thành kích thước mà hàm chấp nhận.
tjb1

1
Ngoài ra, mã để chuyển đổi nó thành pixel có vẻ như nó yêu cầu bạn mã cứng một phần của độ phân giải hoặc PPI (tôi không thực sự hiểu công thức) nên có vẻ như nó cũng không hoạt động trên tất cả các thiết bị.
tjb1

2
Và, chỉ để hoàn thiện (để thực hiện với việc thiết lập các ô vuông chứ không phải chính giải pháp), nếu bạn chuyển sang chế độ xem bố cục trang, bạn có thể đặt chiều cao và chiều rộng của ô thành các giá trị cụ thể như 0.2cm. Điều này sẽ được duy trì khi bạn quay lại và không cần phải thử và tìm ra các tỷ lệ khung hình Excel kỳ quái :-) Nhân tiện, nếu bạn muốn có một số thủ thuật Excel thú vị hơn, hãy xem video "Bạn hút vào Excel" của Joel Spolsky.

3
Tôi nghĩ rằng khoảng trắng thêm có thể được loại bỏ, mặc dù nó được thêm tự động sau đó.
Erik the Outgolfer 12/07/2016

29

MATL , 57 56 52 49 48 byte

7:g2IvtPvt!9Mh2$X>2YG[0E28]8*255/7B[43DD]51/v2ZG

Điều này tạo ra hình dưới đây (được thử nghiệm với trình biên dịch chạy trên Matlab và trên Octave).

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

EDIT: Bạn có thể thử nghiệm tại MATL Online!(bạn có thể cần tải lại trang nếu nó không hoạt động ban đầu).

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

7:g         % Range from 1 to 7 converted to logical: push array [1 1 1 1 1 1 1]
2           % Push 2
I           % Push 3
v           % Concatenate vertically into a 9×1 array
tPv         % Duplicate, flip vertically, concatenate. Gives a 18×1 array
t!          % Duplicate, transpose: 1×18 array
9M          % Push [1 1 1 1 1 1 1] again
h           % Concatenate horizontally: gives 1×25 array
2$X>        % Maximum of the two arrays, with broadcast. Gives a 18×25 array
            % with 1 for blue, 2 for white, 3 for red
2YG         % Show image with default colormap
[0E28]8*    % Push array [0 72 224] (blue)
255/        % Divide each entry by 255. Colors are normalized between 0 and 1
7B          % 7 converted into binary: push array [1 1 1] (white, normalized)
[43DD]51/   % Push array [215/255 40/255 40/255] (red, normalized)
v           % Concatenate vertically. Gives a 3×3 array
2ZG         % Use as colormap

26

CSS, 285 284 264 byte

*,:before,:after{background:#fff;width:100;height:72}body{background:#0048e0;margin:0}:before,:after{content:"";position:fixed}:after{background:#d72828}html:before{top:28;height:16}body:before{left:28;width:16}html:after{top:32;height:8}body:after{left:32;width:8

Đã lưu 1 byte nhờ @insertusernamehere.

Đã lưu 20 byte nhờ @ user2428118, bằng cách xóa tất cả các pxs. Lưu ý rằng điều này yêu cầu trang phải được hiển thị ở chế độ quirks, vì vậy nó không hoạt động trong Stack Snippets.

Tôi có thể sao chép cách tiếp cận Python của việc bọc một hình ảnh xung quanh ở phần bù, nhưng nó sẽ không thú vị.

Ung dung:

*, *::before, *::after {
  background: #fff;
  width: 100px;
  height: 72px;
}

body {
  background: #0048e0;
  margin: 0;
}

*::before, *::after {
  content: "";
  position: fixed;
}

*::after { background: #d72828 }

html::before { top: 28px; height: 16px }
body::before { left: 28px; width: 16px }
html::after { top: 32px; height: 8px }
body::after { left: 32px; width: 8px }

Điều này sử dụng các phần tử giả (các phần tử không được viết bằng HTML) ::before::afterđể tạo các dòng trên cờ. Lý do nó hoạt động không có HTML là vì trong HTML5 <html>, <body>các phần tử là tùy chọn, vì vậy các trình duyệt sẽ tự động tạo chúng nếu chúng không có mặt.

Vui hơn:


2
Bạn vẫn có thể tiết kiệm 1 byte bằng cách thay thế whitebằng #fff.
insertusernamehere

@insertusernamehere Yep, cảm ơn.
gcampbell

1
Nếu bạn áp dụng CSS ở chế độ quirks (trang không có doctype), bạn có thể hạ nó xuống 264 byte bằng cách bỏ qua pxmọi nơi.
dùng2428118

@ user2428118 Thậm chí hữu ích hơn khi xem xét rằng không có HTML, do đó, không <!doctype html>!
wizzwizz4

@ user2428118 Vì một số lý do, nó không hoạt động với tôi trong Safari di động. Tôi sẽ có một cái nhìn khi tôi bên cạnh máy tính.
gcampbell

26

Bash + Imagemagick 7, 94 90 86 85 byte

magick -size 84x56 xc:#0048e0 ${s=-splice 8x8}+28+28 -background \#d72828 $s+32+32 x:

Đã lưu 8 byte, nhờ @manatwork và 1 byte, nhờ @ GlennRanders-Pehrson


5
Nếu bạn chỉ định x:thay vì tên tệp đầu ra, convertsẽ hiển thị kết quả trong một cửa sổ, điều này cũng được chấp nhận. Và là đủ để chỉ cần thoát khỏi sắc nét, không cần phải trích dẫn : \#d72828.
manatwork 11/07/2016

2
Thông thường chúng tôi dán nhãn các câu trả lời như Bash + Imagemagick . Về bashphía bạn có thể lưu thêm 4 ký tự : convert -size 84x56 xc:#0048e0 ${s=-splice 8x8}+28+28 -background \#d72828 $s+32+32 x:.
thao tác

Chỉ là một câu hỏi ngu ngốc: Bạn có thể làm gì ${s=-splice 8x8}+56?
Erik the Outgolfer 13/07/2016

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ +56được coi là +56+0, không +28+28.
bodqhrohro

2
Bạn có thể lưu một byte khác bằng cách sử dụng một phiên bản ImageMagick gần đây; sau đó lệnh có thể là "magick" thay vì "convert".
Glenn Randers-Pehrson

20

ZX Spectrum BASIC, 210 141 92 byte

1 LET n=-VAL "8.5": FOR y=n TO -n: FOR x=n TO VAL "16": LET p=VAL "271"(PI-(ABS x<SQR PI OR ABS y>SQR PI)-NOT INT ABS x*INT ABS y): PRINT PAPER p; BRIGHT p>PI;" ";: NEXT x: PRINT : NEXT y

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

Kích thước được xác định là kích thước của chương trình BASIC trên băng thông qua SAVE. Rất nhiều tín dụng chơi golf cho một số thành viên của nhóm ZX Spectrum trên Facebook , đặc biệt là @impomatic và Johan Koelman.


Nhìn thấy những điều đó PAPERBRIGHTmang lại rất nhiều kỷ niệm đẹp :-)
Luis Mendo

Có bất kỳ thông tin nào về chương trình ZX Spectrum BASIC chiếm bao nhiêu bộ nhớ không? Tôi nghĩ rằng đó là ngôn ngữ "được mã hóa", tức là tôi dự kiến FOR, NOTv.v ... chỉ chiếm 1 hoặc có thể 2 byte mỗi ngôn ngữ
Luis Mendo

1
@LuisMendo Vâng, nó được token hóa - FORchính xác là một byte. Tuy nhiên, các số được "chống mã thông báo" ở chỗ chúng được lưu trữ dưới dạng cả văn bản và dạng nhị phân của chúng và chiếm hơn 5 byte so với mong đợi của bạn, do đó NOT PIthay vì 0 và tương tự.
Philip Kendall

132 byte bằng cách loại bỏ AT và điều chỉnh kiểm tra ranh giới twitter.com/john_metcalf/status/752760203007791105
ổn định

1
122 byte với một số tối ưu hóa hơn nữa twitter.com/john_metcalf/status/752783690179211264
bốc đồng

15

ZX Spectrum Z80 hội, 65 byte

    ld hl,22528
    ld b,7
    ld de,120*256+8 ; white, blue
    ld a,16         ; red

; create the first row

blueleft:
    ld (hl),e
    inc hl
    djnz blueleft

    ld (hl),d
    inc hl
    ld (hl),a
    inc hl
    ld (hl),a
    inc hl
    ld (hl),d
    inc hl

    ld b,14
blueright:
    ld (hl),e
    inc hl
    djnz blueright

; copy the first row to the next 17 rows

    ld l,b
    ld de,22528+32
    ld bc,17*32
    ldir

; add the horizontal stripe

    ld hl,22528+7*32
    dec d
    ld e,b
    ld c,2
midrep:
    ld b,25
midstripe:
    cp (hl)
    jr z,red
    ld (hl),120
red:
    ld (de),a
    inc hl
    inc de
    djnz midstripe

    ld hl,22528+10*32
    ld e,9*32
    dec c
    jr nz,midrep
    ret

Cờ Iceland


14

Minecraft 1.10.2, 734 ký tự

Nó có thể là 734 ký tự, nhưng đó là bản đệ trình duy nhất cho đến nay được làm bằng len thật!

summon FallingSand ~ ~1 ~ {Block:log,Time:1,Passengers:[{id:FallingSand,Block:redstone_block,Time:1,Passengers:[{id:FallingSand,Block:activator_rail,Time:1,Passengers:[{id:MinecartCommandBlock,Command:"fill 0 ~ 0 100 ~ 72 wool 11"},{id:MinecartCommandBlock,Command:"fill 28 ~ 0 44 ~ 72 wool"},{id:MinecartCommandBlock,Command:"fill 0 ~ 28 100 ~ 44 wool"},{id:MinecartCommandBlock,Command:"fill 32 ~ 0 40 ~ 72 wool 14"},{id:MinecartCommandBlock,Command:"fill 0 ~ 32 100 ~ 40 wool 14"},{id:MinecartCommandBlock,Command:setblock ~ ~ ~1 command_block 0 replace {Command:fill ~ ~-3 ~-1 ~ ~ ~ air}},{id:MinecartCommandBlock,Command:setblock ~ ~-1 ~1 redstone_block},{id:MinecartCommandBlock,Command:kill @e[type=MinecartCommandBlock]}]}]}]}

Chuyển đến khoảng -5x -5z, dán vào khối lệnh Impulse, đặt thành "Luôn hoạt động" và nhấn Xong.

Cờ kéo dài từ 0, 0 đến 100, 72; và là 3 khối phía trên khối lệnh như đã đặt. Nó tạo ra một cái bóng khá lớn và quái vật sinh ra dưới nó. Dù điều này có chính xác với đất nước Iceland hay không, là phỏng đoán của bất kỳ ai.

Cảnh báo công bằng - sẽ / giết tất cả mọi MinecartCommandBlockngười trên thế giới vì lợi ích cứu bốn nhân vật. Đừng chạy nó trong một thế giới mà bạn quá gắn bó.

Cờ

Bộ kết hợp lệnh của MrGarretto đã sử dụng và điều chỉnh đầu ra một chút (808 -> 734)


1
"Điều này có chính xác với đất nước Iceland không ..."
Jordan

2
Bạn có thể sử dụng kill @e mà không có đối số bộ chọn mục tiêu không? Nó sẽ giết người chơi nhưng cờ vẫn sẽ ở đó
Kuilin Li

11

Logo, 216 188 byte

Sử dụng triển khai của Calormen.com . Đối với những người theo chủ nghĩa thuần túy, việc thực hiện sử dụng một số khử răng cưa có lông một chút. Tuy nhiên, tôi đã lãng phí 3 byte để giấu con rùa, vì vậy nó sẽ bù đắp cho nó.

Điều này có thể được giảm đáng kể nếu việc triển khai Logo của bạn cho phép bạn đặt kích thước của cửa sổ. Sau đó, bạn có thể wrapvà làm cho con rùa cày qua để tạo ra cây thánh giá trong bốn nét, và bỏ qua việc phải cắt nó với một đường viền.

ảnh chụp màn hình cờ

TO X :C :S
setpc :C
setpensize :S
home
pd
setx 100
setx 36
bk 36
fd 72
pu
END
setpc "#48e0
fill
X 7 16
X "#d72828 8
fd 4
pe
pd
setx -4
bk 80
setx 104
fd 80
setx 0
ht

Tôi không biết có một phiên bản Logo nói tiếng Anh!
Vincent

1
Chắc chắn rồi. Tôi nghĩ rằng lần đầu tiên tôi nhìn thấy nó hơn 30 năm trước trên Apple IIe. Tôi cũng đã có nó trên máy tính màu TRS-80 của tôi. Đó là sở thích đầu tiên của tôi về việc sử dụng các góc trong hình học, nhiều năm trước khi tôi chính thức học nó ở trường.
GuitarPicker

Tại sao đường viền trắng xung quanh nó?
Solomon Ucko

1
Tôi đã vẽ các đường bằng một cây bút lớn, để lại các cạnh tròn trên các đầu của cây thánh giá, vì vậy tôi phải quét xung quanh nó bằng một cục tẩy lớn để vuông chúng lên. Tôi đã viết một phiên bản khác sử dụng một phương pháp hoàn toàn khác trong Logo và hóa ra là nhỏ hơn. Tôi cũng đang làm việc trên một phiên bản thứ ba in một chữ thập Unicode Latin lớn và vẽ nó, nhưng tỷ lệ không đúng và kích thước trông giống như nó sẽ vượt quá cái này.
GuitarPicker

10

Java 8, 449 447 byte:

import java.awt.*;import javax.swing.*;class A extends JPanel{public void paintComponent(Graphics G){super.paintComponent(G);G.setColor(new Color(0,72,224));G.fillRect(0,0,175,126);G.setColor(Color.WHITE);G.fillRect(49,0,28,126);G.fillRect(0,49,175,28);G.setColor(new Color(215,40,40));G.fillRect(56,0,14,126);G.fillRect(0,56,175,14);}public static void main(String[]a){JFrame J=new JFrame();J.add(new A());J.setSize(175,147);J.setVisible(true);}}

Một câu trả lời rất muộn, và cũng là câu trả lời dài nhất ở đây, rõ ràng. Sử dụng java.awt.Graphicslớp để tạo và mở một cửa sổ với cờ trong đó, được tạo bởi 5 tổng hình chữ nhật bao gồm 1 cho các khối màu xanh, 2 cho các sọc trắng và 2 cho các sọc đỏ. Sử dụng tỷ lệ 7 pixel: 1 đơn vị. Nói cách khác, đối với mỗi đơn vị, 7 pixel được sử dụng. Dưới đây là hình ảnh đầu ra trên Macintosh với OS X 10.11:

Ví dụ đầu ra

Bây giờ để tìm cách chơi golf này xuống một chút nữa ...


Hãy thử ghi đè paintthay vì paintComponent. Cân nhắc sử dụng một lớp ẩn danh cho JPanel. Cân nhắc việc chỉ sử dụng BufferedImage và xuất ra tệp.
Justin

@Justin Thật ra, tôi đã sử dụng Blue1 hình chữ nhật lớn cho nền. Tôi vừa bị lẫn lộn giữa phiên bản này và phiên bản khác mà tôi đã tạo bằng Python. Bất kể, cảm ơn cho lời khuyên khác! :)
R. Kap

Một số gợi ý khác: Không sử dụng a JPanel, chỉ ghi đè lên JFrame. Nếu bạn làm điều này và chỉ ghi đè paint, bạn không cần Xoay, chỉ cần AWT, vì vậy hãy thay đổi JFramethành Framevà xóa nhập. Đừng gọi super.paint. Sắp xếp lại phương pháp chính; di chuyển setSizevào paintphương pháp của chúng tôi Frame, loại bỏ các biến J, và thêm .setVisible(true)vào cuối của lớp nặc danh. Cuối cùng, thay đổi .setVisible(true)thành show(), có, đó là một phương pháp không dùng nữa, nhưng nó ngắn hơn. Sử dụng một interfaceđể loại bỏ publickhỏi phương thức chính.
Justin

Kết quả cuối cùng ở mức 339 ký tự (cũng phải thay đổi chiều cao vì đó là khung):import java.awt.*;interface A{static void main(String[]a){new Frame(){public void paint(Graphics G){setSize(175,119);G.setColor(new Color(0,72,224));G.fillRect(0,0,175,126);G.setColor(Color.WHITE);G.fillRect(49,0,28,126);G.fillRect(0,49,175,28);G.setColor(new Color(215,40,40));G.fillRect(56,0,14,126);G.fillRect(0,56,175,14);}}.show();}}
Justin

1
Thậm chí tốt hơn: không vẽ hình chữ nhật đầu tiên, chỉ cần gọi setBackground(color)(kích thước vẫn sai). Bây giờ là lúc 317:import java.awt.*;interface A{static void main(String[]a){new Frame(){public void paint(Graphics G){setSize(175,126);setBackground(new Color(0,72,224));G.setColor(Color.WHITE);G.fillRect(49,0,28,126);G.fillRect(0,49,175,28);G.setColor(new Color(215,40,40));G.fillRect(56,0,14,126);G.fillRect(0,56,175,14);}}.show();}}
Justin

10

R, 197 195 187 byte

w="white";r="#d72828";png(w=100,h=72);par(mar=rep(0,4),bg="#0048e0",xaxs="i",yaxs="i");frame();rect(c(0,7,0,8)/25,c(7,0,8,0)/18,c(1,.44,1,.4),c(11/18,1,5/9,1),c=c(w,w,r,r),b=NA);dev.off()

Được thụt lề, với các dòng và giải thích mới:

w="white"
r="#d72828"
png(w=100,h=72) #Creates in working directory a png called Rplot001.png 
                #with a width and a height of 120 and 72 pixels respectively.
par(mar=rep(0,4), #No margin around the plot
    bg="#0048e0", #Blue background
    xaxs="i",yaxs="i") #Axes fits range exactly
frame() #Creates an empty plot which range is xlim=c(0,1) & ylim=c(0,1)
rect(c(0,7,0,8)/25, #Because rect is vectorized
     c(7,0,8,0)/18,
     c(1,.44,1,.4), #i. e. c(25,11,25,10)/25
     c(11/18,1,5/9,1), #i. e. c(11,18,10,18)/18
     c=c(w,w,r,r), # c= is the same as col=, thanks to argument name completion
     b=NA)#No borders
dev.off()

Đảo cờ

Chỉnh sửa : hóa ra frame(), trái với plot()hoặc plot.new()không theo mặc định thêm một đường viền vào cốt truyện, có nghĩa bty="n"là không cần thiết ở đây.


9

Atari 8 bit thực thi, 123 byte

Một mục "chỉ để giải trí" khác, chương trình này có nghĩa là được chạy trên máy tính hoặc trình giả lập 8 bit Atari. Ví dụ: để tải chương trình trên Atari800, chỉ cần chạy:

atari800 iceland.xex

Mã máy (tính theo byte hex)

ff ff 00 06 74 06 a9 1b 8d 30 02 a9 06 8d 31 02
a9 44 8d c4 02 a9 0f 8d c5 02 a9 84 8d c6 02 d0
fe 70 70 70 48 57 06 48 57 06 48 57 06 48 57 06
48 57 06 48 57 06 48 57 06 48 61 06 48 6b 06 48
6b 06 48 61 06 48 57 06 48 57 06 48 57 06 48 57
06 48 57 06 48 57 06 48 57 06 41 1b 06 ff fe 5b
ff ff ff c0 00 00 00 aa aa 5a aa aa aa 80 00 00
00 55 55 55 55 55 55 40 00 00 00

Mã nguồn của trình biên dịch chương trình (có thể được biên dịch bằng MADS ):

        org $0600
        lda <dlist
        sta $0230
        lda >dlist
        sta $0231
        lda #$44
        sta $02c4
        lda #$0f
        sta $02c5
        lda #$84
        sta $02c6
loop    bne loop
dlist   dta $70, $70, $70
        dta $48, a(line1), $48, a(line1), $48, a(line1), $48, a(line1), $48, a(line1), $48, a(line1), $48, a(line1)
        dta $48, a(line2)
        dta $48, a(line3), $48, a(line3)
        dta $48, a(line2)
        dta $48, a(line1), $48, a(line1), $48, a(line1), $48, a(line1), $48, a(line1), $48, a(line1), $48, a(line1)
        dta $41, a(dlist)
line1   dta $ff, $fe, $5b, $ff, $ff, $ff, $c0, $00, $00, $00
line2   dta $aa, $aa, $5a, $aa, $aa, $aa, $80, $00, $00, $00
line3   dta $55, $55, $55, $55, $55, $55, $40, $00, $00, $00

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

Chương trình sử dụng danh sách hiển thị tùy chỉnh dựa trên Chế độ ANTIC 8 (40 pixel mỗi dòng, 2 bpp). Các dòng lặp lại được tải từ cùng một vị trí bộ nhớ. Sau khi thiết lập màn hình, chương trình đi vào một vòng lặp vô hạn.

Ảnh chụp màn hình:

itub.xex chạy trên Atari800


9

FFmpeg, 339 184 byte

ffplay -f lavfi color=d72828:100x36[r];color=white:64x32[w];color=0048e0:56x28[b];[w][b]overlay=4,split[x][y];[r][x]overlay=-32[d];[d][y]overlay=40,split[t][m];[m]vflip[n];[t][n]vstack

Sẽ cố gắng để chơi golf này xuống .. khác.

Hình ảnh 100x72 của cờ Iceland


9

Con trăn, 119 118 114 112 byte

Không có gì đặc biệt, đơn giản:

b,w,r="\0H\xe0"*28,"\xff"*12,"\xd7(("*8
A,B=28*(b+w+r+w+2*b),4*(8*w+r+15*w)
print"P6 100 72 255 "+A+B+100*r+B+A

Đầu ra dưới dạng PPM nhị phân, sử dụng

python golf_iceland.py > iceland.ppm
  • Edit1: chuyển một byte giữa print và dấu ngoặc kép
  • Edit2: ngắn hơn một chút như PPM nhị phân
  • Edit3: Hình \0có thể được sử dụng thay vì\x00

Nếu ai đó biết cách sử dụng trực tiếp ký tự ASCII không in được, vui lòng cho biết.

Chuyển đổi sang PNG


2
Xin chúc mừng! Bạn đã đánh bại tôi rất nhiều: D
Gábor Fekete

2
@ GáborFekete đánh bại bạn theo byte, vâng. Nhưng câu trả lời của bạn thông minh hơn nhiều với phần bù đó
Karl Napf

Tại sao không có kết quả của những người trốn thoát thay vì những người trốn thoát?
Solomon Ucko

@SolomonUcko Tôi đã thử b,w,r="\0Hà"*28,"ÿ"*12,"×(("*8và sử dụng Python 3, nhưng nó không hoạt động.
Karl Napf

@KarlNapf, làm thế nào mà nó thất bại? Có phải nó vẽ không chính xác, hoặc đưa ra một thông báo lỗi? Nó cũng có thể là một vấn đề mã hóa.
Solomon Ucko

8

JavaScript, 267 byte

document.write("<div style='width:250px;height:180px;background:"+[[b="bottom",44.4,d="d72828",55.6],[r="right",32,d,40],[b,38.9,e="fff",61.1],[r,28,e,44]].map(([d,a,c,o])=>`linear-gradient(to ${d+(t=",transparent ")+a}%,#${c} ${a}%,#${c} ${o}%${t+o}%)`)+",#003897'")


1
Chắc chắn tỷ lệ 7 - 14 của chiều rộng màu xanh bên trái và bên phải là chính xác?
thao tác

1
@manatwork Rất tiếc, vì một số lý do tôi nghĩ 100/25 = 5, vì vậy mọi thứ kết thúc quá rộng 25%.
Neil

8

Java, 335 byte

Chức năng là

void w()throws Exception{int w=100,h=72;BufferedImage i=new BufferedImage(w,h,1);Graphics g=i.getGraphics();g.setColor(new Color(18656));g.fillRect(0,0,w,h);g.setColor(WHITE);g.fillRect(0,28,w,16);g.fillRect(28,0,16,h);g.setColor(new Color(14100520));g.fillRect(0,32,w,8);g.fillRect(32,0,8,h);ImageIO.write(i,"png",new File("f.png"));}

Và nó viết hình ảnh mong muốn như f.png , với kích thước 100x72

(Lưu ý rằng đây không phải là đối thủ cạnh tranh trực tiếp với Câu trả lời của R. Kap , vì nó ghi một tệp và không hiển thị hình ảnh trên màn hình)

Đây là phiên bản chưa được chỉnh sửa có thể được biên dịch và chạy:

import static java.awt.Color.WHITE;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

public class Iceland
{
    public static void main(String[] args) throws Exception
    {
        Iceland i = new Iceland();
        i.w();
    }

    void w() throws Exception
    {
        int B=0x0048e0,R=0xd72828,w=100,h=72;
        BufferedImage i=new BufferedImage(w,h,1);
        Graphics g=i.getGraphics();
        g.setColor(new Color(B));
        g.fillRect(0,0,w,h);
        g.setColor(WHITE);
        g.fillRect(0,28,w,16);
        g.fillRect(28,0,16,h);
        g.setColor(new Color(R));
        g.fillRect(0,32,w,8);
        g.fillRect(32,0,8,h);
        ImageIO.write(i,"png",new File("f.png"));
    }
}

Một lưu ý phụ, liên quan đến các câu hỏi liên quan: Có lẽ người ta nên tạo ra một thử thách để vẽ cờ của

  • Indonesia
  • Ba Lan
  • Phần Lan
  • Pháp
  • nước Hà Lan
  • nước Thái Lan
  • Na Uy

cùng lúc, cùng thời điểm:

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


7

SVG + Javascript, 190 165 164 byte

Không có chuyên gia ở đó, lặp đi lặp lại một con đường chỉ để thay đổi màu sắc và độ rộng dòng trông có vẻ ngớ ngẩn javascript ftw!

document.write(`<svg><rect width=100 height=72 fill="#0048e0"/>${a='<path d="M0 36L100 36M36 0L36 72"style="stroke-width:'}16;stroke:#fff"/>${a}8;stroke:#d72828">`)

Dễ đọc hơn:

document.write(`<svg><rect width=100 height=72 fill="#0048e0"/>
${a='<path d="M0 36L100 36M36 0L36 72"style="stroke-width:'}16;stroke:#fff"/>
${a}8;stroke:#d72828">`)

Bạn có thể sử dụng path d="m0,0h100v72H0"thay vì hình chữ nhật để lưu hai byte. Tương tự, sử dụng M0 36H100M36 0V72cho dữ liệu của đường dẫn khác, giúp tiết kiệm năm byte khác. Và bạn có thể bỏ stylethuộc tính để khai báo cả hai stroke-widthstrokelàm thuộc tính để lưu năm byte khác.
Joey

7

Đang xử lý , 136 byte

size(100,72);noStroke();background(#0048e0);fill(255);rect(28,0,16,72);rect(0,28,100,16);fill(#d72828);rect(0,32,100,8);rect(32,0,8,72);

Bị đánh cắp

//open the window
size(100,72);
//turn off borders that surround shapes by default
noStroke();
//draw blue as the background
background(#0048e0);
//set color to white
fill(255);
//draw 2 white bars
rect(28,0,16,72);
rect(0,28,100,16);
//set color to red
fill(#d72828);
//draw 2 red bars
rect(0,32,100,8);
rect(32,0,8,72);

Đầu ra:

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


1
Bạn có thể cạo thêm hai byte bằng cách sử dụng fillrectthay vì sizebackground. 134 byte:noStroke();fill(#0048e0);rect(0,0,100,72);fill(255);rect(0,28,100,16);rect(28,0,16,72);fill(#d72828);rect(0,32,100,8);rect(32,0,8,72);
GuitarPicker

Thêm vào những gì GuitarPicker nói, fill(-1)ngắn hơn một byte so vớifill(255)
Bò lang băm

7

Toán học 174 157 byte

Không có nội dung:

157 byte

r=Rectangle;c=RGBColor;Graphics@{c[{0,72,224}/255],r[{0,0},{25,18}],White,r[{7,0},{11,18}],r[{0,7},{25,11}],c[{43,8,8}/51],r[{8,0},{10,18}],r[{0,8},{25,10}]}

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

Hay cách khác

232 byte

x=Join[Unitize/@Range@7,{0},{2,2},{0},Unitize/@Range@14]&/@Range@7;y=Join[ConstantArray[0,8],{2,2},ConstantArray[0,15]];z=ConstantArray[2,25];ArrayPlot[Join[x,{y},{z,z},{y},x]/.{2->RGBColor[{43,8,8}/51],1->RGBColor[{0,72,224}/255]}]

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


1
không có gì. tương tự có thể được áp dụng cho phiên bản dài thứ hai của bạn. u=Unitize;c=ConstantArrayvv ^ _ ^
Dan Oak

1
Đợi đã, có một cái gì đó Mathicala không có nội dung? Tôi ngạc nhiên.
Morgan Thrapp

@MorganThrapp Tôi chắc chắn đã từng có một câu trả lời Mathicala khác sử dụng nội dung.
gcampbell

3
CountryData["Iceland", "Flag"]
DWA

7

JavaScript (ES6), 231 240

Mã bên trong đoạn trích dưới đây. Chạy nó để kiểm tra.

d=(w,h,c)=>`<div style=float:left;width:${w}em;height:${h}em;background:#${['0048e0','fff','d72828'][~~c]}>`;document.write(d(25)+(a=[252,61,94,61,476]).concat(b=[261,70,485],810,b,a).map(v=>d(v>>5,v/4&7,v&3)).join(e='</div>')+e+e)


7

ZX Spectrum Z80 hội, 51 byte

https://github.com/ralphbecket/Z80/blob/master/ItubFlag/IedomFlag.asm

                zeusemulate "48K", "ULA+"
ZeusEmulate_PC  equ Main
ZeusEmulate_SP  equ $FF40

                org $8000

MinWhite        equ 7
MinRed          equ MinWhite + 1
TopRed          equ MinRed + 2
TopWhite        equ TopRed + 1
Height          equ TopWhite + MinWhite - 2
Width           equ TopWhite + 2 * MinWhite - 1

White           equ %01111000
Red             equ %01010000
Blue            equ %01001000

Main            ld hl, $5800 + ((Height - 1) * 32) + (Width - 1)
                ld c, Height

YLoop           ld b, Width

XLoop           ld (hl), Red
                ld de, MinRed * $100 + TopRed
                call Test
                jr c, Next

                ld (hl), White
                ld de, MinWhite * $100 + TopWhite
                call Test
                jr c, Next

                ld (hl), Blue

Next            dec hl
                djnz XLoop
                ld de, -(32 - Width)
                add hl, de
                dec c
                jr nz, YLoop
                ret

Test            equ *
TestX           ld a, b
                cp d
                jr c, TestY
                cp e
                ret c
TestY           ld a, c
                cp d
                ccf
                ret nc
                cp e
                ret

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


7

J, 86 84 83 byte

   load'viewmat'
   (255,0 72 224,:215,2#40)viewmat _9 _9|.2(b=.[,~[,.~[,[,.])0 b 14 21$1

Cách tiếp cận tương tự như @ Gábor Fekete's với Python.

Lập luận trái colorscho viewmatlà một mảng các giá trị RGB, trong trường hợp của chúng tôi:

255 255 255
  0  72 224
215  40  40

Và đối số đúng là một ma trận các chỉ số của colors.
(_9 _9 |. matrix)hướng dẫn chuyển matrix9 mục theo từng chiều.
Xây dựng đáng sợ (border ([,~[,.~[,[,.]) matrix)kết thúc tốt đẹp matrixvới số border.
(14 21 $ 1)tạo ma trận 14 × 21 của những người.

Đầu ra được hiển thị trong cửa sổ có thể thay đổi kích thước riêng biệt, khá lớn theo mặc định. nhập mô tả hình ảnh ở đây

Cảm ơn

dặm - lưu 2 byte với sắp xếp lại các màu sắc, sử dụng các tính năng của ,rằng bản sao những con số (255) đối với thỏa thuận hình thành.


1
Có vẻ như chiều cao của lá cờ là 26 đơn vị thay vì 25.
Gábor Fekete

@ GáborFekete hm, ý bạn là chiều cao là 19 thay vì 18? không đề cập đến điều đó, chỉ cần chú ý sau bình luận của bạn
Dan Oak

Ồ đúng rồi, tôi đã viết chiều cao nhưng sử dụng các giá trị chiều rộng ...
Gábor Fekete

yeeeah, thực sự. tôi đã phạm sai lầm trong các giá trị. hình dạng của ma trận ban đầu phải là 14 21( 18 25 - 4 4). sửa chữa ... cảm ơn bạn!
Dan Oak

1
Bạn có thể tiết kiệm 2 byte sắp xếp lại các giá trị rgb(255,0 72 224,:215 40 40)viewmat _9 _9|.2(b=.[,~[,.~[,[,.])0 b 14 21$1
dặm

6

TI-BASIC (không cạnh tranh), 323 byte

Mã được viết cho TI-84, 83 và các biến thể. Tôi chắc chắn hy vọng đó không phải là vấn đề mà kích thước thay đổi tùy theo thiết bị và mã không được tô màu.

Thiết lập:

:18→Xmax:¯18→Xmin
:10→Ymin:¯10→Ymin
:AxesOff

Đang vẽ:

:Line(¯15,9,¯8,9)
:Line(¯8,9,¯8,2)
:Line(¯8,2,¯15,2)
:Line(¯15,2,¯15,9)

:Line(¯15,¯9,¯8,¯9)
:Line(¯8,¯9,¯8,¯2)
:Line(¯8,¯2,¯15,¯2)
:Line(¯15,¯2,¯15,¯9)

:Line(¯4,9,10,9)
:Line(¯4,2,10,2)
:Line(¯4,9,¯4,2)
:Line(10,9,19,2)

:Line(¯4,¯9,10,¯9)
:Line(¯4,¯2,10,¯2)
:Line(¯4,¯9,¯4,¯2)
:Line(10,¯9,19,¯2)

:Line(¯15,1,¯7,1)
:Line(¯15,¯1,¯7,¯1)
:Line(¯5,1,20,1)
:Line(¯5,¯1,¯20,¯1)
:Line(¯7,¯1,¯7,¯9)
:Line(¯5,¯1,¯5,¯9)
:Line(¯7,1,¯7,9)
:Line(¯5,1,¯5,9)

Chơi gôn

:18→Xmax:¯18→Xmin:10→Ymin:¯10→Ymin:AxesOff:Line(¯15,9,¯8,9:Line(¯8,9,¯8,2:Line(¯8,2,¯15,2:Line(¯15,2,¯15,9:Line(¯15,¯9,¯8,¯9:Line(¯8,¯9,¯8,¯2:Line(¯8,¯2,¯15,¯2:Line(¯15,¯2,¯15,¯9:Line(¯4,9,10,9:Line(¯4,2,10,2:Line(¯4,9,¯4,2:Line(10,9,19,2:Line(¯4,¯9,10,¯9:Line(¯4,¯2,10,¯2:Line(¯4,¯9,¯4,¯2:Line(10,¯9,19,¯2:Line(¯15,1,¯7,1:Line(¯15,¯1,¯7,¯1:Line(¯5,1,20,1:Line(¯5,¯1,¯20,¯1:Line(¯7,¯1,¯7,¯9:Line(¯5,¯1,¯5,¯9:Line(¯7,1,¯7,9:Line(¯5,1,¯5,9

Vâng, thiếu )là cố ý.

Kích thước:

Line(và tất cả các lệnh như thế chiếm 1 byte, mỗi số mất một byte. Đó là 323 byte.

Điều đó hoàn toàn tẻ nhạt. Hy vọng tôi sẽ nhận được điều này trên một trình giả lập (tôi phải nhập thủ công mọi thứ) nhưng thực ra nó chỉ là những đường kẻ trong hình cờ.


1
@ Random832 Thật kỳ lạ, đúng vậy! Kiểm tra kích thước mã thông báo ở đây: tibasicdev.wikidot.com/line Tôi không chắc chắn chính xác byte là gì. Tuy nhiên tôi biết rằng trên máy tính, nó được coi là một char.
charredgrass

1
@ Random832 byte cho Line(là 0x9C. Bạn có thể xem bảng mã thông báo một byte tại đây: tibasicdev.wikidot.com/one-byte-tokens
f ''

1
Bạn không thể vẽ biểu đồ bằng cách sử dụng các vùng (sử dụng <>) thay vì các đường để tạo bóng mờ màu xám?
mbomb007

7
Tại sao điều này không cạnh tranh?
Mego

1
Lưu ý rằng hiện tại đã có TI-84 màu, vì vậy bạn có thể chạy nó trên đó chỉ với những sửa đổi nhỏ.
Moshe Katz

6

C #, 384 346 317 292 29 289 byte

Giải pháp đơn giản với Windows Forms và GDI

Func<int,int,Point>p=(x,y)=>new Point(x*10,y*10);var b=new Bitmap(250,180);var g=Graphics.FromImage(b);g.Clear(Color.Blue);g.DrawLines(new Pen(Color.White,40),new[]{p(0,9),p(50,9),p(9,-20),p(9,18)});g.DrawLines(new Pen(Color.Red,20),new[]{p(0,9),p(50,9),p(9,-20),p(9,18)});b.Save("b.png");

Sử dụng

Bắt đầu một dự án giao diện điều khiển mới và đặt mã ở trên vào phương thức chính, thêm System.Drawing-Namespace.

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

Mã này tạo ra một hình ảnh mới và vẽ một số dòng trên đó. Nó lưu hình ảnh vào đĩa. Một số điểm kết thúc của các dòng nằm ngoài vùng nhìn thấy.

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


Chào mừng đến với PPCG! Codegolf đầu tiên tuyệt vời, nhưng có vẻ như bạn có thể cải thiện nó. Đầu tiên, tôi nghĩ rằng bạn có thể xóa một số khoảng trắng ở đây và ở đó ( b = new=> b=new, using ()=> using(), không sử dụng khoảng trắng sau ;s. Nếu bạn muốn, bạn có thể đọc Mẹo chơi golf của chúng tôi trong C # để tìm một số lời khuyên.
Katenkyo

Cảm ơn, khoảng trắng được xóa và tôi cũng xóa câu lệnh sử dụng. Tôi cũng sử dụng các biến ẩn danh bây giờ.
soema

Chắc chắn bạn cần Process.Start(f);? Theo tôi hiểu, điều đó tương tự như cmd start. Vì bạn có thể chọn lưu hoặc hiển thị hình ảnh và bạn đã lưu nó, bước đó dường như vô nghĩa. Trong trường hợp đó có lẽ bạn cũng có thể tránh khai báo biến f.
manatwork

Đúng! Chỉ cần lưu ngay bây giờ và không mở thêm ...
soema

Bạn nên đếm byte cho không gian tên usingcũng như khai báo phương thức hoặc chương trình soạn thảo chương trình. Đây là tất cả những gì cần thiết (nhiệm vụ cho bạn lựa chọn chức năng hoặc chương trình, nhưng không phải là lựa chọn chỉ một loạt các câu lệnh).
Joey

6

Python IDLE, 191 172 156 byte

IDLE là IDE tiêu chuẩn của Python. Trừ khi nó có một chủ đề tùy chỉnh, STDOUTlà màu xanh, STDERRmàu đỏ và nền là màu trắng. Vì vậy, mã sau đây:

from sys import*
x=[1]*7;y=[0]*7;z=[0,2,2,0]
f=[x+z+x*2]*4+[y+z+y*2,[2]*25]
for s in f+f[::-1]:[[stderr,stdout][-x].write(' █'[x>0]*2)for x in s];print()

Sản xuất đầu ra này:

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

Khi các ký tự được in không phải là hình vuông, điều này hơi bị tắt, nhưng nếu chúng ta lấy 1 đơn vị là 2 ký tự ngang và 1 char, thì tỷ lệ là chính xác.

Điều này có thể được đánh gôn, bằng cách giảm một nửa kích thước chiều rộng và sử dụng ký tự ASCII cho các khối như '#', nhưng nó không thực sự có tác dụng tương tự.


Giải trình

Bản thân mã có vẻ khá cẩu thả vào lúc này và chắc chắn có thể bị đánh gôn, nhưng ý tưởng cơ bản là:

  • Xây dựng một ma trận trong đó 0đại diện cho khoảng trắng, 1đại diện cho một khối màu xanh và 2đại diện cho một khối màu đỏ.
    • Nửa đầu được xây dựng (chủ yếu thông qua việc cắt / nhân danh sách) và được thêm vào mặt sau của chính nó để tạo ra cờ đầy đủ.
  • Lặp lại qua ma trận, in từng giá trị dưới dạng khoảng trắng hoặc khối tới STDERR/ STDOUTtương ứng. In một dòng mới sau mỗi hàng.

6

Rùa Python, 176 byte

Một triển khai Python Python khác nhưng lần này dựa trên dập thay vì vẽ :

from turtle import*
shape("square")
c=color
c("navy")
z=shapesize
z(18,25)
s=stamp
s()
c("white")
z(4,25)
s()
bk(70)
seth(90)
s()
c("#d72828")
z(2,18)
s()
home()
z(2,25)
done()

Sử dụng dập và không làm cho nó dễ dàng mở rộng, tiết kiệm khoảng 60 byte mã.

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

Điều thú vị là bạn có thể thay thế "square"tùy chọn đa giác bằng "turtle"tùy chọn đa giác trong shape()cuộc gọi và nhận logo ecogroovy:

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


5

Perl, 134 byte

Lưu ý: \x1bthực sự là ký tự thoát ASCII và được tính là 1 byte

($b,$w,$r)=map"\x1b[48;5;${_}m",18,15,1;print@l=("$b "x7,"$w $r  $w $b",$"x14,$/)x7,@m=("$w "x8,"$r  ","$w "x15,$/),("$r "x25,$/)x2,@m,@l

Sử dụng

Lưu dưới dạng iceland-flag.plvà chạy qua:

perl iceland-flag.pl

Cờ squished

Sử dụng các chuỗi thoát ANSI và giả sử một thiết bị đầu cuối Linux để hiển thị cờ. Có vẻ hơi lạ khi sử dụng các phép đo được cung cấp.

Perl, 141 byte

Phiên bản này trông gần hơn một chút so với kích thước chính hãng ...

($b,$w,$r)=map"\x1b[48;5;${_}m",18,15,1;print@l=("$b "x14,"$w  $r    $w  $b",$"x28,$/)x7,@m=("$w "x16,"$r "x4,"$w "x30,$/),("$r "x50,$/)x2,@m,@l

Cờ ít vắt


1
Sự kỳ lạ đến từ việc các nhân vật cao hơn chiều rộng của họ.
Erik the Outgolfer 13/07/2016

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ Thật vậy, tôi đã tự hỏi nếu có phông chữ có chiều rộng cố định vuông, nhưng tôi không tưởng tượng chúng trông đặc biệt tốt! Tôi có thể cập nhật phiên bản thứ hai đó để trông gần hơn nữa (nó không cần nhiều byte hơn hiện tại, nhưng thời gian ...)
Dom Hastings

Trên một TTY, bạn không thể tự hỏi một điều như vậy, phông chữ là SỰ THẬT! Bạn không thể thay đổi nó chỉ vì bạn không thích nó.
Erik the Outgolfer 13/07/2016

5

SpecaBAS - 150 byte

1 a=15,b=250,c=180: FOR i=1 TO 5: READ k,x,y,w,h: RECTANGLE INK k;x,y,w,h FILL: NEXT i
2 DATA 1,0,0,b,c,a,71,0,40,c,a,0,71,b,40,2,81,0,20,c,2,0,81,b,20

Đọc màu mực, x, y, chiều rộng và chiều cao và vẽ một hình chữ nhật với các tọa độ / kích thước đó.

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


Bạn có cần không gian sau mỗi :? Ồ, và nó là 151 byte.
Erik the Outgolfer 13/07/2016
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.