Tantangan
Gambarkan logo Olimpiade ...
... sebagai seni karakter (mis. ASCII)!
Output Sampel
* * * * * * * * *
* * * * * *
* * * * * *
* * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * *
* * * *
* * * *
* * * * * *
Seni Anda tidak harus persis seperti milik saya, tetapi harus mewakili cincin Olimpiade dengan cukup baik sehingga dapat dikenali.
Aturan
- Program harus menulis karya seni ke konsol.
- Kode terpendek (dalam byte, bahasa apa pun) menang.
- Solusi yang mencetak cincin dalam warna masing-masing (atau representasi dekat) akan diberikan bonus minus dua puluh poin.
Pemenang akan dipilih pada 23 Februari rd di akhir Olimpiade Musim Dingin 2014.
Pemenang
- Emas : marinus - APL, 62 poin
- Perak : Ayiko - Perl 6, 75 poin
Bronze : evuez - Python, 107 poin
Pilihan populer : Danko Durbić - Commodore 64 BASIC
Jawaban:
APL (82) (-20 = 62)
Sunting: untuk suatu perubahan, program ini cukup sederhana sehingga TryAPL akan menyentuhnya, sehingga Anda dapat menjalankannya di sana (cukup tempel barisnya).
Tidak yakin apakah saya bisa mengklaim bit 'warna', saya mewakili mereka semua secara berbeda.
Konsol APL tidak mendukung warna, jadi saya menggunakan karakter blok yang diarsir (menugaskan segala jenis seni ASCII lainnya semudah mengganti karakter di awal string.)
Itu harus terlihat seperti lingkaran yang tidak terputus (tergantung font Anda.)
Atau:
sumber
Commodore 64 BASIC
Menulis langsung di layar dan memori warna.
Keluaran:
Inilah cara Anda melakukan ini dengan sprite.
sumber
HTML Fiddle -
48,35, 33 karakter (Terima kasih @Dom dan @cnst!)Keluaran:
sumber
OOO<div style="margin:-10px 5px">OO
sebagai gantinya ... (Saya pikir itu perlu menjadi blok, karenanya<div/>
)div
, bisa pakaip
saja!BASH dalam warna - 271 - 20 = 251 - Dengan cincin terjerat; P
Hasil:
Dan untuk bersenang-senang satu: 61 - 20 = 41.
Versi LZ77:
sumber
bash: !/\\e[3}": event not found
:(x='54mO53m_50m052m_51mO\n53m U 52mU\n';printf "${x//5/\\e[3}"
- (Saya agak jahat dengan 5 di sini.) Atau bahkan ini mungkin lebih baik, dengan tumpang tindih dalam pikiran:x='54mO53mA50m052mA51mO\n53m U 52mU\n';printf "${x//5/\\e[3}"
- meskipun mungkin terlihat lebih berantakan daripada yang lain.Sinclair BASIC pada ZX Spectrum 48K (261 byte)
Daftar DASAR:
Hasil akhir:
Program berjalan dan pengukuran kode:
Daftar BASIC dalam format teks:
File TAP dengan program ini, cocok untuk emulator atau mesin nyata menggunakan DivIDE atau DivMMC: http://www.zxprojects.com/images/stories/draw_the_olympics_flag.tap
sumber
Jadi saya tidak benar-benar membaca dengan benar, ini ASCII-art, jadi saya kira ini tidak valid. Ups!
HTML 121 (141 - 20)
Di Chrome:
PHP 103 (123 - 20)
sumber
#06f
, kuning:#fa0
, hijau:#193
Ruby: 198 karakter - 20 = 178
(Perhatikan bahwa itu
^[
adalah karakter tunggal.)Contoh dijalankan:
sumber
Mathematica - 185
Inilah ouput
Versi lain, berdasarkan rasterisasi grafik vektor
sumber
PostScript, 203 (-20 = 183)
Saya berpendapat bahwa ini dianggap sebagai "seni ASCII", meskipun tidak menulis ke konsol. Keluaran:
Ini bisa bermain golf lebih sedikit.
sumber
Windows Command Script - 112
persenbyteDan tentu saja, versi cheat'ish wajib - 4 byte
disimpan sebagai:
sumber
Upaya lain di Perl,
130120Terima kasih kepada manatwork untuk membantu dengan ini
Keluaran:
sumber
for
alih-alihforeach
; 2 karakter dengan menghapus(
… argumen)
bulatsprintf()
; 2 karakter dengan menghapushex
parameter; 1 karakter dengan menggunakany///
alih-alihtr///
; 1 karakter dengan menghapus final;
.y///
sebelumnya. Akan pergi dan mencarinya sekarang.Python:
157140138133122107 karakter107
(terima kasih kepada manatwork )
keluaran sampel:
157
122
(baru mulai yang ini, saya akan mencoba memperbaikinya)
dengan output yang lebih baik: 120 karakter
keluaran sampel:
sumber
print'\n'.join(['{0:b}'.format(int(o,36)).rjust(39,'0')for o in"kpvbkq0 1re099tu 3ifszg1t 3iwiuayp 1re099tu kpvbkq0 httbls 5trxmo".split()])
. Mengenai versi "output yang lebih baik", di sana Anda dapat menyimpanrjust()
parameter kedua. (Dan masukkan "t" dalam judul posting ini.)bin()
. Tetapi mengapa Anda menggunakannyastr()
?bin()
Nilai pengembalian sudahstr
.010000010100000101000101000001010000010
? Dua cincin bawah terlihat agak rusak bagiku.Perl,
177163Versi yang ditingkatkan berkat Dom Hastings:
Keluaran:
sumber
"\n"
sebagai$r
, Anda dapat menggunakan$/
default ke mana"\n"
, baris baru literal bahkan mungkin lebih menghemat Anda di beberapa tempat. Anda juga dapat menyimpan 1 char lebih banyak menggunakan$s=$"x3
daripada$s=" "
. Semoga itu bisa membantu!C, 257 byte
Ini bisa golf lebih sedikit.
Ini harus dijalankan pada Tektronix 4010 (atau emulator seperti xterm -t). Keluaran:
Ini memang seni ASCII, karena semuanya '.' karakter. Dan itu output ke konsol, seperti yang diminta. Beberapa emulator Tektronix mendukung warna. Milik saya tidak, jadi saya tidak bisa melakukan itu.
sumber
Java,
181179161156 bytes(Tidak akan dikompilasi pada jdk 1.7, membutuhkan 1,6 atau lebih rendah)
Hasil:
Jelas bukan pemenang, tapi ayolah, ini java .
sumber
replaceAll()
ekspresi reguler 's dan menempatkan kembali seluruh bagian cocok:replaceAll(".{29}","$0\n")
. (Mungkin ada jeda baris tambahan di akhir file Anda, karena saya hanya menghitung 181 karakter dalam kode yang diposting.)import
dan letakkan nama paket langsung di panggilan konstruktor. Itu mengurangi ukuran hingga 161 karakter.class M{static{...
keenum M{M;{...
. Langkah besar selanjutnya adalah menyingkirkan BigInteger, apakah itu mungkin? Saya mencoba melakukan sihir dengan String.format tetapi belum ada hasilnya.Haskell, 200
Keluaran:
bermain golf dari:
sumber
map.map
itu karena kedengarannya lucu. : DRuby, 9
#sindiran
Aturan memungkinkan untuk seni yang tidak persis seperti contohnya, tetapi harus "mewakili cincin Olimpiade dengan cukup baik sehingga dapat dikenali" .
Anda dapat mengenali representasi logo Olimpiade ini.
sumber
Javascript - 170
185189CharsKeluaran:
2nd Javascript - 25 Karakter
Keluaran:
Yang kedua malas
sumber
split()
parameter; 2 karakter dengan menghapus 2;
detik terakhir .'kpvbkq041re099tu43ifszg1t43iwiuayp41sdk52824kpvbkq04httbls45trxmo'.split(4).map(x=>{a=parseInt(x,36).toString(2);console.log(' '.repeat(39-a.length)+a.replace(/0/g,' '))})
.Biner! (265 CHARS)
Terlalu besar untuk menang, tetapi setidaknya itu terlihat keren!
sumber
PHP - 99 (-20?)
Itu pasti bisa dikenali. Saya mengatakan bahwa "warna" saya diperhitungkan; itu representasi yang dekat.
Jika Anda tidak suka itu, maka ini dia
GolfScript - 101 (-20?)
sumber
header("Content-Type: text/plain")
, default untuk server web adalah teks / htmlBash + ImageMagick: 163 karakter
Output sampel:
sumber
Perl 6:
1127756 karakter, 75 byte.comb
memberikan daftar karakter yang terpisah dalam sebuah String (tanpa argumen).ord
memberikan nomor kode karakter dari karakter.base(2)
mengembalikan sebuah string dengan basis-2 encoding dari Int itu.trans
mengganti digit dengan spasi dan @ untuk visibilitas yang lebih baikflip
membalikkan karakter string sehingga kehilangan 0 di depan tidak mengacaukan gambar.sunting2: solusi yang lebih baru menggunakan kata-kata qwote dan base-36 disandikan
<ABC DEF GHI>
adalah sintaksis kata-kata dalam perl6, jadi Anda mendapatkan daftar Strings:36($_)
membuat Int dari basis-36 string yang dikodekan dalam$_
(for
variabel default loop)sunting: solusi lama memiliki gambar yang lebih bagus (disalin) tetapi lebih panjang:
sumber
Mathematica
18517510 byte disimpan oleh mathe.
Cincin di bawah adalah ASCII 'O's.
Huruf "O", sedikit tembus cahaya, dalam Century Gothic, dicetak 5 kali pada ukuran font = 145 titik printer.
Ini bukan seni terminal. Namun itu sepenuhnya memenuhi definisi Wikipedia tentang seni Ascii: http://en.wikipedia.org/wiki/ASCII_art .
sumber
FontSize ->
dapat dihapus.FontSize -> 145
dengan145
.JavaScript: 153 karakter
Saya ingin melihat apakah saya bisa melakukannya lebih cepat menggunakan aljabar untuk membuat grafik lingkaran:
(
c
adalah array yang terdiri dari lima (x, y) pasangan, pusat lingkaran, diratakan untuk menyimpan sepuluh karakter.)keluaran:
159 karakter sedikit lebih mudah dibaca:
keluaran:
Dalam 167 karakter kita memiliki "warna":
keluaran:
Dan dengan 189 karakter , saya dapat membuat jari-jari
r
dapat disesuaikan juga:http://jsfiddle.net/mblase75/5Q6BX/
sumber
APL, 8 karakter / byte *
Inilah jawaban yang mendorong jumlah char terendah (ini kode golf)
Keluaran:
Simbolnya adalah ○, operator lingkaran APL. Anda dapat menempatkan 'O' sebagai gantinya, jika Anda ingin output ASCII ketat. Saya pikir cocok menggunakan simbol APL.
Hanya untuk iseng, inilah versi warna (37 karakter - 20 = 17 skor)
Output: ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*: APL dapat ditulis dalam charset byte tunggal (warisan) yang memetakan simbol APL ke nilai 128 byte atas. Oleh karena itu, untuk tujuan penilaian, program karakter N yang hanya menggunakan karakter ASCII dan simbol APL dapat dianggap sebagai panjang N byte.
sumber
CSS,
1176922855771 byte, -20 bonus warna = 751Hanya CSS, tidak perlu markup. Lihat biola tanpa mark di sini: http://jsfiddle.net/XcBMV/12/
Berwarna, dan dengan tumpang tindih yang benar.
sumber
Perl - 12 karakter
OK, jadi ini bukan render artistik. ;-)
Sedikit lebih manis:
sumber
Unit GAS loader BIOS OL 16-bit - 617 - 20 = 597
Menjadi gila panjang di sini, jadi hanya untuk bersenang-senang.
Ini tidak memuat banyak, tetapi memuat logo The Olympic Games sebagai ASCII dengan warna;)
Kode:
(Linux) Bangun dan ekstrak gambar MBR
Berjalan di emulator
(Belum mengujinya di komputer di rumah saya ...)
Hasil
sumber
TI-Basic (16 byte)
Catatan: TI-Basic adalah tokenized. Jika saya ingat dengan benar,
ClrHome
danDisp
merupakan token satu byte.sumber
sumber