Gambar Bendera Swiss


46

Tugas: Keluarkan bendera Swiss.

Selamat Hari Nasional Swiss / Schweizer Bundesfeiertag / Fête nationale suisse / Festa nazionale svizzera / Fiasta naziunala svizra!

Detail: Bendera terdiri dari tanda #FFFFFFsilang putih ( ) pada #FF0000latar belakang merah ( ). Salib terdiri dari 6x6 persegi dengan lengan ukuran 6x7 terpaku di setiap sisi. Salib berada di tengah latar belakang persegi 32x32 yang memiliki jarak 6 unit untuk setiap sisi. ( Sumber )

Ukuran output dapat dipilih oleh peserta, tetapi gambar harus sama persis dengan proporsi ini, ini berarti ukurannya harus kelipatan 32.

Versi minimal akan terlihat seperti ini:


1
Di beberapa versi tantangan bendera, output ASCII berwarna diizinkan, tetapi Anda belum memasukkan ascii-art . Hanya untuk mengonfirmasi, output ASCII tidak diizinkan?
Stephen

1
Benar, hanya format gambar yang dikenal luas yang diperbolehkan serta output di layar.
flawr

20
echo 🇨🇭- Saya berasumsi ini tidak diizinkan
Digital Trauma

Saya melihat CH biru, saya tidak melihat mengapa ini harus diizinkan.
flawr

1
@ Talkleman, saya pikir itu benar
Luis Mendo

Jawaban:


40

SVG (HTML5), 94 83 82 64 byte

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

Disimpan 2 byte berkat @ThePirateBay. Disimpan 1 byte berkat @ATaco. Disimpan 18 byte berkat @CraigAyre menunjukkan bahwa gambar 32 × 32 dapat diterima. Seperti yang ditunjukkan oleh @Shaggy, ini mengasumsikan latar belakang default Anda putih; tambahkan 22 byte untuk flag yang berfungsi pada latar belakang apa pun:

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


Tidak perlu menutup jalan. Anda dapat menyimpan 4 byte dengan membiarkan path terbuka.

Seperti yang dikatakan ThePirateBay, hak >di tag jalur Anda adalah opsional.
ATaco

6
SVG memiliki "bahasa golf" sendiri? Oo
ETHproduk

16
Digunakan untuk menulis sintaks XML, kode ini membuat mata saya berdarah
Nayuki

3
Bisakah Anda menghapus viewBoxuntuk versi minimal? <svg><path d=M0,0V32H32V0M6,13h7V6h6v7h7v6H19v6H13V19H6 fill=red
Craig Ayre

31

x86-16 Kode Mesin untuk DOS, 43 byte

               ; 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

Kode di atas dirancang untuk dirakit sebagai file COM dan kemudian dijalankan di bawah DOS. Ini memanggil layanan video ROM BIOS untuk memplot piksel masing-masing bendera, membentuk representasi 32x32 dari bendera Swiss di sudut kiri atas layar.

Kode ini mengasumsikan bahwa mode video sudah diatur ke mode 0x13, yang juga berarti bahwa itu memerlukan tampilan VGA. Mode video lain dapat digunakan, tetapi membutuhkan VGA memberi Anda dua hal: (1) piksel persegi, dan (2) palet default yang mencakup 100% benar merah ( 0xFF0000) (artinya Anda tidak perlu membuang byte mengubah palet warna). Sebelum menjalankan program ini, Anda perlu mengalihkan tampilan ke mode 0x13; hanya kode yang perlu Anda lakukan:

mov  ax, 0x13
int  0x10

Kode tidak membuat asumsi lain, dan harus berjalan pada perangkat keras apa pun yang kompatibel dengan x86 di bawah sistem operasi yang kompatibel dengan DOS.

Namun, program berakhir segera setelah menggambar bendera, sehingga DOS prompt biasanya akan dicetak ulang di sudut kiri atas layar, menutupi beberapa baris atas bendera. Oleh karena itu, jika Anda ingin mengagumi output yang sebenarnya, Anda harus menggantung / menjeda sistem sebelum RETmenyala. Berikut screenshot dari tampilannya, berjalan di mesin virtual FreeDOS:

Dimungkinkan untuk menurunkan ini lebih jauh dengan menulis data piksel langsung ke buffer video, terutama karena saya sudah mengasumsikan mode 0x13. Saya belum mencobanya. INT 0x10sudah merupakan instruksi yang cukup singkat, tetapi jika saya dapat menggunakan instruksi satu byte string untuk menulis data pixel langsung ke memori, maka itu dapat menghasilkan penghematan kode yang signifikan.


Impresif! Saya tidak melihat banyak, tetapi ketika saya melakukannya selalu sangat menarik
Adrian Zhang

Senang melihat penggemar ASM.
Billal Begueradj

Anda bisa melakukannya dengan tiga ubin lebar 32 piksel yang berulang di semua baris. Ini menggunakan lebih banyak data, tetapi menyimpan dalam jumlah operasi. Atau, Anda dapat menggunakan tiga ubin 16 piksel lebar untuk sisi kiri dan melakukan operasi simetris dengan membalikkan sisi kiri.
ATL_DEV

21

MATL , 29 byte

2Y66t&Y"OJQht3$)6thYaQK7hBoYG

Cobalah di MATL Online!

Penjelasan

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 byte

Berkat @ Harun untuk -64 byte.
-4 byte dengan mengeluarkan file atanpa ekstensi.

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

Ekspresi lamba yang dapat ditugaskan ke metode antarmuka fungsional yang melempar pengecualian. Membuat file gambar bernama a(file gambar) di direktori yang menjalankan file ini.

Kode sekitar yang digunakan untuk menjalankannya: Coba online!

Tidak disatukan

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

Hasil

Kisi disediakan oleh pratinjau gambar IntelliJ IDEA (tampaknya).


Anda dapat mencukur beberapa byte dengan mengubah fillPolygonpanggilan Anda menjadi dua fillRectpanggilan. Saya tidak yakin saya menghormati dimensi tetapi saya datang dengan g.fillRect(7,13,18,6);g.fillRect(13,7,6,18)yang lebih pendek dengan 64 byte
Aaron

@ Harun Panggilan yang bagus, untuk beberapa alasan saya pikir itu akan lebih lama ... Terima kasih!
Justin Mariner

Anda bisa memberi nama file .pngalih-alih a.pngdan menyimpan satu byte.
user2428118

@ user2428118 Bagus, apakah akan diizinkan untuk mengambil lebih jauh dan beri nama saja a, tanpa ekstensi? Itu masih bisa dibuka, hanya perlu diberitahu untuk membuka di penampil foto.
Justin Mariner

1
@ OlivierGrégoire Saya merasa itu terlalu jauh dari ide solusi saya, tetapi Anda boleh memposting itu sebagai milik Anda
Justin Mariner

16

Excel VBA, 86 85 79 Bytes

Kode

Anonymous VBE fungsi segera jendela yang tidak mengambil input dan output bendera Swiss ke kisaran [A1:F32]dari ActiveSheetobjek. Ini bekerja dengan terlebih dahulu membuat sel-sel persegi, lalu menggambar daerah merah dan akhirnya menggambar di salib putih.

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

Perhatikan bahwa pengaturan yang menghapus langkah mewarnai "tanda silang" dari bendera Swiss setelah meletakkan latar belakang merah sebenarnya lebih panjang dari konfigurasi di atas, karena mereka memerlukan setidaknya 16 alamat sel, yang berkoordinasi dengan 8 wilayah berbeda dari bendera

-1 Byte terima kasih kepada @ Greedo untuk RowHeight=48lebihColumnWidth=2

-6 Bytes terima kasih kepada @ Greedo sebagai -1gantinyargbWhite

Keluaran

masukkan deskripsi gambar di sini


1
Fantastis; tetapi Anda masih dapat menyimpan 6 byte dengan Interior.Color=-1bukannyaInterior.Color=rgbWhite
Greedo

@ Greedo, ya, apa yang Anda tahu - itu fantastis. Saya telah menggunakan rgbWhitenilai desimal 16777215untuk kejelasan, saya tidak tahu bahwa -1akan memiliki efek yang sama. Terima kasih!
Taylor Scott

1
sesuai dengan tautan ini: ( reddit.com/r/compsci/comments/62x9g9/… ) PowerPoint sudah selesai, jadi saya ingin tahu bagaimana ini bisa dipindahkan ke PowerPoint
Suhrid Mulay

13

C ++, SFML, 406 399 394 byte

-2 bytes berkat pdpi
-10 bytes berkat Zacharý

SFML (Perpustakaan Multimedia Sederhana dan Cepat) adalah perpustakaan C ++ yang ditulis untuk memudahkan pengembangan game video dan program multimedia

Kode :

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

Bendera ditampilkan di jendela 128x128. OS Anda harus dapat menampilkan jendela 128x128 (Win8.1 saya tidak dapat ditampilkan dengan lebar lebih kecil)

PERINGATAN : Anda mungkin ingin menambahkan 2 baris kode ini:, t.setFramerateLimit(60);t.setVerticalSyncEnabled(true);sehingga CPU Anda tidak akan panas saat Anda menjalankan kode. Saya tidak memasukkannya ke dalam kode asli karena alasan bermain golf.


Anda dapat mengecilkan ini sedikit dengan mengganti foriles Anda dengan fors, dan menginisialisasi t dan e di sana: 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

Selain itu, Anda dapat menyimpan dua byte dengan menghapus spasi: e.type == 0=> e.type==0, bahkan mungkin !e.type(tidak ingat prioritasnya). 24.f }=>24.f}
Zacharý

Oh, dan apakah using namespace sf;mungkin?
Zacharý

12

Braindraw, 227 byte (Tidak bersaing) (Diperbarui untuk benar-benar berfungsi)

Versi tidak digabungkan (241 byte)

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

Versi golf ringan (227 byte)

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

Braindraw adalah bahasa pemrograman desain saya sendiri. Pada pukul 3:08 malam hari ini, saya memiliki juru bahasa yang berfungsi dan telah memeriksa bahwa program berjalan dengan benar. Namun, juru bahasa tidak ada sebelum kompetisi ini dimulai, jadi saya tidak bersaing.

Braindraw sama dengan Brainf ***, kecuali ia beroperasi pada tiga array dua dimensi, bukan satu array satu dimensi. Array ini disebut r, g, dan b, dan bertindak sebagai saluran warna merah hijau dan biru. Operator r memindahkan pointer ke saluran merah, dll. Naik adalah ^, turun adalah v.


9
Menantikan bertemu penerjemah untuk ini, bisa menyenangkan untuk dicoba
Darren H

1
Ini tentu ide yang menyenangkan, saya juga menantikan juru bahasa! (Secara teknis kami hanya mengizinkan bahasa yang telah diterapkan, dan kami menganggap penerjemah sebagai definisi mereka.)
flawr

Apakah benar bahwa Anda tidak secara eksplisit menampilkan apa pun, tetapi hanya menampilkan seluruh "kanvas" pada akhirnya? Apakah Anda menganggap kanvas itu tidak terbatas?
flawr

Dalam re: no interpreter, saya kira itu berarti entri saya tidak bersaing. Baiklah. Tapi ya, program ini tidak memiliki output per se, ruang komputasi ditampilkan saat dan setelah program dijalankan. Kanvas ini secara teoritis tidak terbatas, tetapi dalam implementasinya, saya mungkin akan membuatnya menjadi lebar tetap berukuran besar seperti mungkin 512x512
benzene

Bahasa ini tampaknya mampu menantang tantangan gambar kolmogorov. Dan apakah Anda saat ini mengerjakan penerjemah?
Zacharý

10

TI-BASIC (TI-84 Plus C (S) E saja), 58 byte

: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

Ini jawaban yang luar biasa. Saya baru saja membuat akun untuk meningkatkannya. TI-BASIC hebat
Zags

1
Oh betapa deluxe parameter ketiga Pxl-On sekarang ... itu membuat saya menangis hanya memiliki monokrom :(
Ray

10

Mathematica, 83 byte

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

berikutnya hanya dari @ ASCII-saja (saya pikir itu hanya lelucon tapi berhasil!)

Mathematica, 23 byte

"CH"~CountryData~"Flag"

-10 byte dari @Jonathan Frech


4
Mathematica tidak memiliki bawaan untuk bendera Swiss?
CJ Dennis

4
CountryData["Switzerland","Flag"]tetapi mungkin tidak memiliki proporsi yang tepat
hanya ASCII

6
Mathematica memiliki bawaan untuk semuanya, tapi ini?
sergiol

10
"Switzerland"~CountryData~"Flag"menghemat lebih banyak lagi
A Simmons

1
"CH"~CountryData~"Flag"hanya membutuhkan 23 byte.
Jonathan Frech

9

HTML + CSS, 15 + 117 byte = 132 byte

Menggunakan pembungkus flexbox dengan 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 byte = 140 byte

Jawaban sebelumnya menggunakan borderdan pembungkus flexbox perantara dengan negatif 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 byte

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

Tidak yakin bagaimana bermain golf dengan GM (haruskah ini dianggap sebagai bahasa?). Juga tidak yakin bagaimana cara menghitung byte di sini ...

Dengan menginstal GM, ketik kode yang diberikan di windows cmd, Anda akan mendapatkan gambar dengan nama 1.bmp. Anda mungkin ingin mengubah penawaran ganda menjadi penawaran tunggal jika Anda menggunakan bash (seharusnya berfungsi, tetapi saya belum menguji ini).

Berkat Digital Trauma. gunakan hanya satu -drawsimpan 8 byte


Tidak yakin apakah itu sama di GraphicsMagick, tetapi dengan ImageMagick Anda dapat menempatkan kedua persegi panjang dalam -drawstring yang sama :convert -size 32x32 xc:red -fill white -draw "rectangle 13,6 18,25 rectangle 6,13 25,18" i.png
Digital Trauma

@DigitalTrauma itu sama. diedit.
tsh

7

JavaScript + HTML, 99 + 13 = 112 byte

Disimpan 2 byte berkat pengguna2428118
Disimpan 2 byte berkat Matheus Avellar

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 Murni, 194 129 byte

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
Saya yakin Anda harus melakukan ini dari awal.
Stephen

@LangkahHen. Ok, saya menambahkannya juga.

1
... Anda harus memasukkannya dalam bytecount
ASCII-only

@ Khusus ASCII. Termasuk.

1
Untuk referensi di masa mendatang, kapan pun Anda membutuhkannya, <canvas>Anda dapat memasukkan HTML secara langsung dalam jawaban Anda. Lihat codegolf.stackexchange.com/a/136972/47097
darrylyeo

6

JavaScript (ES6) dalam HTML4 (?), 178 176 byte

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

Iya! Kita tidak perlu <canvas>atau <svg>bahkan <img>!

Berkat Justin Mariner, hemat 2 byte.


5

Löve2D , 139 138 Bytes

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

Disimpan satu byte berkat ThePirateBay

Tidak disatukan

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 byte

Simpan keluaran sebagai image.xpmdan buka dengan editor teks favorit Anda.

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

Cobalah online!

Keluaran:

! 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

Saya harus menghapus baris ke-5 yang kosong untuk membukanya dengan gimp di linux.
Tim

5

Perl 5 , 184 byte

Kode 176 byte + 8 untuk -Mutf8 -p.

Saya tidak sepenuhnya yakin ini seperti yang disyaratkan, ini bergantung pada input kosong yang disediakan sesuai meta post ini , yang tidak berfungsi pada TIO sehingga ia memasok baris baru (yang tidak digunakan). Output ke terminal dan terlihat seperti ini:

enter image description here

Proporsi harus berdasarkan skala pada satu ruang karakter menjadi dua 'piksel' vertikal.

%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

Cobalah online!

Anda dapat melihat pratinjau output dengan menyalin dari TIO dan menempel di sini (ini menunjukkan karakter kontrol ketika melayang di atas elemen) .


5

GFA BASIC (Atari ST), 62 byte

Daftar yang diedit secara manual dalam format .LST. Semua baris diakhiri dengan CR, termasuk yang terakhir.

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

Diperluas dan dikomentari:

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

Keluaran

Outputnya adalah 32x32.

GFA output

NB: Ini memang menggunakan warna 'putih', meskipun terlihat abu-abu pada emulator (dan pada hal yang sebenarnya juga, kecuali jika Anda mengubah kecerahannya cukup tinggi).


5

R, 171 140 byte.

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)

(agak) tidak berbulu:

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)

Terima kasih kepada @gregor karena telah menghemat beberapa byte

Menjalankannya!


1
Selamat datang di situs ini! :)
DJMcMayhem

Bagus! Anda dapat menyimpan beberapa byte dengan pencocokan sebagian nama argumen: e=2alih- alih each=2, talih-alih type, cuntuk col, buntuk border. Dan 0*1:4lebih pendek dari c(0,0,0,0).
Gregor

Sebenarnya Anda dapat lolos dengan pencocokan posisi pada plot: plot(0,0,'n',l,l,xaxs="i",yaxs="i")(menetapkan m="i"sebenarnya biaya satu byte). Dengan semua itu turun menjadi 141 byte.
Gregor

Saya lupa sepenuhnya tentang pencocokan sebagian. Terima kasih!
Alex Axthelm

Pasangan bytes lebih banyak: ldan xlim/ ylimtidak diperlukan, cukup plot(0:32,0:32,...). Saya juga mengadaptasi pendekatan Anda dan membawanya ke 117 di sini, menggunakan rectbukanpolygon .
Gregor

5

Oktaf, 105 byte, 73 byte

Catatan: umpan baris ditambahkan untuk kejelasan, tidak termasuk dalam jumlah byte

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

Sunting : terima kasih kepada flawr karena telah menghemat banyak byte!

Ini hasilnya di octave-online.net, terima kasih kepada sanchis

Results


Saya tidak yakin tentang Oktaf, tetapi dalam MATLAB berikut ini harus bekerja: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: Selamat datang di PPCG !!!
flawr

Octave-online.net menampilkan gambar.
Sanchises

5

GIF, 97 Bytes

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

Murah dan byte-berat, tetapi sepadan.

Sunting: Beberapa karakter tidak ada dalam kode di atas, ini adalah pastebin untuk hexdump GIF.

EDIT: dikompresi hingga 97 byte dengan alat online.


1
Tampaknya beberapa karakter yang tidak patut dihapus dari cuplikan kode Anda. Mungkin mencoba memposting hex dump.

18
Bagaimana Anda mengucapkan bahasa itu?
Oliver

1
@Oliver ZHAIF
Neil

1
Gimp menghasilkan file GIF yang terlihat identik hanya dalam 95 byte (kurang dari banyak solusi lain). Berikut ini hex dump-nya.
Armin Rigo

6
Sejak kapan GIF menjadi bahasa pemrograman?
Adám

4

HTML + JavaScript (ES6), 13 + 112 = 125 byte

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 byte

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>


Saya telah mencuri pendekatan persegi panjang Anda dan memperbaikinya menjadi 117 byte menggunakan clearRect, saya harap Anda setuju dengan itu?

Itu pintar, tapi sayangnya OP mengatakan piksel transparan tidak diizinkan. codegolf.stackexchange.com/questions/136927/draw-the-swiss-flag/…
darrylyeo

Sebenarnya, itu adalah putih. Secara default, semua halaman web memiliki latar belakang putih dan bendera itu sendiri transparan, tetapi itu hanyalah definisi internal transparansi. Definisi transparansi eksternal adalah jika piksel di wilayah tersebut (putih plus) dapat berubah warna dalam beberapa kondisi (atau dapat diatur secara acak). Namun, karena saya menggunakan HTML dan JavaScript, seluruh output adalah bendera merah dengan salib putih . Anda tidak dapat mempertimbangkan kanvas dan latar belakang secara terpisah. Bagaimana kanvas ditampilkan di latar belakang didefinisikan dengan baik dan hasilnya selalu berisi salib putih dengan definisi spesifikasi.

Saya harap ini sedikit lebih jelas sekarang, maksud saya Anda mungkin tidak setuju, tetapi jika Anda benar-benar memikirkannya, saya yakin Anda akan menemukan jawaban saya sepenuhnya konsisten dengan persyaratan OP.

@ThePirateBay Cukup adil.
darrylyeo

4

C # 265/266 209 byte

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

Saya menulis karakter "spasi" ke konsol sambil mengubah Warna Latar Belakang. Tetapi jika Anda menganggapnya terlalu tinggi dan Anda menghitung satu karakter sebagai 8 x 16 piksel, Anda cukup menggandakan nilai di dekat "j" seperti ini (+ 1 byte dan + c.ReadKey();jadi berhenti):

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

56 byte disimpan berkat TheLethalCoder

 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 bytenamespace 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 byte

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

Ini dia "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}

Ini dia ungolfed sedikit lagi

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

Ini membuat 3 persegi panjang menjadi merah besar dan dua putih kecil untuk plus.

Begini tampilannya. Itu tidak benar-benar terlihat berbeda dari yang lain.

flag


Saya bermain golf documentclass di github beberapa minggu yang lalu. dan sepertinya tidak ada persyaratan latar belakang jendela. Dengan itu \documentclass{g}\input tikzharus bekerja untuk menghemat 5B. Anda mungkin dapat menghemat lebih banyak dengan bekerja di TeX biasa , bahkan dengan TikZ
Chris H

4

R, 109 byte

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)

Penggunaan frameuntuk menghindari pengaturan plot, tetapi wilayah plot standar adalah pada interval [0,1], bukan [0,32]. Juga menggunakan fakta yang rectvektor. Ukuran standar jendela plot adalah 7in x 7in. Ini output sebagai berikut:

Swiss flag in plotting window

R, 125 byte

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

Default untuk pngadalah kuadrat 480x480 piksel. Output adalah file png berikut:

Swiss flag


4

R, 112 byte

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)

Padahal, untuk menjamin rasio aspek, kami membutuhkan 5 byte lebih untuk total 117:

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)

Dengan banyak inspirasi dari jawaban Alex Axthelm , dan terima kasih kepada Rift karena telah menghemat beberapa byte lagi.


3
Anda dapat menyimpan 4 byte yang diubah bg="red"ke bg=2yang sama di palet default
Rift

4

Postscript, 301 286 187 byte

/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

Terima kasih kepada editor anonim yang menyarankan pengurangan 99 byte!


Hanya untuk memberi tahu Anda: seseorang mengirimkan suntingan golf ke pos ini. Sesuai kebijakan kami, itu ditolak, tetapi Anda mungkin ingin mempertimbangkan untuk menerapkan beberapa perubahan.
Rɪᴋᴇʀ

3

Merah , 79 Bytes

Kode:

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

Hasil:

window

Penjelasan:

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

Bitmap, 160 byte

Berikut adalah bitmap dengan kedalaman warna 1-bit, menggunakan definisi warna 24-bit. Enam byte terakhir dari baris kedua adalah palet dan berikut ini adalah array piksel. Setiap empat byte berisi seluruh baris piksel.

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

Saya mencoba untuk memotong nol trailing, tetapi pemirsa gambar membutuhkan cukup piksel yang ditetapkan untuk seluruh kanvas.

Swiss.bmp


3
"Ada saran di mana saya dapat menyimpan file sewenang-wenang secara permanen?" - di GitHub.

1
Bisakah Anda menggunakan pengkodean RLE?
Neil

1
Haha, Anda sudah mendapatkan contoh GIF saya.
Adrian Zhang

1
Saya pikir ini bukan bahasa pemrograman yang valid. IFAICT, BMP tidak dapat memeriksa harga, atau menambahkan nomor.
Adám

3
Harap semua orang perhatikan bahwa kami mengizinkan pengiriman non-pemrograman-bahasa sesuai konsensus ini , jadi pengiriman ini baik-baik saja. (Dan IMO tolok ukur yang bagus untuk dimiliki.)
flawr

3

Python 2, 92 91 89 byte

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

Output sebagai ppm biner, penggunaan:

python golf_swiss.py > swiss.ppm

Meningkatkan kedalaman warna memungkinkan saya menggunakan ruang untuk nilai maksimum


3

Tcl / Tk, 94

Jika berjalan pada shell interaktif, seseorang dapat menyingkat canvasdari candan gridkegri

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

Jika berjalan pada shell interaktif, seseorang dapat menyingkat canvaskecan

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

enter image description here

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.