Ketika saya menemukan pertanyaan ini, saya ingat bahwa saya juga pernah melihat aturan yang tepat untuk pembuatan bendera Korea Selatan. Dan ini konstruksi yang sangat berbeda.
Jadi, Anda harus menggambar konstruksi yang tepat sekarang!
Spesifikasi
Anda dapat membuat bendera ke file atau layar menggunakan vektor atau grafik raster. Jika output Anda dirasterisasi, gambar Anda harus memiliki dimensi 450x300 piksel atau lebih.
Semua rasio panjang dan posisi harus persis seperti yang ditunjukkan pada diagram berikut:
Perhatikan bahwa pusat dari dua lingkaran kecil sejajar dengan diagonal.
Untuk warna, Anda harus menggunakan palet berikut:
- Putih: #FFFFFF
- Hitam: # 000000
- Merah: # C60C30
- Biru: # 003478
Batas hitam tidak boleh ditarik kecuali sistem gambar Anda tidak membiarkan Anda menentukan kanvas 3: 2 karena alasan teknis (jika tidak, Anda harus menggunakan kanvas 3: 2 dan bendera harus mengisi semua itu). Jika Anda perlu menambahkan batas, batasnya mungkin tebal - bendera harus dipertimbangkan secara ketat di dalam batas hitam. Garis bantu atau indikator panjang lainnya tidak boleh ditarik. Yaitu, bendera akan muncul persis seperti pada gambar pertama.
Mencetak gol
Ini kode golf, jadi jawaban tersingkat (dalam byte) menang.
Sebagai kata peringatan, menggunakan kompresi yang ada (seperti menanamkan GIF terkompresi) jatuh ke beberapa celah standar .
sumber
CountryData["ROK","Flag"]
tidak masuk hitungan?Jawaban:
PHP / HTML / SVG, 324
(jeda baris ditambahkan untuk keterbacaan)
Data terkompresi meluas ke data SVG yang sama dengan jawaban saya sebelumnya yang ditunjukkan di bawah ini, tetapi dengan dua perubahan untuk membantu kompresi:
Dua
<use>
bagian diperluas ke konten asli<defs>
bagian tersebut. Ini membuat teks sumber lebih panjang, tetapi mengurangi entropi sehingga kompres lebih baik.Pada
<g>
elemen pertama , saya berubahtransform=translate(36,24)rotate(33.69)
menjaditransform=rotate(33.69)translate(43.27)
. Ini memiliki efek yang sama secara geometris, tetapi kompres lebih baik karena urutannya><g transform=rotate(
sekarang muncul dua kali.Secara default, PHP akan melayani ini sebagai
Content-Type: text/html
, jadi sintaks XML yang tidak valid seharusnya tidak menjadi masalah.SVG / HTML, 463
Pengurai HTML tidak terlalu sibuk tentang sintaks yang benar, jadi kita dapat menghapus tanda kutip dalam parameter selama tidak mengandung spasi. Seharusnya dimungkinkan untuk menekan ini lebih jauh dengan sedikit Javascript.
sumber
Python + Pycairo,
371 370366 byteMengeluarkan file SVG kecil bernama
F
.sumber
C(*[.77,0,.05,.2,.19,.47][i::2])
lebih pendek dariC(*[(.77,.05,.19),(0,.2,.47)][i%2])
s=SVGSurface("F",12,8);c=Context(s)
bukan hanyac=Context(SVGSurface("F",12,8))
?HTML + CSS,
966 906 843 792762 byteBukan pemenang kapan saja, tetapi banyak kesenangan menggambar di CSS. Ini bisa bermain golf banyak.
CSS, HTML :
;border:1px solid
hanya untuk ditampilkan karena<body>
tag memiliki batas yang jelas yang dapat diamati oleh Inspektur atau alat serupa, sebagaimana dinyatakan oleh OPCATATAN Hanya berfungsi di Firefox (atau Chrome canary / dev) karena penggunaan transformasi dan gradien khusus non-vendor.
Lihat itu dalam aksi
sumber
0deg
->0
(dua kali) dan menghapusleft:0
daria:before
. Dalam HTML Anda bisa menggunakan<p><ul></ul>
. (<p>
akan ditutup secara implisit sebelumnya<ul>
):before{content:''}
dan:after{content:''}
lebih lama dari sekedar menambahkan elemen lain (meskipun ini memang terlihat lebih baik).-webkit-
sebelum semuatransform:
, namun perlu untuk mengatakan bahwa akan membuatnya sedikit lebih lama!BBC Basic,
349343 karakter ASCII, ukuran file 330Unduh emulator di http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Menggunakan warna yang benar menambahkan banyak, tetapi mem-golf semua perintah grafis ke kode VDU mentah memberikan penghematan 6 karakter secara keseluruhan dibandingkan dengan posting asli saya. Semua grafik pada BBC mikro dilakukan melalui kode kontrol ASCII khusus mesin, jadi alih-alih menggunakan perintah grafis tingkat tinggi, Anda dapat mengumpan byte langsung ke pengontrol VDU (umumnya lebih pendek tetapi dengan biaya yang besar agar mudah dibaca). Nilai yang diakhiri dengan titik koma alih-alih koma adalah representasi little-endian 16-bit 2 byte.
Versi tidak disatukan
Di awal program saya memindahkan asal ke tengah layar.
Saya tidak menggambar setengah lingkaran berwarna besar. Alih-alih, saya menjalankan lingkaran yang menarik lingkaran merah dan biru kecil, berputar ke arah yang berlawanan arah jarum jam. Saya melakukan hampir 3 revolusi lengkap (dimulai dengan biru di sebelah kanan) yang jelas lebih dari cukup untuk mengisi disk. Saya berhenti pada revolusi ke-3, tepat ketika biru di kanan bawah berada di posisi yang benar untuk sejajar dengan jeruji (yang harus diplot.)
Ketika sudutnya benar, saya menggambar salah satu palang. vektor x, y untuk menggambar lingkaran biru kecil saat ini berfungsi untuk menentukan ke arah mana bar seharusnya berada. Untuk masing-masing dari 3 putaran, nilai bilangan bulat
a*7DIV44
yang berbeda dihitung, yang menunjukkan apakah bilah pertama, kedua atau ketiga harus ditarik, dengan tepi bagian dalam 6 / 8,7 / 8 atau 8/8 unit dari pusat ( sesuai dengan unit yang digunakan dalam spec spec.) Karena unit program adalah 1/4 dari yang ada dalam spec, ini masih setengah unit, jadi kami membagi 2 lagi sebelum menyimpan ke variabel ´b 'untuk menghindari separuh berulang kemudian.Bilah ditarik padat, maka bagian tengah dihapus jika perlu. Ini mencegah kinks bergabung setengah bar. Variabel z menunjukkan apakah bar harus dipotong. Yaitu, ketika y negatif untuk bar tengah dan ketika x positif untuk bar lainnya.
MOVE
adalah langkah mutlak.MOVEBY
adalah langkah relatif.PLOT133
menganggap dua posisi kursor grafik terakhir, ditambah yang baru ditentukan (dalam koordinat relatif) sebagai tiga sudut jajaran genjang, dan plot jajaran genjang itu.Output (& diskusi keterbatasan bahasa)
Saya memilih mode layar 1280x800 piksel logis = 640x400 piksel fisik, yang secara default memiliki latar belakang hitam. Untuk ini saya menggambar persegi panjang putih dari -600, -400 hingga 600.400 untuk bertindak sebagai "kanvas."
BBC Basic dapat menangani 16 warna sekaligus, dari palet yang dapat diprogram ulang. Tapi itu hanya mendukung warna 18-bit, sedangkan pertanyaannya menentukan warna sebagai 24-bit. Warna sedekat mungkin.
sumber
Penyu Python 3 (
552549 bytes)( Gambar ukuran penuh )
Sunting: Sekarang kita memiliki Stack Snippets, inilah tes Stack Snippet menggunakan Skulpt , dengan bantuan jawaban ArtOfCode di sini . Sayangnya, Skulpt belum sepenuhnya mengimplementasikan Python, jadi saya harus memutilasi setengah kode saya agar ini berfungsi. Dengan kata lain, cuplikan ini hanya dimaksudkan untuk menunjukkan cara kerja program saya (tanpa perlu menarik Python).
(Juga, saya menemukan bahwa ini mungkin tidak benar-benar berfungsi pada beberapa browser ...)
Kode aktual:
Karena kura-kura itu lamban, jika Anda ingin hasil instan, Anda dapat menambahkan
t.tracer(0)
setelah baris pertama sebelum Anda menjalankan skrip.Catatan: Entah mengapa kura-kura terus menggambar apa yang tampak seperti piksel hitam tambahan meskipun saya sudah menelepon
up()
, dan saya tidak tahu mengapa ...sumber
HTML + ES6, 388
Jika browser Anda mendukung ES6, Anda dapat melihatnya di JSFiddle atau menjalankan cuplikan.
Ini membangun bendera dari beberapa bentuk dasar, memutar kanvas pertama untuk memperhitungkan sudut.
sumber
<canvas width=576 height=384 id=D><script>c=D.getContext('2d')
kurang dari 9 byte. Juga, karena seluruh halaman berwarna putih, saya pikir Anda perlu menggambar perbatasan.Mathematica
404450sumber
C ++ TERLALU BESAR
Mencoba ini menggunakan perpustakaan menggambar PPM buatan saya . Secara teknis skalabel, tetapi saya dibatasi oleh fungsi pengisian rekursif saya karena tidak dapat diandalkan dan suka melakukan segfault, saya pikir itu menggunakan terlalu banyak memori, jadi saya tidak akan benar-benar membiarkan pengguna mengatur skala. Gambar tidak beraturan karena koordinat yang saya masukkan untuk setiap sudut bilah sedikit tidak aktif.
Saya mengaturnya untuk memulai dengan latar belakang hitam, lalu letakkan lingkaran putih di tengah, lalu lingkaran merah dan biru di dalamnya. Isi isian rekursif digunakan untuk menambahkan sisa warna merah dan biru. Kemudian menggambar persegi panjang dengan garis-garis putih untuk menandai batang hitam. Bagi latar belakang hitam menjadi 4 bagian dengan garis putih dan gunakan 4 isian rekursif untuk membuat setiap bagian berwarna putih. Melakukannya dalam 1 pass akan menyebabkan segfault. Masih sangat lambat untuk ditampilkan.
Kode utama tidak digabungkan (bagian perpustakaan terlalu besar, bermain golf ini tidak masalah)
sumber
PostScript ,
572477 byteKode golf:
Kode tidak dikunci:
Hasil:
sumber
Python 2, 483 byte
Kemungkinan peningkatan:
Output sebagai PPM teks, penggunaan:
versi beta tanpa lemak
sumber