スイス国旗を描く


46

タスク:スイス国旗を出力します。

ハッピースイス建国記念日/シュヴァイツァー連邦議会/Fêtenationale suisse / Festa nazionale svizzera / Fiasta naziunala svizra!

詳細: フラグは#FFFFFF、赤(#FF0000)の背景に白()の十字で構成されています。十字架は6x6の正方形で構成され、各辺にサイズ6x7の腕が接着されています。十字は、各辺に6単位の距離を持つ32x32の正方形の背景の中央にあります。(ソース

出力サイズは参加者が選択できますが、画像はこれらの比率に正確に一致する必要があります。つまり、サイズは32の倍数でなければなりません。

最小バージョンは次のようになります。


1
フラグチャレンジの一部のバージョンでは、色付きのASCII出力が許可されていましたが、ascii-artは含まれていません。確認のため、ASCII出力は許可されていませんか?
スティーブン

1
右、広く知られている画像形式のみが許可され、画面に出力されます。
-flawr

20
echo 🇨🇭-私はこれが許可されていないことを前提としています
デジタル外傷

青い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が32×32の画像が受け入れ可能であることを指摘したおかげで、18バイト節約されました。@Shaggyが指摘したように、これはデフォルトの背景が白であることを前提としています。任意の背景で動作するフラグに22バイトを追加します。

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


パスを閉じる必要はありません。パスを開いたままにしておくと、4バイト節約できます。

ThePirateBayが言ったように、パスタグの権利>はオプションです。
アタコ

6
SVGには独自の「ゴルフ言語」がありますか?Oo
ETHproductions

16
XML構文を書くことに使用されて、このコードは、私の目は出血作る
Nayuki

3
viewBox最小バージョン用に削除できますか?<svg><path d=M0,0V32H32V0M6,13h7V6h6v7h7v6H19v6H13V19H6 fill=red
クレイグ・アイレ

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ビデオサービスを呼び出して、フラグの個々のピクセルをプロットし、画面の左上隅にスイス国旗の32×32表現を形成します。

このコードでは、ビデオモードが既にモード0x13に設定されていると想定しています。これは、VGAディスプレイが必要であることも意味します。他のビデオモードを使用することもできますが、VGAを使用すると、2つのことができます。(1)正方形ピクセル、および(2)真の100%赤を含むデフォルトパレット(0xFF0000)(パレットを変更するバイトを無駄にする必要がないことを意味します)色)。したがって、このプログラムを実行する前に、ディスプレイをモード0x13に切り替える必要があります。次のコードが必要です。

mov  ax, 0x13
int  0x10

コードは他の仮定を行わず、DOS互換オペレーティングシステムの下でx86互換ハードウェア上で実行する必要があります。

ただし、プログラムはフラグを描画するとすぐに終了するため、DOSプロンプトは通常、画面の左上隅に再印刷され、フラグの先頭の数行が覆われます。したがって、真の出力に驚いたい場合は、警告する前にシステムをハング/一時停止する必要がありますRET。以下は、FreeDOS仮想マシンで実行されている画面のスクリーンショットです。

特にモード0x13を既に想定しているため、ピクセルデータをビデオバッファーに直接書き込むことで、さらにこれをゴルフすることが可能かもしれません。まだ試していません。INT 0x10すでにかなり短い命令です、1バイトの文字列命令を使用してピクセルデータをメモリに直接書き込むことができる場合、コードを大幅に節約できます。


印象的!私はasmをあまり見ませんが、それをするときはいつも非常に興味深いです
エイドリアンチャン

ASMのファンに会えてうれしいです。
ビラルBegueradj

3行の32ピクセル幅のタイルをすべての行で繰り返すことでできます。より多くのデータを使用しますが、操作の数を節約します。または、左側に3つの16ピクセル幅のタイルを使用し、左側を逆にして対称操作を実行することもできます。
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

Java 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呼び出しを2つのfillRect呼び出しに変更することで、かなりのバイトを削ることができます。寸法を尊重したかどうかはわかりませんがg.fillRect(7,13,18,6);g.fillRect(13,7,6,18)、64バイト短くなったものを思い付きました。
アーロン

@Aaronおはようございます、どういうわけか私はもっと長くなると思っていました...ありがとう!
ジャスティンマリナー

.png代わりにファイルに名前を付けてa.png、バイトを保存できます。
user2428118

@ user2428118ニース、さらにa拡張して、拡張子なしで名前を付けることは許可されますか?開くことはできますが、写真ビューアーで開くように指示するだけです。
ジャスティンマリナー

1
@OlivierGrégoire私はそれが私の解決策の考えからは遠すぎると感じていますが、それをあなた自身のものとして投稿することを歓迎します
ジャスティンマリナー

16

Excel VBA、86 85 79バイト

コード

入力を行わず[A1:F32]ActiveSheetオブジェクトの範囲にスイス国旗を出力する匿名VBEイミディエイトウィンドウ関数。これは、最初にセルを正方形にし、次に赤い領域を描画し、最後に白い十字を描画することで機能します。

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

赤い背景を入れた後、スイス国旗の「十字」を着色するステップを削除する配置は、実際には上記の構成よりも長いことに注意してください。国旗

-1バイトRowHeight=48以上の@GreedoのおかげColumnWidth=2

-1代わりに@Greedoのおかげで-6バイトrgbWhite

出力

ここに画像の説明を入力してください


1
素晴らしい; しかし、あなたはまだで6つのバイトを保存することができますInterior.Color=-1代わりにInterior.Color=rgbWhite
Greedo

@Greedo、ハァッ、あなたは何を知っていますか-それは素晴らしいです。わかりやすくするためにrgbWhite10進数の値を使用していましたが、同じ効果があるとは16777215考えていませんでした-1。ありがとう!
テイラースコット

1
このリンクに従った:(reddit.com/r/compsci/comments/62x9g9/...私はこれがパワーポイントに移植することができる方法だろので)PowerPointがチューリング完全さ
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はこれより狭い幅では表示できません)

警告:これらの2行のコードを追加することもできt.setFramerateLimit(60);t.setVerticalSyncEnabled(true);ます。コードを実行するときにCPUが発熱しないようにします。私はゴルフの理由でそれらを元のコードに入れませんでした。


whileをforsに置き換え、そこでtとeを初期化することで、これを少し縮小できます 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();}}
。– pdpi

また、スペースを削除することで2バイトを節約できます:e.type == 0=> e.type==0、多分!e.type(優先順位を覚えていない)。24.f }=>24.f}
ザカリー

ああ、using namespace sf;可能ですか?
ザカリー

12

Braindraw、227バイト(非競合)(実際に機能するように更新)

ゴルフされていないバージョン(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時08分現在、私は通訳者が働いており、プログラムが適切に動作することを確認しました。しかし、この競技が始まる前に通訳はいなかったので、私は競争していません。

BraindrawはBrainf ***と同じですが、1つの1次元配列ではなく3つの2次元配列で動作します。これらの配列はr、g、bと呼ばれ、赤、緑、青のカラーチャネルとして機能します。演算子rは、ポインターを赤チャネルなどに移動します。上は^、下はvです。


9
このための通訳を見るのを楽しみにして、試してみるのは楽しいかもしれません
ダレンH

1
確かに楽しいアイデアです。通訳も楽しみです!(技術的には、実装された言語のみを許可し、インタープリターをその定義と見なします。)
flawr

明示的には何も出力せず、最後に「キャンバス」全体を出力するのは正しいですか?キャンバスは無限だと思いますか?
-flawr

再:通訳なしで、それは私のエントリが競合していないことを意味すると思います。しかたがない。しかし、はい、このプログラム自体には出力がありません。プログラムの実行中および実行後に計算スペースが表示されます。キャンバスは理論的には無限ですが、実装では、おそらく512x512-
ベンゼンの

この言語は、コルモゴロフの複雑さの画像チャレンジに対応しているようです。現在、通訳の仕事をしていますか?
ザカリー

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は素晴らしい
ザグズ

1
ああ、Pxl-Onのデラックスな3番目のパラメーターが...モノクロだからしか泣けない:(
レイ

10

Mathematica、83バイト

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

次は@ASCIIのみです(冗談だと思っていましたが、動作します!)

Mathematica、23バイト

"CH"~CountryData~"Flag"

@Jonathan Frechから-10バイト


4
Mathematicaにはスイス国旗の組み込み機能がありませんか?
CJデニス

4
CountryData["Switzerland","Flag"]それは右の割合を持っていない可能性があります
ASCIIのみの

6
Mathematicaにはすべての機能が組み込まれていますが、これは?
sergiol

10
"Switzerland"~CountryData~"Flag"あなたをさらに救う
シモンズ

1
"CH"~CountryData~"Flag"必要なのは23バイトのみです。
ジョナサンフレッチ

9

HTML + CSS、15 + 117バイト= 132バイト

フレックスボックスラッパーと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と否定的な中間フレックスボックスラッパー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に指定されたコードを入力すると、名前が付いた画像が表示されます1.bmp。bashを使用している場合は、二重引用符を単一引用符に変更することができます(動作するはずですが、テストしていません)。

Digital Traumaに感謝します。-drawセーブ8バイトを1つだけ使用する


わからないそのGraphicsMagickのでは同じですが、ImageMagickのと同じで、両方の長方形を置くことができるならば-draw、文字列:convert -size 32x32 xc:red -fill white -draw "rectangle 13,6 18,25 rectangle 6,13 25,18" i.png
デジタルトラウマ

@DigitalTraumaそれは同じです。編集しました。
tsh

7

JavaScript + HTML、99 + 13 = 112バイト

user2428118のおかげで2バイトを節約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、194 129バイト

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。OK、私も追加しました。

1
...あなたは:バイトに含める必要がある
ASCIIのみの

@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öve2D139 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

Python 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

Linuxでgimpを使用して開くには、空の5行目を削除する必要がありました。
ティム

5

Perl 5、184バイト

176バイトのコード+の8 -Mutf8 -p

これが必要であるかどうかは完全にはわかりませんが、このメタ投稿に従って空の入力が提供されることに依存しています。出力は端末に対するもので、次のようになります。

ここに画像の説明を入力してください

比率は、1つの文字スペースが2つの垂直「ピクセル」であることに基づいてスケーリングする必要があります。

%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 BASIC(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、171 140バイト。

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)

(やや)改変されていない:

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=2t代わりのtypecのためにcolbのためにborder。そして0*1:4、よりも短いですc(0,0,0,0)
グレゴール

実際には、あなたは上の位置マッチングで逃げることができますplotplot(0,0,'n',l,l,xaxs="i",yaxs="i")(割り当てるm="i"あなたに1つのバイトがかかり、実際に)。そのすべてで、それは141バイトになります。
グレゴール

部分一致について完全に忘れていました。ありがとう!
アレックスアクステル

:より多くのカップルは、バイトoff lおよびxlim/ ylimだけで、必要とされていませんplot(0:32,0:32,...)。私はまた、あなたのアプローチを適応し、117にそれを降り使用して、ここではrect代わりにpolygon
グレゴール

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についてはx(32,32,3)=0; x(:,:,1)=1; x(7:26,14:19,:)=1; x(14:19,7:26,:)=1; imshow(x*255)
わかり

ところで:PPCGへようこそ!!!
-flawr

Octave-online.netは写真を表示します。
-Sanchises

5

GIF、97バイト

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

安価でバイトが重いが、それだけの価値がある。

EDIT:一部の文字は、上記のコードではありませんここにある GIFのhexdumpに対して用ペーストビン。

編集:オンラインツールで97バイトに圧縮。


1
コードスニペットから一部の印刷できない文字が削除されたようです。16進ダンプを投稿してみてください。

18
言語はどのように発音しますか?
オリバー

1
@オリバーZHAIF-
ニール

1
Gimpは、95バイト(他の多くのソリューションよりも少ない)で同一に見えるGIFファイルを生成します。 これは16進ダンプです。
アーミン・リゴ

6
いつからGIFはプログラミング言語ですか?
アダム

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

実際には、ある白。デフォルトでは、すべてのWebページの背景は白で、フラグ自体は透明ですが、これは単に透明の内部定義です。透明度の外部定義は、その領域のピクセル(白プラス)が特定の条件で色を変更する(またはランダムに設定される)場合です。ただし、HTMLとJavaScriptの両方を使用しているため、出力全体は白い十字の付いた赤い旗です。キャンバスと背景を別々に考慮することはできません。キャンバスが背景にどのように表示されるかは明確に定義されており、結果には常に仕様定義による白い十字が含まれています。

少し明確になったことを願っていますが、反対するかもしれませんが、本当に考えてみれば、OPの要件と完全に一致する答えが見つかるはずです。

@ThePirateBayまあまあ。
-darrylyeo

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"の近くの値を単純に2倍にします(+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}

ここは「無防備」です

\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を節約できるはずです。あなたは、おそらくすることで、より節約することができ、プレーンのTeXで働くさえは、TikZと、
クリス・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ビットカラー深度のビットマップを次に示します。2行目の最後の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

末尾のゼロを切り詰めようとしましたが、画像ビューアーでは、キャンバス全体に十分なピクセルを定義する必要があります。

Swiss.bmp


3
「任意のファイルを永久に保存できる提案はありますか?」-GitHubで。

1
RLEエンコーディングを使用できますか?
ニール

1
ハハ、あなたは私のGIFの例をアップしました。
エイドリアンチャン

1
これは有効なプログラミング言語ではないと思います。IFAICT、BMPは素数のチェックも数値の追加もできません。
アダム

3
全員がこのコンセンサスに従って非プログラミング言語の提出を許可していることに注意してください。したがって、この提出はまったく問題ありません。(そしてIMOは素晴らしいベンチマークです。)
flawr

3

Python 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

それは対話型シェルで実行されている場合、1を短縮することができますcanvascanしてgridまでgri

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

それは対話型シェルで実行されている場合、1を短縮することができますcanvascan

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.