Kata pengantar
Ada banyak tantangan "menggambar x bendera", dan setelah mencari ternyata tidak ada tantangan untuk menarik serikat Jack! Saya merasa ini akan menjadi bendera yang lebih sulit untuk dilukis, tetapi itu masih mungkin dilakukan.
Tantangan
Gambar Union Jack. Ini dapat di-output ke file dalam format file grafik apa pun yang tersedia secara bebas atau ditarik ke layar.
- Aturan Golf berlaku, kode terpendek dalam byte menang.
- Celah standar berlaku.
- Tidak ada bawaan untuk menggambar bendera diizinkan.
Dimensi harus seperti di bawah ini. Ukuran minimum 600x300 piksel (atau unit jika bahasa Anda hanya mendukung grafik yang dapat diskalakan). Kesalahan maksimum 1 piksel.
Warna harus merah, putih dan biru seperti yang didefinisikan oleh bahasa Anda atau dokumentasinya, atau # CC0000, #FFFFFF dan # 003399 per halaman Wikipedia.
code-golf
kolmogorov-complexity
graphical-output
Shaun Wild
sumber
sumber
Jawaban:
BBC BASIC
Rev B, 234 byte
Alih-alih menggambar satu salib putih dan merah, kami menggambar 100 salib yang semakin sempit, beralih dari latar belakang putih ke latar depan merah pada koordinat 60.
Unduh juru bahasa gratis di http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Sepenuhnya golf, 249 byte
Kode VDU byte tunggal misalnya
25,0
digabungkan menjadi endian kecil misalnya byte ganda25;
dan penggunaan konstanta maksimum untuk nilai-nilai umum. Kata kunci dikompresi ke bentuk disingkat, misFOR
= =F.
(penerjemah berkembang secara otomatis.)Semigolf
Kode VDU mentah. Dalam BBC BASIC, karakter dapat dikirim ke pengontrol VDU seperti
VDU65
(mencetak A.). Ada karakter khusus khusus untuk BBC untuk grafis. Ini harus diikuti oleh beberapa byte lain untuk menentukan koordinat, dll. Di sini kita menggunakanPLOT
=>VDU25
,GCOL
=>VDU18
,ORIGIN
=>VDU29
.Pertama kita menggambar setengah bagian diagonal: 2 segitiga biru dan 2 genjang merah. Kemudian kita mengubah skala dari -1 ke +1 dan menggambar setengah lainnya. Akhirnya kita menggambar bagian horisontal dan vertikal di atas: 2 persegi panjang putih untuk membentuk salib putih, lalu 2 persegi panjang merah. Gambar setelah iterasi pertama loop ditunjukkan di bawah ini, bersama dengan gambar akhir.
Kode tidak dikunci
BBC basic mengingat 2 lokasi terakhir kursor grafik. PLOT81 menggambar segitiga di antara koordinat baru yang ditentukan dan dua lokasi terakhir ini. PLOT113 dan PLOT117 menggambar sebuah jajaran genjang dengan cara yang sama: tiga sudut jajaran genjang harus diberikan dalam urutan mereka ditemukan keliling perimeter. Tiga bit terakhir dari kode PLOT menentukan apakah koordinat yang diberikan adalah absolut atau relatif, dan apakah warna foreground atau background digunakan. Bit yang lebih signifikan menentukan jenis bentuk apa yang digambar (titik, garis, segitiga, jajaran genjang, persegi panjang, dll.)
sumber
SVG, 298 byte
skor mengecualikan 3 baris baru yang tidak perlu ditambahkan untuk kejelasan.
Terinspirasi oleh jawaban Siren yang terhapus (dan khususnya penghematan dalam byte dari menghilangkan
</svg>
di akhir dokumen), saya datang dengan SVG yang baik secara dimensi benar dan sedikit lebih pendek.Ini terdiri dari jalur biru dan jalur merah (diisi, tanpa guratan) untuk bagian diagonal dan jalur merah (diisi, dengan 20 unit batas putih) untuk palang terakhir. Karena ketebalan batas putih, dimensi salib yang ditentukan harus melebihi dimensi yang dibutuhkan sebanyak 10 di sekelilingnya.
Ini berfungsi baik untuk saya di Microsoft IE dan Edge. Terkadang menampilkan peringatan "konten tambahan di akhir dokumen" di Chrome.
Begini tampilannya tanpa dan dengan salib terakhir. Diperlukan 8 poin untuk menggambarkan jalur biru, 10 poin untuk menggambarkan jalur merah, dan 12 poin untuk persilangan akhir. Perpotongan garis lurus dalam dua jalur pertama tidak harus diberikan.
sumber
PS If anyone wants to argue that SVG isn't a programming language (and I'd be very inclined to agree), consider this a PHP program in the style of many PHP submissions to this site which just echo literal text.
Logo,
260239 byte(Juru Bahasa XLogo)
Saya menggunakan interpreter XLogo berbasis Java karena merupakan salah satu dari beberapa implementasi Logo yang saya temukan yang mendukung pengaturan ukuran jendela output.
Editor XLogo biasanya menyimpan file sebagai prosedur yang dimaksudkan untuk dipanggil. Program ini ditulis untuk ditempelkan ke jendela langsung sebagai gantinya. Ini menghemat sekitar 9 byte.
Karena warna yang tepat tidak diperlukan, saya menggunakan kembali ini untuk menggunakan nomor warna bawaan yang menghemat beberapa byte. Jika Anda ingin melihat versi dengan warna RGB yang tepat, periksa revisi. Saya juga mengganti perhitungan trigonometri dengan padanan yang lebih pendek.
Tidak dikoleksi dengan komentar
Satu-satunya tipuan nyata di sini adalah mengubah warna untuk lintasan kedua loop, dan memanfaatkan
wrap
fitur yang memungkinkan kita menggambar garis-garis horizontal dengan sedikit usaha. Karena tinggi dan lebar bendera adalah keduanya faktor 600, kita dapat maju 600 untuk garis-garis vertikal atau horizontal dan berakhir kembali di tengah lagi. Ini menghindari kasus terpisah untuk masing-masing, bahkan jika itu menggambar bar vertikal dua kali lebih sering. Kami menghemat ruang kode, bukan siklus-jam.sumber
Memproses, 312 byte
Ini adalah jenis puzzle di mana Pemrosesan cukup efisien.
Hasil dalam:
sumber
Python 2, 265 byte
Output sebagai PPM biner, penggunaan:
L
mewakili irisan vertikal dari bagian diagonal danF
menggunakan (semacam) simetri untuk menyimpan kode dan menghitung indeks untuk bagian atas dan bawah.sumber
Postscript (166 byte)
Versi non-tokenized:
Keluaran:
sumber