Tidak ada yang cukup yakin apa yang >:U
dimaksudkan untuk mewakili emoticon , tetapi banyak sarjana percaya itu terlihat seperti bebek yang marah . Mari kita asumsikan itu masalahnya.
Tugas
Diberikan bilangan bulat n antara 0 dan 3 inklusif, cetak atau kembalikan
quack
jika n = 0,
>:U
jika n = 1,
U U
> : U U
> U U
> : U U
UUU
jika n = 2, atau
>:U >:U
>:U >:U >:U
>:U >:U >:U >:U
>:U >:U >:U
>:U >:U >:U
>:U >:U >:U
>:U >:U >:U >:U
>:U >:U >:U
>:U>:U>:U
jika n = 3.
Anda dapat berasumsi bahwa input akan selalu valid. Seharusnya tidak ada ruang utama dalam output, tetapi jumlah ruang trailing apa pun baik-baik saja. Bebek (dengan kemungkinan pengecualian @cobaltduck) tidak memiliki toleransi untuk celah. Kode terpendek dalam byte menang.
Jawaban:
CJam,
1089085 bytePerhatikan bahwa beberapa karakter tidak dapat dicetak. Cobalah online!
Latar Belakang
Dua output pertama tidak dapat dimampatkan di CJam.
Mengompresi output terakhir sangat mudah. Setelah melepaskan semua linefeed, kita dapat membagi string yang dihasilkan pada kejadian
>:U
, dan menghitung panjang setiap string spasi yang dihasilkan.Itu menghasilkan array
yang dapat kita simpan secara efisien dengan mengubahnya dari basis 22 ke basis 269, menghasilkan digit
Karena setiap digit kurang dari 256 , kita dapat menyimpannya sebagai satu byte.
Akhirnya, mengompresi output ketiga menjadi lebih mudah jika kita memindahkan garis dan kolom:
Menghitung sekali lagi spasi antara karakter non-spasi, kita mendapatkan array
yang menjadi
ketika ditranskodekan dari basis 22 ke basis 269.
Bagaimana itu bekerja
sumber
:D
antara dua string.Java,
303286 byteDisimpan 17 byte berkat @VoteToClose!
Sebenarnya tidak dimaksudkan sebagai yang terpendek, saya hanya berpikir akan menyenangkan untuk mencoba di Jawa.
Membuat daftar variabel string yang mewakili string umum, lalu membuat array dari semua output, lalu mencetak yang benar.
Tidak Disatukan:
Ini adalah jawaban pertama saya di situs ini, jadi tolong beri tahu saya jika saya melakukan sesuatu yang salah.
sumber
D+A
danC+B
muncul cukup sering untuk ditayangkan lebih lanjut menjadi 2 variabel baru. Saya juga merasa bahwa menggunakan array dengan for loop mungkin bisa membantu, tapi saya belum tahu caranya ...05AB1E ,
162159157 byteKode
Sial, terlalu lama, tapi setidaknya itu sesuatu:
Cobalah online!
Penjelasan
Bagian pertama dari kode ada
">:U"V
, yang mengaturY
string itu. Setelah itu, kami hanya memeriksa apakah input sama dengan 3. Itu dilakukan diI3Qi
bagian. Jika sama, kami mencetak murai raksasa:N = 3
Pertama dimulai dengan
ð16×
yang hanya mendorong 16 karakter luar angkasa. Setelah itu, ada nomor7166b
. Ini mencakup">:U "
bagian itu, dengan sedikit bantuan dari Retina :). Saya menggunakan skrip ini untuk mengkonversi string ke angka biner. Setelah itu, kita sampai pada1ð:0Y:
bagian, yang menggantikan setiap1
karakter spasi dan setiap0
denganY
, yang telah ditetapkan>:U
. Setelah itu, kitaD
menggandakan string ini, menyimpannya dalamX
menggunakanU
danJ
menumpuk. Kami menghapus ini menggunakan,
, yang mencetak string penuh dengan baris baru. Semua yang lain setelah itu semua didasarkan pada prinsip yang sama. Pernyataan if berakhir pada detik}
.Konversi penuh dapat ditemukan di sini .
N = 2
Kami sekarang memeriksa apakah input sama dengan 2. Ini dilakukan pada
¹2Qi
bagian tersebut. Setelah itu, jika sama, kami mendorong karakter spasi 4 kali menggunakanð4×
. Setelah itu, kami mendorong" U U"
string dan menyimpannya menggunakan©
(ide secara terang-terangan dicuri dari Jelly: p). Kami kembaliJ
menumpuk dan mencetak ini dengan baris baru. Setelah itu, kami mendorong"> :"
tali, mengambil" U U"
menggunakan®
,J
oin stack danD
uplicate string ini dan mencetak kedua ini pada baris yang sama.Kuis singkat, apa yang akan ini lakukan:
" > "?®,
?Setelah mencetak string di atas, kita mendapatkan duplikat dari garis kedua wajah, dan mencetak ini (karena itu sama dengan baris ke-2).
Bagian terakhir yang dicakup oleh kasus ini adalah:
N = 1
Yang ini lebih mudah untuk dijelaskan:
N = 0
sumber
Vitsy ,
172171159 byteYa ampun. Jika saya ingin sesuatu untuk memamerkan kekuatan metode, saya mendapatkannya.
Cobalah secara Online!
Cara kerjanya adalah dengan memanggil berbagai metode. Penjelasannya di bawah ini:
Kode ini konyol. Bentuk verbose adalah:
sumber
JavaScript (ES6), 163 byte
Penjelasan
Menggunakan kompresi masuk-ke saya dengan JavaScript: enkode run-length. Angka-angka
1
untuk9
memetakan ke banyak ruang,0
peta ke wajah bebek yang marah, dan karakter lain tetap sama.sumber
Japt,
1161051029996 byteBerisi yang tidak patut dicetak. Uji secara online!
Bagaimana itu bekerja
Dua string pertama tidak dikompresi sama sekali. Yang ketiga dikompres hanya dengan mengganti setiap spasi dengan panjangnya, lalu
" U3U"
dengan"z"
. Yang terakhir lebih kompleks:>:U
dengan1
.191\n
dengan4
. (4
tidak digunakan di bagian lain dalam string.)10
-255
, atau0A
-FF
) ke karakter dengan kode karakter tersebut.String yang dihasilkan hanya sepanjang
2119 byte, tetapi dekompresi membutuhkan31lainnya29 lainnya.Setelah mendekompresi string, kita cukup mengambil item pada posisi
U
, input. (Array diatur[0,3,2,1]
karena ada bug yang membuatnya dihitung dari akhir array bukan dari awal.)sumber
MATL ,
283182 byte101 byte disimpan berkat @Adnan!
Ini menggunakan angka desimal untuk menyandikan indeks
0
...3
ke empat karakter untuk kasus 2 dan 3. Angka desimal mungkin dapat dikompresi menggunakan pengkodean basis-64, tetapi dukun!Untuk kasus 3, trik yang sangat bagus yang disarankan oleh @Adnan digunakan: mendefinisikan urutan biner untuk menyandikan setiap baris, di mana
0
dan1
sesuai dengan ruang dan>:U
masing - masing.Cobalah online!
sumber
1
spasi dengan dan0
dengan>:U
string. Saya tidak tahu apakah itu akan membantu.Cinnamon Gum, 76 byte
Non-bersaing sejak Cinnamon Gum dibuat setelah tantangan ini.
Cobalah online.
Penjelasan
Byte pertama
l
menentukan mode: dalam hal ini memberitahu Cinnamon Gum untuk masuk ke mode tabel pencarian. Cinnamon Gum kemudian mendekompres sisa string (yang telah dikompresi denganzopfli --deflate
) menjadi ini:Kemudian dibagi
;
, menempatkan setiap pasangan nilai kunci (dengan&
sebagai pembatas) dalam kamus, dan outputdictionary[input]
.sumber
JavaScript ES6,
232223203188 byteDisimpan
2944 byte berkat produk ETH!Uji itu!
Tampilkan cuplikan kode
sumber
1
dan0
s dibuat menjadi nomor trinary?r+g+g+g+r
keg+g+g+r
dan menyesuaikan string sesuai.GML, 265 byte
Port jawaban @ kittycat3141 yang sangat baik, dengan saran untuk golf lebih lanjut dengan dua variabel baru (yang saya beri nama G dan H) oleh @VoteToClose. Saya juga berhasil mempersingkat lebih lanjut dengan sintaks GML yang relatif longgar.
sumber