Tantangan sederhana: cobalah untuk menghasilkan teks berikut dalam beberapa byte yang Anda bisa:
the answer
toli fetheuniv
ersea nde ver
ything the ans
wer tol ife the
uni ver sean
dev ery thin
gth ean swer
tolifetheuni ver
seandeveryth ing
the ans wer
tol ifetheuniver
sea ndeverything
Gambar aslinya berisi 332 karakter.
Aturan
- Tidak ada input atau input yang tidak digunakan.
- Output dapat dalam format apa pun yang wajar (string, daftar string, matriks karakter, dan sebagainya).
- Anda dapat menggunakan huruf besar alih-alih huruf kecil untuk menggambar jika Anda mau.
- Trailing spasi putih dan baris baru diizinkan.
- Ini adalah kode-golf , jadi semoga program / fungsi terpendek untuk setiap bahasa menang!
Catatan
- Ini telah diidentifikasi sebagai kemungkinan duplikat dari Kami tidak asing dengan kode golf, Anda tahu aturannya, dan saya juga . Pertanyaan itu adalah tentang mencari dan mengganti teks. Di sini Anda harus menggambar bentuk menggunakan teks yang diberikan, dan setidaknya dua jawaban saat ini menunjukkan bahwa bahasa golf dapat mengalahkan algoritma kompresi biasa dalam kasus ini.
42
dengan*
karakter, dan kemudian menggantinya dengan teks, yang sangat pas. Saya tidak perlu memodifikasi gambar asli agar kalimatnya pas. Kebetulan?Jawaban:
Python 3 ,
224 220 219 215 211194 byte15 byte:if(j%27<1)*j
bukanif j*(j%27<1)
dan pernyataan cetak yang disederhanakan.7*'0'
Cobalah online!
Penjelasan:
Menggunakan kompresi base-36 untuk mengompresi angka biner ini (tidak termasuk baris baru)
Kami pada dasarnya memiliki dua counter
i
danj
. Pada pertemuan1
kami mencetak spasi; Jika0
tidak ditemukan, kami mencetak huruf berikutnya dari string dan meningkatkani
.j
meningkat untuk masing-masing0 or 1
. Kami juga mencetak baris baru kapan pun diperlukan, yaitu ketikaj%27<1
menjadi benar.sumber
if j*(j%27<1):
keif(j%27<1)*j:
Python 2 ,
235218213 byteCobalah online!
Beralih ke basis 36 yang disandikan untuk posisi surat sebagaimana diisyaratkan dalam pertanyaan mereka.
Mengganti setiap karakter satu per satu.
Sunting: Sepertinya officialaimm menggunakan base 36 sebelum saya.
sumber
Bubblegum , 125 byte
Cobalah online!
sumber
05AB1E ,
837974 byte-4 byte terima kasih kepada Erik the Outgolfer
Menghasilkan daftar string untuk menyimpan byte.
Cobalah online!
Penjelasan
2ÖH₆Ôn₅Ò\ÊÑĆ¸Ý¾*£„ÔûC∞qΘœ™‚¹µ—₃₄fm
adalah representasi basis 255 dari angka desimal:Yang mengkodekan menjalankan
1
s dan0
s masing-masing, bahkan indeks menjadi1
s dan tidak rata indeices0
s. Ini mengevaluasi ke nomor biner:Kode
sumber
"ÔAo îιË3š1ĆRÕ₃FWš{ÓÛÏ.!XµM§&¶ñD°3PŸ{óNι2Ðbмh"253ö
dengan•—."Ôq‚Ā0Ál0j¿«ªžé¨0õ₄7“Ÿ!½ÏiæÆø-δq–Å05q½Yñá+•
untuk -4.•
:)Python 2 ,
220 213212 byte-1 byte dengan beralih
()*4
untuk%39
dari @officialaimmCobalah online!
Ini adalah pendekatan yang berbeda dari jawaban Python lainnya. Saya menggunakan pengkodean
hexbase-36 (disimpan 7 byte) dari pengkodean gambar RLE-style-PNG-stylegambar (string angka yang menunjukkan jumlah piksel berulang berurutan).String digit adalah :
Kemudian saya mengulangi angka-angka itu dan secara bergantian mencetak angka atau karakter dari palet ('theanswer ...'). Ketika lebih dari 9 karakter diulang, saya cukup menambahkan 0 dan sisanya.
sumber
"theanswertolifetheuniverseandeverything"[w%39]
TIOSOGL V0.12 , 74 byte
Coba Di Sini!
sumber
Izinkan saya untuk menjawab pertanyaan saya sendiri ...
Arang ,
140 126112 byteCobalah online!
Di sini Anda memiliki tautan ke versi verbose terdekat.
Penjelasan (lihat versi verbose untuk detail):
)%*(+&(+)''%'%'('%'%&%#%'%'%%%$%-&%%%%+&&%&%)&(.&%*.%%2%'%(%)%'.)%'.
String (68 byte, 48 byte dikompresi) adalah representasi dari RLE-encoding gambarnya. Setiap kode char minus 34 adalah jumlah spasi (posisi genap) atau jumlah karakter teks (posisi ganjil) untuk dicetak secara berurutan.gtheanswertolifetheuniverseandeverythin
string (39 byte, 27 byte dikompresi) setiap kali karakter non-spasi putih perlu ditulis. Ketika saya memeriksa panjang daftar untuk mendapatkan karakter berikutnya dan daftar itu dimulai dengan satu elemen, karakter terakhir dari string ditulis di posisi pertama.Ucapan Terima Kasih
sumber
Assign(Minus(1, c), c);
maka Anda bisa menggunakannyaif (c) { ... } else Print(" ");
.for (68)
danAtIndex("...", i)
kemudian Anda dapat menggunakannyaModulo(i, 2)
dan Anda tidak perluc
sama sekali.if (Not(Modulo(Length(PushOperator(u, w)), 27)))
maka Anda juga tidak perlua
.AtIndex
melakukan otomatisModulo
jadiModulo(b, 39)
bisa adilb
.u
adalah variabel standar yang hanya berupa array kosong (menghemat penggunaanA⟦⟧υ
). Setiap kali Anda mendorong sesuatu ke dalamnya, panjangnya bertambah 1. Ini lebih pendek daripada penugasan eksplisit untuk penambahan.JavaScript (ES6),
207205203 byteMengembalikan array string dengan beberapa spasi tambahan.
sumber
Retina , 183 byte
Cobalah online! Penjelasan: Tahap pertama menambahkan pengkodean RLE dari bitmap sel dan teks, yang kemudian diduplikasi oleh tahap kedua ke panjang yang benar, sedangkan tahap ketiga menerjemahkan pengkodean RLE. Tahap keempat kemudian memindahkan teks ke dalam sel.
sumber
Jelly , 83 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Tambahkan ++ , 1398 bytes
Cobalah online!
Sepertinya hardcoding itu adalah cara terpendek (setidaknya di Add ++)
sumber
Vim, 239 penekanan tombol
Linebreak ditambahkan untuk "keterbacaan"
Penjelasan
Baris pertama menarik
life, the universe and everything
dari halaman bantuan, yang satu byte lebih pendek dari sekadar mengetiknya. Itu kemudian mengubahnya menjadi ini:Baris kedua memecah string menjadi:
Dan kemudian baris terakhir membuat indentasi untuk membuat:
sumber
Jelly , 76 byte
Cobalah online!
sumber
Retina , 185 byte
Cobalah online!
sumber
JavaScript, 215 byte
solusi berdasarkan guest44851
sumber
Ruby , 216 byte
Cobalah online!
Penjelasan Mirip dengan solusi Python tapi saya menggunakan Run Length Encoding sebelum mengkonversi ke basis 36. Jadi string data hanya 54 karakter, bukan 68.
Tapi itu masih berakhir lebih lama dari semua, semoga bisa bermain golf lebih lanjut.
sumber
Port jawaban Arang saya :
C # (.NET Core) , 229 byte
Cobalah online!
sumber
C (gcc) ,
220219217213210 byte-1 byte berkat ceilingcat
-3 byte terima kasih untuk Jerry Jeremiah
Cobalah online!
sumber
JavaScript,
265237219 byteBeberapa byte mati berkat @tsh.
JSFiddle
sumber
join
Pyth , 121 byte
Ini berisi terlalu banyak byte yang tidak bisa saya tampilkan di TIO, jadi inilah hexdump:
Cobalah online!
Anda dapat menambahkan panggilan ke
wc
atauxxd
dalam skrip bash untuk melihat panjang byte atau hexdump yang saya buat di atas.Menariknya, program ini menunjukkan bug minor (?) Di Pyth. Setiap carriage return byte (0x0d) dibaca sebagai byte baris baru (0x0a) saat dalam string literal. Ini memaksa saya untuk menambah 6 byte:
X ... ]T]13
untuk mengganti yang salah dengan yang tigabelas.Kalau tidak, ide di balik kode ini cukup sederhana: catat setiap posisi tempat dijalankannya spasi putih. Lalu, pasangkan masing-masing indeks tersebut dengan jumlah spasi dalam proses itu. Kemudian, buat kembali string asli dengan mengulangi frasa empat kali, kemudian masukkan di lokasi yang benar. Jika jumlah spasi yang dicatat adalah nol, sebagai gantinya baris baru dimasukkan.
sumber
Java (OpenJDK 8) ,
258252251 byteCobalah online!
Ini implementasi yang agak naif. Pertama topeng, untuk karakter yang dicetak, lalu berguling teks sampai selesai.
sumber
int[]{16515968,33489856,x=58950624,x+16,x-40,31458204,7865230,1966983,462847,233471,117670784,x=134185856,x}
.Javascript, gambar perkiraan. 319 byte
^ untuk apa nilainya, tidak terlalu banyak, tetapi sebelum saya menghapus kode gagal.
sumber