Tantangan: Hasilkan keluaran berikut menggunakan sesedikit mungkin karakter:
_ _ _ _ _ _ _
| | | | ___| | | ___ __ _____ _ __| | __| | |
| |_| |/ _ \ | |/ _ \ \ \ /\ / / _ \| '__| |/ _` | |
| _ | __/ | | (_) | \ V V / (_) | | | | (_| |_|
|_| |_|\___|_|_|\___( ) \_/\_/ \___/|_| |_|\__,_(_)
|/
Aturan dan batasan:
Anda tidak boleh menggunakan FIGLet atau alat serupa lainnya. (Kalau tidak,
figlet Hello, world!
akan menjadi solusi yang sepele dan cukup tak terkalahkan.)Program Anda harus seluruhnya terdiri dari karakter ASCII yang dapat dicetak - khususnya, titik kode 9 (TAB), 10 (LF) dan 32 - 126. (Jika bahasa / OS Anda membutuhkan jeda baris CRLF, Anda dapat menggunakannya sebagai ganti LF biasa.) Ya , sayangnya ini mendiskualifikasi bahasa apa pun yang memerlukan karakter non-ASCII (atau data non-tekstual) sebagai bagian dari sintaksnya.
Outputnya harus persis seperti contoh di atas. Anda dapat, bagaimanapun, menyertakan spasi putih tambahan di sekitar output jika Anda mau. Anda dapat mengasumsikan penspasian tab 8 karakter (atau pengaturan default bawaan platform yang Anda pilih, jika ada yang konsisten).
Ps. Untuk mengatur nominal, saya datang dengan solusi 199-char Perl. Saya belum akan mempostingnya, kalau-kalau ada orang yang datang secara independen. (Juga, ini agak murahan.) Tentu saja, ini seharusnya tidak mencegah Anda dari memposting solusi Anda sendiri, bahkan jika itu lebih lama.
Pembaruan: Sekarang han telah mengalahkannya dengan satu char, inilah solusi 199-char saya yang murahan:
use Compress'Zlib;say uncompress unpack u,'M>-I]BT$*`S$,`^]YQ=R:0,&_Z<DP?8@?WVQJ]E2J"%E$$@)R(/(/MCJ*\U!OM`Z#=5`4Y>6M=L\L%DMP&DB0V.4GQL&OOGB$4:%`4TT4!R8O-Z(^BTZWNV?>F86K:9+""-35*-LNC:T^D:_$#%^`";"DD0'
Ini sangat mirip dengan solusi DC (dan semua solusi berbasis zlib / gzip lainnya dalam berbagai bahasa), kecuali bahwa saya menggunakan uuencoding alih-alih base64 untuk teks yang dikompresi dan beberapa trik golf kecil lainnya.
Pembaruan 2 : Saya pikir sudah waktunya untuk secara resmi menerima pemenang. Tempat pertama adalah kode PHP konsolenfreddy , karena, bagaimanapun Anda menghitung karakter, ini adalah yang terpendek yang dikirimkan sejauh ini. Bahkan, menggabungkannya dengan aliran DEFLATE yang dioptimalkan dari kode 199-char Perl saya menghasilkan solusi 176-char yang lebih pendek:
<?=gzinflate(base64_decode("fYtBCgMxDAPvecXcmkDBv+nJMH2IH99savZUqghZRBICciDyD7Y6ivNQbwOg3VQFOXlrXbPLBZLcBpIkNjlJ8bBr754hFGhQFNNFAcmLzeiPotOt7tn3plq2mSwgjU1SjbLo2tPpGvxAxfgA"));
Namun, saya benar-benar berpikir bahwa Han layak mendapat penghargaan kehormatan khusus untuk menjadi begitu dekat tanpa menggunakan alat dekompresi pra-tertulis. Selamat untuk Anda berdua, dan tahun baru yang bahagia untuk semua orang!
sumber
Jawaban:
Stax , 137 byte
Jalankan dan debug itu
Ini berfungsi seperti ini.
0
diikuti oleh a1
diterjemahkan ke dalam karakter non-spasi.1
diganti dengan spasi.sumber
Perl 5.10 - 195
198202203karakterInilah entri yang tidak memerlukan pustaka di luar pencocokan regexp dasar. String yang disandikan adalah 131 karakter, dan kode untuk memecahkan kode dan mencetaknya membutuhkan 64 karakter (dengan asumsi tidak ada baris baru di akhir sumber). Idenya adalah untuk mewakili string 3-karakter umum dengan huruf kecil.
Encoder jauh lebih lama dan sayangnya tidak terlalu mudah dibaca saat ini. Ide dasarnya adalah menggunakan pemrograman dinamis untuk menemukan pengkodean terpendek untuk setiap baris, mengingat serangkaian penggantian string yang tetap. String substitusi pada baris terakhir dibangun dengan coba-coba, dan ada kemungkinan bahwa string substitusi lain mungkin mengarah pada program yang lebih pendek daripada di atas.
Satu trik di sini adalah bahwa beberapa pergantian lebih pendek dari 3 karakter: karena cara perl
substr
bekerja,x
digantikan oleh '_
' dany
oleh '_
'. Yang terakhir diperlukan karena\w
dalam pertandingan regex '_
', yang kemudian digantikan oleh '(_)
'.sumber
print
dengansay
say
Anda harus melakukanuse 5.010;
atau menjalankan skrip sebagai satu-liner denganperl -E 'script here'
. Yang pertama membuat kode lebih lama dan yang terakhir tidak sesuai untuk skrip multi-baris. Apakah saya melewatkan sesuatu?-E
dalam jumlah char.s''...'
alih-alih$_=q!...!
; hanya ingat untuk menghindari kutip tunggal. Dengan itu dansay
bukannyaprint
(dan meninggalkan baris baru terakhir), saya mendapatkan ini hingga 198 karakter.#
untuk jangka waktu yang lama dan mendapatkan solusi Anda hingga 190 karakter. Saya ingin tahu apakah pergi di bawah 184 karakter dimungkinkan - yang akan mengalahkan semua solusi zlib-kompresi sejauh ini.Brainfuck - 862 karakter:
sumber
[<---->---]
baris pertama. (Mungkin akhirnya akan selesai, tetapi saya tidak menunggu cukup lama untuk itu.)Python (2.x), 194 karakter
sumber
Javascript,
273265264 karakter:(
sumber
return
, -1 char :)Jawaban ini lebih panjang dari sekedar mencetak string; Namun, hanya untuk bersenang-senang, ini dia:
Python, 485 karakter βΊ
Karena saya memiliki salah satu representasi ASCII terpendek dari teks asli terkompresi, saya harus memiliki scrollbar terpanjang dalam kode saya! Ini kemenangan! :)
sumber
PHP,
194189 karakterIni pada dasarnya sama dengan jawaban Python dan Perl, sedikit lebih pendek
sumber
php -r'=...'
trick tampaknya tidak bekerja untuk saya, tapi Anda hanya bisa menggunakan<?=...
untuk 184 karakter. Juga, output Anda tampaknya memiliki ruang ekstra tempatr
danl
bertemu.-r'=..'
. apakahphp -r
tidak menghitung? Ini termasuk dalam 189char saya ...-r
Switch PHP adalah sesuatu dari kasus batas, karena, selain mengambil kode sebagai parameter dan menjalankannya, ia juga memodifikasi lingkungan parsing sedikit dibandingkan dengan menjalankan kode dari file. Saya cenderung menghitungnya sebagai 2 karakter tambahan - yang kebetulan membuatnya seimbang<?
.J,
167160 karakter (47 + 113)Pengajuan kompresi tanpa built-in lainnya. Menggunakan pengkodean panjang variabel yang cukup mudah, mengkodekan setiap karakter sebagai serangkaian 1 bit dan memisahkan karakter dengan 0 bit. String yang dikompresi adalah 113 karakter belaka.
sumber
Python (2.7.x), 218 karakter
Cukup mudah ... tidak terlalu senang dengan upaya ini.
sumber
Bash,
199196193 karakterCukup dekat...
EDIT: Turun ke 193!
sumber
gzip -d
denganzcat
.bash,
196192sumber
Perl, 230 karakter
Ini pada dasarnya sama dengan jawaban Python saya. Saya ingin melihat versi 199 karakter .. kedengarannya seperti sulap.
sumber
Perl,
294290 byte.String yang dikompresi sendiri, adalah
151130 byteIni tidak pendek, tetapi sangat menyenangkan untuk menulis.
sumber
Perl, 346 byte
String yang dikompresi sendiri, adalah 111 byte.
Mencoba memahami apa yang dilakukan oleh python
key= (0,(1,((((7,5),(6,(8,(11,(9,10))))),(4,3)),2)))
, saya akhirnya membuat versi perl yang terlihat sangat mirip.sumber
PHP 590
jelas, saya tidak mencoba untuk menang, hanya tertarik untuk mencoba skema kompresi lain, meskipun itu bahkan tidak bisa mengalahkan 302 solusi teks PHP sederhana sederhana dari hanya copy-paste
ini berfungsi sebagai bitmap pada 10 saluran
"golf"
dapat dibaca
sumber
Pylongolf2, 300 byte
Saya tidak dapat menemukan metode pengkodean yang berkelas, jadi saya mungkin tidak bersaing.
sumber
Golf-Basic 84, 325
Dengan asumsi kalkulator dapat mencetak backticks, backslash, pipa tunggal, dan garis bawah.
sumber
HTML + JS (223 karakter unicode)
Hanya untuk bersenang-senang:
NB: Anda harus menyimpannya dalam file HTML "UTF-8 with BOM".
sumber
PowerShell , 220 byes = skrip: 9 + arsip: 211
Cobalah online!
Skrip Powershell untuk membuat arsip
t
(lihat TIO):sumber