Winter Bash 2014 adalah yang terbaik dan bukankah kita semua suka topi? Terutama topi rahasia!
Jadi mengapa tidak menggambar salah satu topi rahasia?
Tantangan
Tugas Anda adalah menggambar Topi Sambutan Hangat secara proporsional, dalam bahasa pilihan Anda dan memiliki konstruksi yang tepat seperti yang muncul di halaman ini .
Seperti biasa , Anda dapat merender topi ke file atau layar menggunakan vektor atau grafik raster. Jika output Anda dirasterisasi, gambar Anda harus memiliki dimensi 400x400 piksel atau lebih.
Selain itu, isi topi yang sebenarnya (area persegi panjang pembatas dari bagian-bagian berwarna dari gambar) harus mencakup lebih dari 40% dari gambar keluaran Anda.
Spesifikasi
Gambar di bawah mencantumkan berbagai dimensi topi. Semua dimensi ada di unit, misalnya piksel. Semua radius batas pada gambar harus digambar dengan jari-jari 13
satuan.
Warna :
- Merah di bintang dan cincin melingkar - rgb (255, 28, 34)
- Kuning di dalam lingkaran - rgb (255, 202, 87)
- Abu-abu terang - rgb (88, 88, 92)
- Abu-abu paling gelap - rgb (31, 26, 26)
- Abu-abu tengah - rgb (64, 64, 64)
Mencetak gol
Ini adalah 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
Jawaban:
GolfScript (
376 373 364350 atau645 610607 byte)Mengikuti spesifikasi asli , yang menyerukan pembangunan SVG yang tepat, SVG golf dihasilkan dalam 607 byte.
Kode berisi banyak karakter yang tidak dicetak, jadi inilah output xxd:
Ini adalah varian pada mesin tata bahasa yang konstruktif yang akrab dengan pengikut kolmogorov :
Ternyata sedikit lebih baik untuk huruf besar SVG golf, kompres itu, dan kemudian huruf kecil setelah dekompresi.
Saat dijalankan, ini menghasilkan SVG 840-byte:
Saya telah mengubah posisi beberapa milipixel dan memperbaiki satu asimetri kecil di bagian abu-abu yang paling gelap.
Tetapi perubahan pada pertanyaan dan diskusi dalam obrolan menunjukkan bahwa sebenarnya diperbolehkan untuk membuat pendekatan yang baik untuk SVG, yang dapat dilakukan dalam 364 byte. Rantai dekompresi mirip, jadi output xxd dari file GolfScript adalah:
dan menghasilkan file SVG 547-byte:
Terima kasih kepada Paul LeBeau karena menunjukkan penghematan 7-byte dalam SVG yang diterjemahkan menjadi 9 byte dalam GolfScript, dan untuk jawabannya yang menunjukkan bahwa bintang dapat ditarik hanya dengan 5 poin. (Menggunakan jawabannya saya bisa turun ke 329 byte, atau 323 dengan beberapa penyesuaian untuk jawabannya, tapi saya tidak nyaman dengan itu).
Diekspor pada 50% dengan Inkscape:
Untuk melihat strukturnya, inilah SVG yang ditampilkan dengan
fill="none"
semuanya dan beberapa warna isian berubah menjadi warna guratan:sumber
SVG (
462 460 454 429 384365 bytes)Saya tahu ini bukan bahasa pemrograman, tapi saya pikir ini setidaknya akan berguna bagi siapa pun yang menghasilkan keluaran SVG ...
Ini didasarkan pada SVG Peter Taylor.
Dengan menggunakan coord asli, dan sedikit mengoptimalkan jalur, saya berhasil memperkecil SVG. Saya juga memperbaiki warnanya.
Pembaruan: Memperbaiki kekurangan yang ditunjukkan oleh Peter Taylor dan posisi rect dan menyimpan 2 byte lebih.
Pembaruan 2: Memasukkan perbaikan lain dan saran dari Peter (-6 bytes)
Pembaruan 3: Hanya perhatikan instruksi sekarang menentukan semua jari-jari adalah 13, jadi mengambil keuntungan dari itu, dan mengoptimalkan jalur sedikit lebih, saya menyimpan 25 byte lagi. Biola yang lebih enak dibaca di sini.
Pembaruan 4: Karena saya sudah mengasumsikan SVG tertanam dalam HTML (SVG mandiri membutuhkan deklarasi namespace), saya benar-benar dapat memeras ini lagi. (a) Saya tidak memerlukan atribut lebar dan tinggi karena ukuran SVG lebih kecil dari ukuran browser standar yang diberikan kepada objek yang ukurannya tidak dapat ditentukan (300x150), dan (b) pengurai HTML memaafkan tentang atribut yang tidak dapat mengutip, sehingga beberapa di antaranya dapat dihapus (ide dari Squeamish Ossifrage ). Menghemat 45 byte lagi.
Pembaruan 5: Menggunakan trik hsl untuk menghilangkan tanda kutip warna dan menjatuhkan tag akhir yang tertinggal. Kami menyimpan 19 byte lagi. Yang terakhir tampak agak menipu saya pada awalnya, tetapi karena bekerja di semua browser, saya berubah pikiran. :) Terima kasih hsl!
sumber
fill="none"
ke grup atau dengan menyesuaikan kurva.<rect>
harus memiliki tinggi74
daripada78
. Dan saya membuat penghematan 5-char untuk menggantinya dengan<path>
dengan keduafill
danstroke
,stroke-width="18"
, kemudian pindah di dalam<g>
dan umumstroke-width="18"
pindah dari dua jalur ke<g>
. Memiliki yang lain<path>
daripada<rect>
harus juga membantu sedikit kompresibilitas.Mathematica
787 612 600 514506 byteJumlah kode yang mengejutkan dibutuhkan. Pasti akan dipukuli.
Bentuk tidak serigala
Golf
sumber
HTML + ES6, 533
Cuplikan (dimodifikasi):
sumber
serif
, yang bahkan bukan font khusus ...HTML + CSS,
676 636625 byteIni bisa banyak bermain golf, dengan menyingkirkan ituSekarang menggunakan transformasi untuk memusatkan segalanyaleft:XXXpx
dan menggunakan semacam pemusatanleft:XXXpx
.Catatan: Ini berfungsi dengan baik / seperti yang diharapkan di Firefox pada Windows
Hasil akhirnya terlihat seperti:
sumber
ActionScript 3.0, 491 byte
Bentuk golf:
Output: http://megaswf.com/file/2708781.swf
sumber
var ww=new WarmWelcome(); stage.addChild(ww);
dan gambarlah di Flash dengan tautan AS3:)
MATLAB R2013a,
551541Ini Golf Code pertamaku. Jadi kalau ada yang tidak sesuai aturan, tolong ajari / ceritakan :)
Bentuk golf:
Output (raster):
sumber
LaTeX / TikZ (613 bytes)
Hasilnya
pdflatex
adalah file PDF dengan topi sebagai grafik vektor dan kotak terikat ketat.Tidak disatukan
Nilai diambil dari file SVG, mereka lebih akurat (tetapi juga mengandung kesalahan pembulatan). Bagian tersulit adalah garis miring gelap di latar belakang. Mereka digambarkan sebagai garis yang sangat tebal dengan tutup garis bulat dan bergabung.
sumber
Perl + TK: 555
Baris baru hanya untuk keterbacaan, meskipun saya tersesat dari begitu banyak variabel.
Ini gambarnya:
Saya tidak berpikir itu mendekati pixel sempurna, tapi cukup dekat :)
sumber