Mari kita coba bermain ascii-art yang mewakili seorang pemain golf:
'\. . |> 18 >> \. ' | O >>. 'o | \. | / \. | / /. ' | jgs ^^^^^^ `^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^
Sumber: JGS - http://www.retrojunkie.com/asciiart/sports/golf.htm
Aturan:
- Tidak ada input yang diizinkan
- Tidak ada sumber daya eksternal yang diizinkan
- Keluarannya harus persis teks ini, ditampilkan dalam font monospace (konsol OS, konsol JS, tag <pre> HTML, ...), termasuk pemecah baris terkemuka dan tertinggal.
- Kutipan di sekeliling atau tanda kutip ganda diizinkan (konsol JS menambahkan tanda kutip ganda saat Anda mengeluarkan string, tidak apa-apa)
Jawaban terbaik adalah yang menggunakan lebih sedikit karakter dalam bahasa apa pun.
Selamat bersenang-senang!
Jawaban:
CJam, 62 karakter
Cobalah online.
Uji coba
Bagaimana itu bekerja
2G#b
mengubah string sebelumnya menjadi integer dengan mempertimbangkannya sebagai nomor base-65536.128b:c
mengonversi integer itu kembali ke string ( 110 byte ) dengan mempertimbangkannya sebagai nomor basis-128, yang~
kemudian mengeksekusi:(notasi caret)
memisahkan string menjadi pasangan dua karakter dan melakukan hal berikut untuk setiap pasangan: Pop karakter kedua dari string, mengubahnya menjadi integer dan ulangi string
" "
itu berkali-kali.Misalnya,
".("
menjadi". "
, karena kode karakter ASCII(
adalah 40.Akhirnya,
mendorong string
"jgs"
, karakter^
diulang 7 kali, karakter`
, karakter^
diulang 51 kali dan linefeed.sumber
Ruby, 107
Saya pikir saya benar-benar akan mencoba "menghasilkan" gambar dalam kode (alih-alih menggunakan beberapa fungsi kompresi yang ada):
Ada beberapa karakter yang tidak dapat dicetak dalam array literal itu.
Berikut ini adalah tampilan hex file, untuk menunjukkan karakter yang tidak dapat dicetak, juga:
Terima kasih kepada Ventero untuk beberapa peningkatan besar! (Dia pada dasarnya mengurangi kode sebesar 50%.)
sumber
6.times{|i|S[i+1]=' '*55+?|}
untuk menyimpan 2 karakter.i
lebih dari satu kali. Tangkapan yang bagus!S.fill{' '*55+?|}
Sebaliknya, menggunakan menyimpan lebih banyak karakter (Anda harus mendefinisikanS
sebagai['']*7
, ubahputs
toputs p,S,p
dan kurangi 1 dari semua koordinat y Anda). Kemudian, dengan menggunakan varargs di f (def f(*p,c)
), Anda dapat menyimpan[]
dalam panggilan fungsi. Oh, dan Anda bisa drop()
sekitary,x
.S
satu dimensi, Anda dapat menyimpan 55 karakter lainnya;) Ini kode jika Anda tidak ingin melakukannya sendiri.bash + iconv + kode mesin DosBox / x86 (
104979695 karakter)Saya menyarankan untuk menempatkan ini dalam skrip di direktori kosong, hampir dijamin bahwa menyalin-paste di terminal akan merusak segalanya; lebih baik lagi, Anda dapat mengambil skrip di sini yang sudah jadi.
Output yang diharapkan:
Bagaimana itu bekerja
Bagian bash hanyalah peluncur yang digunakan
iconv
untuk "mendekompresi".com
file dari karakter skrip UTF-8 dan meluncurkannya dengan DosBox.Perhatikan bahwa ini menimbulkan batasan pada konten, karena tidak semua urutan input dapat diartikan sebagai UCS-2 dengan
iconv
tidak mengeluh; misalnya, untuk beberapa alasan banyak operasi yang melibatkanbx
register rusak total tergantung pada tempat saya menggunakannya, jadi saya harus mengatasi masalah ini beberapa kali.Sekarang, hal Unicode hanya untuk mengambil keuntungan dari aturan "jumlah karakter"; ukuran sebenarnya (dalam byte) dari skrip jauh lebih besar dari
.COM
file aslinya .File yang diekstraksi
.com
adalahdan panjangnya 108 byte. Sumber NASM untuk itu adalah:
Semua ini hanyalah dekompreser
compressed.dat
dengan format sebagai berikut:compressed.dat
pada gilirannya dihasilkan menggunakan skrip Python dari teks asli.Semuanya bisa ditemukan di sini .
sumber
Python, 156
Ini menggunakan pemformatan string dengan bantalan ruang untuk beberapa kompresi dasar.
sumber
PHP, 147
Ini berjalan pada baris perintah dan output langsung ke konsol:
sumber
Perl - 127
129130132135137145Terima kasih kepada Ventero dan m.buettner atas bantuan mereka dalam optimasi RegEx saya.
sumber
s/\d+(?!8?>)/%$&s/rg
/\d++(?!>)/
GCC C - 203 byte
Saya pikir saya akan bersenang-senang dengan yang satu ini. Ini mengkompilasi versi MinGW saya dan menampilkan teks yang diharapkan.
Spasi ditambahkan untuk kejelasan.
Tidak ada situs yang menyisipkan kode online yang memungkinkan penggunaan karakter byte tunggal di luar rentang ASCII, jadi saya harus melarikan diri dari mereka untuk contoh yang diunggah. Namun sebaliknya identik. http://codepad.org/nQrxTBlX
Anda selalu dapat memverifikasinya dengan kompiler Anda sendiri juga.
sumber
LOLCODE, 590 karakter
Karena LOLCODE dari perfik bahasa 4 golf di: mudah 2 kompres yang membingungkan dan tidak bertele-tele sama sekali.
Pritee saya yakin dis werkz, tapi saya doan punya LOLCODE interpretr an http://repl.it tampaknya 2 tidak seperti funcshuns.
(Tranzlashun dengan murah hati disediakan oleh http://speaklolcat.com robot karena saya melakukan speek lolcat)
Versi indentasi, spasi, dan komentar kode (komentar LOLCODE dimulai dengan BTW):
sumber
Python -
205203197String
i
interleave karakter dalam seni ascii dengan multiplicite mereka, diwakili sebagai karakter, semuanya dalam urutan terbalik. Selain itu, saya menghemat sedikit ruang dengan menggunakan '!' bukannya 'G' dii
kemudian ganti saja.sumber
Python (145)
Tidak terlalu orisinal, saya tahu.
sumber
Javascript ( ES6 )
193175 byteSunting: Modifikasi RegPack v3 untuk mempertahankan baris baru, menggunakan
for in
loop untuk menyimpan 3 byte, dan menghapus eval untuk output konsol implisit.Menggunakan kompresi unicode xem: 133 karakter
sumber
ES6, 155 karakter
Hanya mencoba pendekatan lain:
Jalankan ini di konsol JS Firefox.
Setiap karakter unicode memiliki bentuk sebagai berikut: \ uD8 [kode karakter ascii] \ uDC [jumlah pengulangan].
(String Unicode dibuat dengan: http://jsfiddle.net/LeaS9/ )
sumber
.replace(/../g,a=>String.fromCharCode(a[c='charCodeAt']()&255).repeat(a[c](1)&255))
PHP
Metode 1, lebih sederhana (139 byte):
Menggunakan string pra-kempes.
Metode 2, menyandikan lintasan spasi menjadi huruf alfabet (192 byte):
sumber
PowerShell,
192188119Bagian di atas berisi beberapa non-karakter. Hex dump:
Skema penyandian adalah RLE dengan panjang yang disandikan di atas 7 bit yang lebih rendah, yang merupakan karakter untuk ditampilkan.
sumber
Python - 236
sumber
JS (190b) / ES6 (146b) / ES6 dikemas (118chars)
Jalankan ini di konsol JS:
JS:
ES6:
ES6 dikemas: ( http://xem.github.io/obfuscatweet/ )
Terima kasih kepada @nderscore!
sumber
"\n6'\\19.2.24|>18>>\n8\\14.9'1.19|\n7O>>9.17'o16|\n8\\7.38|\n8/\\4.40|\n7/1/2.'41|\n1jgs^^^^^^^`".replace(/\d+/g,a=>18-a?' '.repeat(a):a)+"^".repeat(50)+"\n"
"\n6'\\19.2.24|>0>>\n8\\14.9'1.19|\n7O>>9.17'o16|\n8\\7.38|\n8/\\4.40|\n7/1/2.'41|\n1jgs58`101\n".replace(/\d+/g,a=>' ^'[a>51|0].repeat(a%51)||18)
(stackexchange menambahkan karakter pemecah garis yang tak terlihat setelah 41 | \ )ES6, 163b / 127 karakter
Namun pendekatan lain, terima kasih kepada @nderscore.
Jalankan di konsol Firefox
JS (163b):
Dikemas (127c):
sumber
Python, 70 karakter UTF-16
Tentu saja Anda mungkin harus menggunakan versi hex:
atau versi base64:
"Baris" pertama dari program ini menyatakan pengkodean UTF-16. Seluruh file adalah UTF16, tetapi interpreter Python selalu menginterpretasikan garis pengkodean dalam ASCII (itu adalah
#coding:UTF-16BE
). Setelah baris baru, teks UTF-16 dimulai. Ini hanya berarti diprint'<data>'.decode('zlib')
mana teks adalah versi kempes dari gambar ASCII target. Beberapa perhatian diambil untuk memastikan bahwa sungai tidak memiliki pengganti (yang akan merusak decoding).sumber
zip
bukannyazlib
dapat menyimpan satu char.zlib
daripadazip
sangat disengaja.zlib
adalah angka genap.C # -
354332Sedikit bermain golf:
sumber
string[] args
.Main
tidak perlu memiliki argumen, itu masih akan dikompilasi (berbeda dengan Java). Menghapus itu dan inliningx
membawa ini ke 333 sudah. Anda dapat menyimpan byte lain dengan menghapus spasi di antara argumen diDeflateStream
ctor. Anda dapat menggunakan pemeran untuk anggota enum:,(CompressionMode)0
yang membawa kita ke 324. Jadi saya berpendapat itu belum sesingkat mungkin ;-)bzip2, 116
Setelah melihat jawaban CJAM, saya pikir ini harus memenuhi syarat juga.
Saya ragu penjelasan lebih lanjut diperlukan. :)
sumber
C (gcc) , 190 byte
Cobalah online!
sumber
Vim, 99 penekanan tombol
mungkin golf
Penjelasan:
sumber