스위스 국기 그리기


46

작업 : 스위스 국기를 출력하십시오.

행복한 스위스 국경일 / Schweizer Bundesfeiertag / Féte nationale suisse / 축제 nazionale svizzera / Fiasta naziunala svizra!

세부 사항 : 플래그는 #FFFFFF빨간색 ( #FF0000) 배경 에 흰색 ( ) 십자가 로 구성됩니다 . 십자가는 크기가 6x7 인 팔이 각면에 붙어있는 6x6 정사각형으로 구성됩니다. 십자가는 32x32 정사각형 배경의 중앙에 있으며 각면에서 6 단위의 거리가 있습니다. ( 소스 )

출력 크기는 참가자가 선택할 수 있지만 이미지는이 비율과 정확히 일치해야합니다. 즉, 크기는 32의 배수 여야합니다.

최소 버전은 다음과 같습니다.


1
플래그 챌린지의 일부 버전에서는 컬러 ASCII 출력이 허용되었지만 ascii-art 는 포함하지 않았습니다 . 확인하기 위해 ASCII 출력이 허용되지 않습니까?
Stephen

1
화면에 출력 할뿐만 아니라 널리 알려진 이미지 형식 만 허용됩니다.
flawr

20
echo 🇨🇭-이것이 허용되지 않는다고 가정합니다
Digital Trauma

파란색 CH가 표시되는 이유를 알 수 없습니다.
flawr

1
내 생각 @Tutleman 는 않습니다
루이스 Mendo

답변:


40

SVG (HTML5), 94 83 82 64 바이트

<svg><path d=M0,0V32H32V0M6,13h7V6h6v7h7v6H19v6H13V19H6 fill=red

@ThePirateBay 덕분에 2 바이트를 절약했습니다. @ATaco 덕분에 1 바이트를 절약했습니다. @CraigAyre 덕분에 32x32 이미지가 허용 가능하다는 것을 지적하여 18 바이트를 절약했습니다. @Shaggy가 지적했듯이 기본 배경이 흰색이라고 가정합니다. 모든 배경에서 작동하는 플래그에 22 바이트를 추가하십시오.

<svg><path d=M0,0V32H32V0 fill=red /><path d=M6,13h7V6h6v7h7v6H19v6H13V19H6 fill=#FFF


경로를 닫을 필요가 없습니다. 경로를 열어두면 4 바이트를 절약 할 수 있습니다.

ThePirateBay가 말했듯이 >경로 태그 의 오른쪽 은 선택 사항입니다.
ATaco

6
SVG에는 "골프 언어"가 있습니까? Oo
ETHproductions

16
XML 구문을 작성하는 데
익숙해 져서이

3
viewBox최소 버전으로 제거 할 수 있습니까 ? <svg><path d=M0,0V32H32V0M6,13h7V6h6v7h7v6H19v6H13V19H6 fill=red
Craig Ayre

31

DOS 용 x86-16 머신 코드, 43 바이트

               ; Draw 32x32 red square
B8 0C 28          mov  ax, 0x0C28   ; AL == color red, AH == set pixel function
B9 00 1F          mov  cx, 31
               DrawBox:
BA 00 1F          mov  dx, 31
               DrawRow:
CD 10             int  0x10
4A                dec  dx
75 FB             jnz  DrawRow
E2 F6             loop DrawBox

               ; Draw the interior white cross
B0 0F             mov  al, 0x0F    ; high byte already set
B1 06             mov  cl, 6       ; high byte already 0
               DrawCross:
B2 0D             mov  dl, 13      ; high byte already 0
               DrawCrossInner:
CD 10             int  0x10        ; plot CX, DX
87 D1             xchg dx, cx
CD 10             int  0x10        ; plot DX, CX
87 D1             xchg dx, cx
42                inc  dx
80 FA 12          cmp  dl, 13+6
75 F2             jne  DrawCrossInner
41                inc  cx
80 F9 19          cmp  cl, 6+(32-6-6)
75 EA             jne  DrawCross

C3                ret

위의 코드는 COM 파일로 조립 된 다음 DOS에서 실행되도록 설계되었습니다. ROM BIOS 비디오 서비스를 호출하여 플래그의 개별 픽셀을 플로팅하여 화면 왼쪽 상단에 스위스 플래그를 32x32로 표시합니다.

이 코드는 비디오 모드가 이미 0x13 모드로 설정되어 있으며 VGA 디스플레이가 필요하다는 것을 전제로합니다. 다른 비디오 모드를 사용할 수 있지만 VGA를 요구하면 (1) 정사각형 픽셀과 (2) 100 % 빨강 ( 0xFF0000) 이 포함 된 기본 팔레트 (팔레트를 변경할 때 바이트를 낭비 할 필요가 없음) 그림 물감). 따라서이 프로그램을 실행하기 전에 디스플레이를 모드 0x13으로 전환해야합니다. 다음 코드 만 있으면됩니다.

mov  ax, 0x13
int  0x10

이 코드는 다른 가정을하지 않으며 DOS 호환 운영 체제의 모든 x86 호환 하드웨어에서 실행되어야합니다.

그러나 프로그램은 플래그를 그린 직후에 종료되므로 DOS 프롬프트는 일반적으로 화면의 왼쪽 상단 모서리에 다시 인쇄되어 플래그의 맨 위 몇 줄을 덮습니다. 따라서 실제 출력을보고 싶다면 시스템이 작동하기 전에 정지 / 일시 정지해야합니다 RET. 다음은 FreeDOS 가상 머신에서 실행되는 모습의 스크린 샷입니다.

특히 이미 0x13 모드를 가정하고 있기 때문에 픽셀 버퍼 데이터를 비디오 버퍼에 직접 쓰면이 문제를 더 해결할 수 있습니다. 아직 시도하지 않았습니다. INT 0x10이미 꽤 짧은 명령 이지만 1 바이트 문자열 명령을 사용하여 픽셀 데이터를 메모리에 직접 쓸 수 있으면 코드를 크게 절약 할 수 있습니다.


감동적인! 나는 asm을 많이 보지 않지만 내가 할 때 항상 매우 흥미 롭습니다
Adrian Zhang

ASM 팬들을 만나서 반갑습니다.
Billal Begueradj

모든 행을 반복하는 3 개의 32 픽셀 너비 타일로이를 수행 할 수 있습니다. 더 많은 데이터를 사용하지만 작업 수를 줄입니다. 또는 왼쪽에 16 픽셀 너비의 타일 3 개를 사용하고 왼쪽을 반전하여 대칭 작업을 수행 할 수 있습니다.
ATL_DEV

21

MATL , 29 바이트

2Y66t&Y"OJQht3$)6thYaQK7hBoYG

MATL Online 에서 사용해보십시오 !

설명

2Y6     % Push predefined literal: 3×3 matrix [0 1 0; 1 1 1; 0 1 0]
6t&Y"   % Repeat each entry 6 times in the two dimensions. Gives an 18×18 matrix
OJQh    % Push [0 1j+1]. Used as an index, this means [0 1 ... end+1]. Indexing
        % is 1-based and modular, so 0 is the same as end
t3$)    % Apply that index in the two dimensions. This extends by 1 entry in 
        % each dimension, so that the arms have length 7. Gives a 20×20 matrix
6thYa   % Pad with 6 zeros in the two dimensions. Gives a 32×32 matrix
Q       % Add 1. The matrix now contains values 1 (will become red) and 2 (white)
K7hBo   % Convert array [4 7] to binary. Gives [1 0 0; 1 1 1], to be used as
        % colormap. First row is red, second is white
YG      % Show image using colormap

17

자바 8, 246 + 42 = 288 바이트

-64 바이트에 대한 @Aaron 덕분입니다. 확장자없이
파일로 출력하여 -4 바이트a

import java.awt.*;import java.awt.image.*;
x->{BufferedImage i=new BufferedImage(32,32,1);Graphics g=i.getGraphics();g.setColor(Color.RED);g.fillRect(0,0,32,32);g.setColor(Color.WHITE);g.fillRect(13,6,6,20);g.fillRect(6,13,20,6);javax.imageio.ImageIO.write(i,"png",new java.io.File("a"));}

예외를 발생시키는 기능적 인터페이스 메소드에 할당 할 수있는 람바 식입니다. a이 파일을 실행하는 디렉토리에 이미지 파일 (이미지 파일)을 만듭니다 .

실행에 사용되는 주변 코드 : 온라인으로 사용해보십시오!

언 골프

x->{
    BufferedImage i=new BufferedImage(32,32,1);
    Graphics g=i.getGraphics();
    g.setColor(Color.RED);
    g.fillRect(0,0,32,32);
    g.setColor(Color.WHITE);
    g.fillRect(13,6,6,20);
    g.fillRect(6,13,20,6);
    javax.imageio.ImageIO.write(i,"png",new java.io.File("a"));
}

결과

IntelliJ IDEA 이미지 미리보기에서 제공 한 그리드입니다 (분명히).


fillPolygon호출을 두 개의 fillRect호출 로 변경하여 상당히 많은 바이트를 면도 할 수 있습니다 . 나는 크기를 존중한다고 확신하지 못하지만 g.fillRect(7,13,18,6);g.fillRect(13,7,6,18)64 바이트보다 짧은 것을 생각해 냈습니다.
Aaron

@Aaron 좋은 전화, 어떤 이유로 든 나는 그것이 더 길 것이라고 생각했습니다 ... 감사합니다!
Justin Mariner

.png대신 파일 이름을 지정하고 a.png바이트를 저장할 수 있습니다.
user2428118

@ user2428118 Nice, a확장명없이 더 가져 가서 이름을 지정할 수 있습니까? 여전히 열 수 있지만 사진 뷰어에서 열도록 지시하면됩니다.
저스틴 마리너

1
@ OlivierGrégoire 나는 그것이 내 솔루션의 아이디어와 너무 거리가 멀다고 생각하지만, 그것을 자신의 것으로 게시하는 것을 환영합니다
Justin Mariner

16

엑셀 VBA, 86 85 79 바이트

암호

익명 VBE 즉시 창 기능으로 입력을받지 않고 스위스 플래그를 객체 범위 [A1:F32]로 출력 ActiveSheet합니다. 이것은 먼저 셀을 정사각형으로 만든 다음 빨간색 영역을 그리고 마지막으로 흰색 십자가에 그려서 작동합니다.

Cells.RowHeight=48:[A1:AF32].Interior.Color=255:[G14:Z19,N7:S26].Interior.Color=-1

적색 배경에 놓은 후 스위스 국기의 "십자형"을 색칠하는 단계를 제거하는 배열은 적어도 16 개의 셀 주소를 필요로하기 때문에 실제로는 상기 구성보다 더 길다. 깃발

-1 바이트 덕분에 Greedo의에 대한 @ RowHeight=48이상ColumnWidth=2

-6 바이트 덕분에 Greedo의에 대한 @ -1대신rgbWhite

산출

여기에 이미지 설명을 입력하십시오


1
환상적인; 그래도 Interior.Color=-1대신 6 바이트를 절약 할 수 있습니다Interior.Color=rgbWhite
Greedo

@Greedo, 허, 당신은 무엇을 알고 있습니까-환상적입니다. 나는 명확성 rgbWhite16777215위해 10 진수 값을 사용 -1했지만 동일한 효과가 있는지 전혀 몰랐 습니다. 감사!
Taylor Scott

1
이 링크에 따라 : ( reddit.com/r/compsci/comments/62x9g9/... 난이 파워 포인트에 이식 할 수 있는지 궁금 있도록) 파워 포인트는 튜링
Suhrid Mulay

13

C ++, SFML, 406 399 394 바이트

pdpi 덕분에 -2 바이트 Zacharý 덕분에
-10 바이트

SFML (Simple and Fast Multimedia Library) 은 비디오 게임 및 멀티미디어 프로그램의 개발을 쉽게하기 위해 작성된 C ++ 라이브러리입니다.

코드 :

#include<SFML\Graphics.hpp>
using namespace sf;int main(){for(RenderWindow t(VideoMode(128,128),"");t.isOpen();){t.clear();RectangleShape r({128.f,128.f});r.setFillColor(Color::Red);t.draw(r);r.setFillColor(Color::White);r.setPosition({24.f,52.f});r.setSize({80.f,24.f});t.draw(r);r.rotate(90);r.setPosition({76.f,24.f});t.draw(r);t.display();for(Event e;t.pollEvent(e);)if(!e.type)t.close();}}

플래그는 128x128 창에 표시됩니다. 귀하의 OS는 128x128 창을 표시 할 수 있어야합니다 (Win8.1은 더 작은 너비로 표시 할 수 없습니다)

경고 :이 두 줄의 코드를 추가하고 싶을 수도 있습니다 t.setFramerateLimit(60);t.setVerticalSyncEnabled(true);. 따라서 코드를 실행할 때 CPU가 가열되지 않습니다. 골프 때문에 원래 코드에 넣지 않았습니다.


int main(){for(sf::RenderWindow t(sf::VideoMode(128,128),"");t.isOpen();){t.clear();sf::RectangleShape r({128.f,128.f});r.setFillColor(sf::Color::Red);t.draw(r);r.setFillColor(sf::Color::White);r.setPosition({24.f,52.f});r.setSize({80.f,24.f});t.draw(r);r.rotate(90);r.setPosition({76.f,24.f });t.draw(r);t.display();for(sf::Event e;t.pollEvent(e);)if(e.type == 0)t.close();}}
while을 for로 바꾸고

또한 공백을 제거하여 두 바이트를 절약 할 수 있습니다 : e.type == 0=> e.type==0, 아마도 !e.type(우선 순위를 기억하지 마십시오). 24.f }=>24.f}
Zacharý

아, using namespace sf;가능합니까?
Zacharý

12

Braindraw, 227 바이트 (비경쟁) (실제 작동하도록 업데이트 됨)

Ungolfed 버전 (241 바이트)

r<<^++++++++[-^++++v]^[->>[>]>++++++++[-<++++>]<[<]<]>>[[-vv[v]-[^]^]>]vv<[<]>>>>>>>>>>>>>>vvvvvvg<<^^++++++[->>[>]>+++++[-<++++>]<[<]<]>>[[-vv[v]b-g-[^]^]>]<vv[<]><<<<<<<vvvvvvv<<^^++++++[-vv[v]++++++++++++++[^]^]vv[[->>[>]b[+]-g[+]-[<]<]v]

가벼운 골프 버전 (227 바이트)

r<<^++++++++[-^++++v]^[->>[>]>++++++++[-<++++>]<[<]<]>>[[-vv[v]-[^]^]>]vv<[<]g>>>>>>>>>>>>vvvv++++++[->>[>]>+++++[-<++++>]<[<]<]>>[[-vv[v]b-g-[^]^]>]<vv[<]<<<<<<vvvvv<<++++++[-vv[v]++++++++++++++[^]^]vv[[->>[>]b[+]-g[+]-[<]<]v]

Braindraw는 저만의 디자인의 프로그래밍 언어입니다. 오늘 오후 3시 8 분 현재, 나는 통역사가 있으며 프로그램이 제대로 실행되고 있는지 확인했습니다. 그러나이 경쟁이 시작되기 전에 통역사가 없었으므로 경쟁하지 않습니다.

Braindraw는 1 차원 배열이 아닌 3 차원 배열에서 작동한다는 점을 제외하면 Brainf ***와 동일합니다. 이러한 배열을 r, g 및 b라고하며 빨강 녹색 및 파랑 색 채널의 역할을합니다. 연산자 r은 포인터를 적색 채널 등으로 이동시킵니다. 위는 ^, 아래는 v입니다.


9
이에 대한 통역사를 기대하고, 시도해 볼 수 있습니다
대런 H

1
정말 재미있는 아이디어입니다. 통역사도 기다리고 있습니다! (기술적으로 우리는 구현 된 언어 만 허용하며 인터프리터를 그 정의로 간주합니다.)
flawr

명시 적으로 아무것도 출력하지 않고 결국 "캔버스"전체를 출력하는 것이 맞습니까? 캔버스가 무한하다고 가정합니까?
flawr

다시 말하면, 통역사가 없다는 것은 내 입장이 경쟁이 아님을 의미한다고 생각합니다. 오 잘 그러나 그렇습니다.이 프로그램에는 자체 출력이 없으며 프로그램 실행 중 및 실행 후에 컴퓨팅 공간이 표시됩니다. 캔버스는 이론적으로 무한하지만, 실제로는 아마도 512x512와 같은 크고 작은 고정 너비로 ​​만들 것입니다
벤젠

이 언어는 복잡한 이미지 문제를 해결할 수있는 것 같습니다. 그리고 현재 통역사로 일하고 있습니까?
Zacharý

10

TI-BASIC (TI-84 Plus C (S) E 만 해당), 58 바이트

:For(A,0,31
:For(B,0,31
:Pxl-On(A,B,RED
:End
:End
:For(A,6,25
:For(B,13,18
:Pxl-Off(A,B
:Pxl-Off(B,A
:End
:End

이것은 멋진 답변입니다. 방금 그것을 공표 할 계정을 만들었습니다. TI-BASIC은 훌륭합니다
Zags

1
오, 이제 Pxl-On의 고급 세 번째 매개 변수는 ... 흑백으로 만 울었을뿐입니다. (
Ray

10

수학, 83 바이트

R=Rectangle;Graphics[{Red,{0,0}~R~{32,32},White,{6,13}~R~{26,19},{13,6}~R~{19,26}}]

다음은 @ASCII 전용입니다 (농담이라고 생각했지만 작동합니다!)

매스 매 티카, 23 바이트

"CH"~CountryData~"Flag"

@Jonathan Frech에서 -10 바이트


4
Mathematica에 스위스 국기가 내장되어 있지 않습니까?
CJ 데니스

4
CountryData["Switzerland","Flag"]그러나 비율이 맞지 않을 수도 있습니다
ASCII 전용

6
Mathematica에는 모든 것이 내장되어 있습니다.
sergiol

10
"Switzerland"~CountryData~"Flag"좀 더 절약
Simmons

1
"CH"~CountryData~"Flag"23 바이트 만 걸립니다.
Jonathan Frech 2012 년

9

HTML + CSS, 15 + 117 바이트 = 132 바이트

와 flexbox 래퍼 사용 inset box-shadow.

b{display:flex;box-shadow:red 0 0 0 6px inset;padding:2px;width:28px;flex-wrap:wrap}a{border:solid red 4px;margin:3px
<b><a><a><a><a>


HTML + CSS, 18 + 139 137 122 바이트 = 140 바이트

이전 답변 border과 negative가있는 중간 flexbox 래퍼 margin.

i,b,a{display:inline-flex}i{border:solid red 6px}b{margin:-4px;width:28px;flex-wrap:wrap}a{border:solid red 4px;margin:3px
<i><b><a><a><a><a>


7

GraphicsMagick (?), 96 바이트

gm convert -size 32x32 xc:red -fill #fff -draw "rectangle 13,6 18,25 rectangle 6,13 25,18" 1.bmp

GM로 골프를 치는 방법을 잘 모르겠습니다 (언어로 간주해야합니까?). 또한 바이트를 계산하는 방법을 잘 모르겠습니다 ...

GM이 설치된 상태에서 Windows cmd에 주어진 코드를 입력하면 name 이미지가 나타납니다 1.bmp. bash를 사용하는 경우 큰 따옴표를 작은 따옴표로 변경할 수 있습니다 (작동해야하지만 이것을 테스트하지는 않았습니다).

Digital Trauma에게 감사합니다. 하나의 -draw저장 8 바이트 만 사용


GraphicsMagick에서 동일한 지 확실하지 않지만 ImageMagick을 사용하면 두 개의 사각형을 모두 같은 -draw문자열 에 넣을 수 있습니다 .convert -size 32x32 xc:red -fill white -draw "rectangle 13,6 18,25 rectangle 6,13 25,18" i.png
Digital Trauma

@DigitalTrauma는 동일합니다. 편집했습니다.
tsh

7

자바 스크립트 + HTML, 99 + 13 = 112 바이트

사용자 덕분에 2 바이트 절약 2428118 Matheus Avellar
덕분에 2 바이트 절약

JSFiddle

with(c.getContext`2d`)fillStyle='red',fillRect(0,0,32,32),clearRect(6,13,20,6),clearRect(13,6,6,20)
<canvas id=c>


순수 JavaScript, 194129 바이트

JSFiddle

with(document.write`<canvas id=c>`,c.getContext`2d`)fillStyle='red',fillRect(0,0,32,32),clearRect(6,13,20,6),clearRect(13,6,6,20)


2
나는 당신이 처음부터 이것을해야한다고 생각합니다.
Stephen

@StepHen. 좋아, 나는 그것을 추가했다.

1
...
바이트

@ASCII 전용. 포함되어 있습니다.

1
나중에 참조 할 수 있도록 필요할 때마다 <canvas>HTML을 답변에 직접 포함시킬 수 있습니다. codegolf.stackexchange.com/a/136972/47097
darrylyeo

6

HTML4 (?)의 JavaScript (ES6) 178 176 바이트

document.write('<table cellspacing=0>'+[...Array(32)].map((_,y,p)=>p.map((_,x)=>`<td bgcolor=${x>5&&x<26&&y>12&&y<19||y>5&&y<26&&x>12&&x<19?'#fff':'red'}>`).join``).join`<tr>`)

예! 우리는 필요 <canvas>하지도 않고 <svg>심지어 <img>!

Justin Mariner 덕분에 2 바이트를 절약 할 수 있습니다.


5

Löve2D , 139 138 바이트

l=love g=l.graphics c=g.setColor r=g.rectangle f="fill"w=255 l.draw=loadstring"c(w,0,0)r(f,0,0,32,32)c(w,w,w)r(f,13,6,6,20)r(f,6,13,20,6)"

ThePirateBay 덕분에 1 바이트 절약

언 골프

function love.draw()
    love.graphics.setColor(255,0,0)
    love.graphics.rectangle("fill",0,0,32,32)
    love.graphics.setColor(255,255,255)
    love.graphics.rectangle("fill",13,6,6,20)
    love.graphics.rectangle("fill",6,13,20,6)
end

5

파이썬 3 , 190 바이트

출력물을 다른 이름으로 저장 image.xpm하고 선호하는 텍스트 편집기로 엽니 다.

r=range;print('! XPM2\n32 32 2 1\nr c #FF0000\nw c #FFFFFF\n');d=[bytearray(b'r'*32)for _ in r(32)]
for i in r(20):
 for j in r(6):d[i+6][j+13]=d[j+13][i+6]=119
print(b'\n'.join(d).decode())

온라인으로 사용해보십시오!

산출:

! XPM2
32 32 2 1
r c #FF0000
w c #FFFFFF

rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrwwwwwwwwwwwwwwwwwwwwrrrrrr
rrrrrrwwwwwwwwwwwwwwwwwwwwrrrrrr
rrrrrrwwwwwwwwwwwwwwwwwwwwrrrrrr
rrrrrrwwwwwwwwwwwwwwwwwwwwrrrrrr
rrrrrrwwwwwwwwwwwwwwwwwwwwrrrrrr
rrrrrrwwwwwwwwwwwwwwwwwwwwrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

리눅스에서 gimp로 열려면 빈 다섯 번째 줄을 제거해야했습니다.
Tim

5

펄 5 , 184 바이트

176 바이트 코드 + 8 -Mutf8 -p.

나는 이것이 필요하다는 것을 완전히 확신 하지 못한다. 이 메타 포스트에 따라 빈 입력이 제공되는 것에 의존한다 .TIO에서는 작동하지 않으므로 새로운 라인 (사용되지 않음)을 제공한다. 출력은 터미널에 있으며 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

비율은 하나의 문자 공간을 기준으로 두 개의 수직 '픽셀'이어야합니다.

%a=qw(R 101 W 107 A 101;97 B 91;107);$_=R.($a="32 
"x3).($b="13 W6 R13 
"x3)."6 A7▄W6 A7▄"."R6 
6 W20 "x2 ."R6 
6 B7▄W6 B7▄R6 
$b$a";s/\d+(.)/$1x$&/ge;s/\pL/[$a{$&}m/g

온라인으로 사용해보십시오!

TIO에서 복사 하여 여기에 붙여 넣어 출력을 미리 볼 수 있습니다 (요소 위에 마우스를 놓으면 제어 문자가 표시됨) .


5

GFA 기본 (Atari ST), 62 바이트

.LST 형식의 수동으로 편집 된 목록입니다. CR마지막 줄을 포함하여 모든 줄은로 끝납니다 .

DEFFILL2
PBOX0,0,31,31
DEFFILL0
PBOX13,6,18,25
PBOX6,13,25,18

확장 및 의견 :

DEFFILL 2         ! set fill color: default system color #2 is red (&H700)
PBOX 0,0,31,31    ! draw the red square
DEFFILL 0         ! set fill color: default system color #0 is white (&H777)
PBOX 13,6,18,25   ! draw a vertical white rectangle
PBOX 6,13,25,18   ! draw a horizontal white rectangle

산출

출력은 32x32입니다.

GFA 출력

NB : 에뮬레이터 (그리고 실제적으로도 밝기를 상당히 높이 지 않는 한)에 회색으로 표시되지만 실제로는 '흰색'색상을 사용합니다.


5

R, 171140 바이트

x = rep(c(6,13,19,26,19,13),e=2)
l=c(0,32)
par(bg="red",mar=0*1:4)
plot(0,0,'n',l,l,xaxs="i",yaxs="i")
polygon(x,c(x,x)[4:15],c="white",b=0)

(어떤) ungolfed :

x <- rep(c(6,13,19,26,19,13),each=2)
y <- c(x,x)[4:15] # index by 3 positions
par(bg="red",mar=c(0,0,0,0)) # prepare the plot space
plot(0,type='n', xaxs="i",yaxs="i",xlim=c(0,32),ylim=c(0,32))
polygon(x,y,col="white",border=0)

바이트를 저장해 준 @gregor에게 감사합니다

그것을 실행하십시오!


1
사이트에 오신 것을 환영합니다! :)
DJMcMayhem

좋은! 당신은 인수 이름의 부분 매칭 꽤 많은 바이트를 저장할 수 있습니다 e=2대신 each=2, t대신에 type, c대한 col, b대한 border. 그리고 0*1:4보다 짧습니다 c(0,0,0,0).
Gregor

사실 당신은에 위치 일치 멀리 얻을 수 있습니다 plot: plot(0,0,'n',l,l,xaxs="i",yaxs="i")(할당 m="i"실제로하는 당신에게 한 바이트 비용). 이 모든 것이 141 바이트로 줄어 듭니다.
Gregor

부분 일치에 대해 완전히 잊었습니다. 감사!
Alex Axthelm

자세한 커플 오프 바이트 lxlim/ ylim그냥 필요하지 않습니다 plot(0:32,0:32,...). 또한 귀하의 접근 방식을 조정하고 대신 117로 낮추었 습니다rectpolygon .
Gregor

5

옥타브, 105 바이트 73 바이트

참고 : 바이트 수에 포함되지 않은 명확성을 위해 추가 된 줄 바꿈

x(32,32,3)=0;
x(:,:,1)=1;
x(7:26,14:19,:)=1;
x(14:19,7:26,:)=1;
imshow(x*255)

편집 : 꽤 많은 바이트를 절약 한 flawr 덕분에 !

다음은 sanchises 덕분에 octave-online.net 에 대한 결과입니다

결과


Octave에 대해서는 잘 모르겠지만 MATLAB에서는 다음과 같이 작동합니다.x(32,32,3)=0; x(:,:,1)=1; x(7:26,14:19,:)=1; x(14:19,7:26,:)=1; imshow(x*255)
flawr

BTW : PPCG에 오신 것을 환영합니다 !!!
flawr

Octave-online.net은 사진을 보여줍니다.
Sanchises

5

GIF, 97 바이트

GIF87a    ð  ÿ  ÿÿÿ,         @„©Ëí£œ´Ú;ƒÞXmÞ!ŸŠcyŒj¨,àZê<Cô
:8nïtï‹é‚BJ1tì$1ËKSvb=_ÔªõŠe  ;

저렴하고 바이트가 많지만 그만한 가치가 있습니다.

편집 : 일부 문자가, 위의 코드에없는 여기에 있는 GIF의 16 진 덤프에 대한 페이스트 빈.

편집 : 온라인 도구를 사용하여 97 바이트로 압축했습니다.


1
인쇄 할 수없는 일부 문자가 코드 스 니펫에서 제거 된 것 같습니다. 16 진수 덤프를 게시 해보십시오.

18
언어를 어떻게 발음합니까?
올리버

1
@Oliver ZHAIF

1
Gimp는 95 바이트만으로 동일한 GIF 파일을 생성합니다 (다른 솔루션보다 적음). 여기 에 16 진 덤프가 있습니다.
Armin Rigo

6
GIF는 언제 프로그래밍 언어입니까?
Adám

4

HTML + JavaScript (ES6), 13 + 112 = 125 바이트

C=c.getContext`2d`
C[s='fillStyle']='red'
C[r='fillRect'](0,0,32,32)
C[s]='#fff'
C[r](6,13,20,6)
C[r](13,6,6,20)
<canvas id=c>

HTML + JavaScript (ES6), 13 + 114 = 127 바이트

with(c.getContext`2d`)fillStyle='red',fillRect(0,0,32,32),fillStyle='#fff',fillRect(6,13,20,6),fillRect(13,6,6,20)
<canvas id=c>


직사각형 접근 방식을 도난 당했고을 사용하여 117 바이트로 향상 시켰습니다 clearRect.

영리하지만 안타깝게도 OP는 투명 픽셀이 허용되지 않는다고 말합니다. codegolf.stackexchange.com/questions/136927/draw-the-swiss-flag/…
darrylyeo

실제로 흰색입니다. 기본적으로 모든 웹 페이지의 배경은 흰색이며 깃발 자체는 투명하지만 투명도의 내부 정의 일뿐 입니다. 투명도의 외부 정의는 해당 영역의 픽셀 (흰색 플러스)이 일부 조건에서 색상이 변경 될 수 있거나 무작위로 설정 될 수있는 경우입니다. 그러나 HTML과 JavaScript를 모두 사용하기 때문에 전체 출력은 흰색 십자가 가있는 적기입니다 . 캔버스와 배경을 별도로 고려할 수 없습니다. 캔버스가 배경에 표시되는 방법은 잘 정의되어 있으며 결과는 항상 스펙 정의에 따라 흰색 십자형을 포함합니다.

나는 그것이 좀 더 명확 해지기를 희망한다. 나는 당신이 동의하지 않을 수도 있음을 의미하지만, 정말로 그것에 대해 생각한다면 OP의 요구 사항과 완전히 일치하는 내 대답을 찾을 것이라고 확신한다.

@ThePirateBay Fair로 충분합니다.
darrylyeo 17

4

C # 265/266 209 바이트

 using System;using c=System.Console;class P{static void Main(){for(int i=0,j;i<32;i++){for(j=0;j<32;j++){if((6<i&&i<26&&j>13&&j<19)||(6<j&&j<26&&i>13&&i<19))c.BackgroundColor=ConsoleColor.White;else c.BackgroundColor=ConsoleColor.Red;c.Write(" ");}c.WriteLine();}}}     

배경색을 바꾸면서 콘솔에 "공백"문자를 썼습니다. 그러나 너무 크다고 생각하고 단일 문자를 8 x 16 픽셀로 계산하면 "j"근처의 값을 다음과 같이 두 배로 늘리면됩니다 (+ 1 바이트 및 + c.ReadKey();멈춤).

  using System;using c=System.Console;class P{static void Main(){for(int i=0,j;i<32;i++){for(j=0;j<64;j++){if((6<i&&i<26&&j>26&&j<38)||(12<j&&j<52&&i>13&&i<19))c.BackgroundColor=ConsoleColor.White;else c.BackgroundColor=ConsoleColor.Red;c.Write(" ");}c.WriteLine();} c.ReadKey(); }}     

TheLethalCoder 덕분에 56 바이트 절약

 namespace System{using static Console;class P{static void Main(){for(int i=0,j;i<32;i++,WriteLine())for(j=0;j<32;Write(""))BackgroundColor=(ConsoleColor)((6<i&i<26&j>13&j<19)|(j++<26&i>13&i<19&6<j​)?15:12);}}}

209 바이트namespace System{using static Console;class P{static void Main(){for(int i=0,j;i<32;i++,WriteLine())for(j=0;j<32;Write(" "))BackgroundColor=(ConsoleColor)((6<i&i<26&j>13&j<19)|(6<j&j++<26&i>13&i<19)?15:12);}}}
TheLethalCoder

4

Tikz, 145 143 바이트

\documentclass[tikz]{standalone}\begin{document}\tikz{\def~{)rectangle(}\fill[red](,~33,33);\fill[white](7,14~27,20)(14,7~20,27)}\end{document}

여기는 "ungolfed"입니다

\documentclass[tikz]{standalone}
\begin{document}
\tikz{
\def~{)rectangle(}
  \fill[red](,~33,33);
  \fill[white](7,14~27,20)(14,7~20,27)
}\end{document}

여기는 조금 더 풀린다

\documentclass[tikz]{standalone}
\begin{document}
\tikz{
  \fill[red](1,1)rectangle(33,33);
  \fill[white](7,14)rectangle(27,20)(14,7)rectangle(20,27)
}\end{document}

이것은 3 개의 직사각형을 더하기에 큰 빨간색 하나와 2 개의 더 작은 흰색 사각형으로 만듭니다.

그 모습은 다음과 같습니다. 실제로 다른 것과 다르지 않습니다.

깃발


몇 주 전에 documentclass github에 골프 를 쳤 습니다. 창 배경 요구 사항이없는 것 같습니다. 그것으로 \documentclass{g}\input tikz5B를 절약 할 수 있어야합니다. TikZ와 함께하더라도 일반 TeX에서 작업 함으로써 더 많은 비용을 절약 할 수 있습니다.
Chris H

4

R, 109 바이트

par(mar=0*1:4,bg=2,xaxs="i",yaxs="i")
frame()
rect(a<-c(6,13)/32,rev(a),b<-c(26,19)/32,rev(b),c="white",b=NA)

frame플롯을 미리 설정하지 않으려면 사용 하지만 기본 플로팅 영역은 [0,32] 대신 [0,1] 간격입니다. 또한 rect벡터화 된 사실을 사용합니다 . 플로팅 윈도우의 기본 크기는 7in x 7in입니다. 다음을 출력합니다.

플로팅 창에서 스위스 국기

R, 125 바이트

png()
par(mar=0*1:4,bg=2,xaxs="i",yaxs="i")
frame()
rect(a<-c(6,13)/32,rev(a),b<-c(26,19)/32,rev(b),c="white",b=NA)
dev.off()

기본값 png은 480x480 픽셀의 정사각형입니다. 출력은 다음 png 파일입니다.

스위스 국기


4

R, 112 바이트

par(bg=2,mar=0*1:4)
plot(0:32,0:32,'n',xaxs="i",yaxs="i")
rect(c(6,13),c(13,6),c(26,19),c(19,26),c="white",b=NA)

가로 세로 비율을 보장하려면 총 117 개의 바이트가 5 개 더 필요합니다.

par(bg=2,mar=0*1:4)
plot(0:32,0:32,'n',xaxs="i",yaxs="i",as=1)
rect(c(6,13),c(13,6),c(26,19),c(19,26),c="white",b=NA)

Alex Axthelm의 답변 에서 많은 영감을 얻었 으며 몇 바이트를 더 절약 한 Rift 덕분입니다.


3
당신은 4 바이트가 변경 구할 수 bg="red"bg=2기본 색상 표에서 동일하다
리프트

4

포스트 스크립트, 301 (286) 187 바이트

/m{moveto}def
/s{setrgbcolor}def
/r{rlineto}def
/c{closepath fill}def
1 0 0 s
0 0 m
0 320 r
320 0 r
0 -320 r
c
1 1 1 s
130 60 m
60 0 r
0 200 r
-60 0 r
c
60 130 m
0 60 r
200 0 r
0 -60 r c

99 바이트 축소 를 제안한 익명의 편집기 덕분에 !


알려 드리기 위해 : 누군가이 게시물에 골프 편집을 제출했습니다. Google 정책에 따라 거부되었지만 일부 변경 사항을 구현하는 것이 좋습니다.
Rɪᴋᴇʀ

3

빨강 , 79 바이트

암호:

view[base 32x32 red draw[fill-pen white pen off box 6x13 26x19 box 13x6 19x26]]

결과:

창문

설명:

view [              ; activate view engine
base 32x32 red      ; draw a 32 by 32 red box as base
 draw [             ; draw on top of the base
  fill-pen white    ; fill color is white
  pen off           ; turn off outline, alternatively could use white
  box 6x13 26x19    ; draw a horizontal rectangle, specified as 2 corners XxY
  box 13x6 19x26    ; draw vertical rectangle
]]

3

비트 맵, 160 바이트

다음은 24 비트 색상 정의를 사용하는 1 비트 색상 심도의 비트 맵입니다. 두 번째 줄의 마지막 6 바이트는 팔레트이고 그 다음은 픽셀 배열입니다. 4 바이트마다 전체 픽셀 행이 포함됩니다.

42 4D A0 00 00 00 00 00 00 00 20 00 00 00 0C 00
00 00 20 00 20 00 01 00 01 00 00 00 FF FF FF FF
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 07 E0 00 00 07 E0 00
00 07 E0 00 00 07 E0 00 00 07 E0 00 00 07 E0 00
00 07 E0 00 03 FF FF C0 03 FF FF C0 03 FF FF C0
03 FF FF C0 03 FF FF C0 03 FF FF C0 00 07 E0 00
00 07 E0 00 00 07 E0 00 00 07 E0 00 00 07 E0 00
00 07 E0 00 00 07 E0 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

후행 0을 자르려고했지만 이미지 뷰어에는 전체 캔버스에 대해 충분한 픽셀이 정의되어 있어야합니다.

Swiss.bmp


3
"임의의 파일을 영구적으로 저장할 수있는 제안은 무엇입니까?" -GitHub에서.

1
RLE 인코딩을 사용할 수 있습니까?
Neil

1
하하, 당신은 내 GIF 예를 1up'd했습니다.
Adrian Zhang

1
나는 이것이 유효한 프로그래밍 언어가 아니라고 생각합니다. IFAICT, BMP는 소수를 검사하거나 숫자를 추가 할 수 없습니다.
Adám

3
우리는 이 합의에 따라 프로그래밍 언어 이외의 제출을 ​​허용 하므로이 제출은 완벽합니다. (그리고 IMO에게는 좋은 벤치 마크입니다.)
flawr

3

파이썬 2, 92 91 89 바이트

r,w=' \0\0',' '*3
A,B=192*r,(13*r+6*w+13*r)*7
print"P6 "+"32 "*3+A+B+(6*r+20*w+6*r)*6+B+A

이진 ppm으로 출력, 사용법 :

python golf_swiss.py > swiss.ppm

색상 심도를 높이면 공간을 최대한 활용할 수있었습니다.


3

Tcl / Tk, 94

이 대화 형 쉘에서 실행되는 경우, 하나는 생략 할 수 있습니다 canvascangridgri

gri [can .c -bg red -w 32 -he 32]
lmap R {{8 15 28 21} {15 8 21 28}} {.c cr r $R -f #FFF -w 0}

Tcl / Tk, 98

대화식 쉘에서 실행되는 경우 다음과 같이 단축 canvas할 수 있습니다.can

grid [can .c -bg red -w 32 -he 32]
.c cr r 8 15 28 21 -f #FFF -w 0
.c cr r 15 8 21 28 -f #FFF -w 0

Tcl / Tk, 101

pack [canvas .c -bg red -w 32 -he 32]
.c cr r 8 15 28 21 -f #FFF -w 0
.c cr r 15 8 21 28 -f #FFF -w 0

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.