Dalam tantangan ini, tujuan Anda adalah menampilkan lirik ke Daft Punk's Harder, Better, Faster, Stronger. Secara khusus, tampilkan teks ini:
Work It
Make It
Do It
Makes Us
Harder
Better
Faster
Stronger
More Than
Hour
Our
Never
Ever
After
Work Is
Over
Work It
Make It
Do It
Makes Us
Harder
Better
Faster
Stronger
More Than
Hour
Our
Never
Ever
After
Work Is
Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder, Make It
Do It Faster, Makes Us
More Than Ever, Hour
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour Af-
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour Af-
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour Af-
Our Work Is Never Over
Work It Harder
Make It Better
Do It Faster Makes Us Stronger
More Than Ever Hour
Our Work Is Never Over
Work It Harder
Do It Faster
More Than Ever
Our Work Is Never Over
Work It Harder
Make It Better
Do It Faster
Makes Us Stronger
More Than Ever
Hour After
Our Work Is Never Over
Output Anda mungkin memiliki baris baru atau spasi spasi tambahan.
Metode kompresi bawaan tidak diperbolehkan.
Ini kode golf, jadi kode terpendek menang!
code-golf
kolmogorov-complexity
TreFox
sumber
sumber
HQ9+Daft-Punk
itu yang mencetak ini ...Jawaban:
Ruby,
308303Algoritma
Intro lagu: Ambil 16 token, dan cetak dua kali (yang terakhir berisi baris baru tambahan)
Ayat: Riffle token bersama-sama untuk membuat ayat, 4 token per baris, dalam urutan berikut:
Dalam beberapa baris, token terakhir dihilangkan, atau ditukar dengan
Af-
. Baris-baris ini dicatat dengan 1 bit pada angka ajaib 0x744447 = 7619655.Dalam tiga baris, token kedua dari belakang juga dihilangkan, yang mana
i%51/48==1
Tanda baca di tengah baris dapat menjadi salah satu
' '
', '
'\n'
. Ini dikodekan dalam angka 02220010000200100010001001110010001000100010001000100010 (basis 3) = "l4yq62lhgnizb0kfu" (base 36.)Dengan komentar
sumber
Perl,
316309308307 byteSumber harus dikodekan sebagai Latin-1.
Penjelasan
Kami mulai dengan lirik aslinya. Untuk singkatnya, mari kita asumsikan demikian
Sekarang kami menemukan substring pendek (≥ 3 karakter) yang sering terjadi. Dalam hal ini,
"Work "
terjadi dua kali. Kami mengganti setiap kemunculan dengan karakter 0xE1. Kami juga mengingat string yang diganti dalam array:Substring berikutnya
"Harder"
,, diganti dengan 0xE0. Thesubsts
Array tumbuh ke arah depan:Ini berlanjut untuk total 34 iterasi sampai kita mencapai karakter 0xC0.
Sekarang kita menggabungkan
substs
penggunaan karakterb
(yang tidak muncul dalam lirik) sebagai pemisah. Dalam kode Perl,substs
array disimpan di@c
(menggunakan kata kuncib
untuk menentukan displit
mana harus membelah), lirik baru campur aduk ada$e
, dan kode hanya membalik 34 pengganti.sumber
Sprects , 302 byte
Saya baru saja membuat bahasa ini dan saya memutuskan untuk mengujinya dengan tantangan ini. Ini menghasilkan
\n
bukan baris baru karena output ke HTML, tetapi penerjemah ditulis dalam JavaScript. Karena itu, inilah versi dengan<br>
s bukannya\n
s:sumber
er
token tunggal?GolfScript (275 byte)
Ini berisi karakter ASCII yang tidak dapat dicetak, jadi inilah hexdump:
sumber
Ruby - 643 byte
Sunting: Golf turun dari 899 hingga 830.
Sunting2: 830 -> 755.
Sunting3: 755 -> 684.
Sunting4: 684 -> 670.
Sunting5: 670 -> 643.
Saya belum pernah menggunakan ruby, jadi saya yakin ini bisa diturunkan, ini hanya upaya:
sumber
JAVA 518 / 490Bytes
Edit: tidak diperlukan 7 Bytes dan menambahkan versi Java 6 dengan trik {} trik Edit2: Penjelasan diperluas
java6:
Terima kasih kepada @Chris Drost untuk petunjuknya dengan banyak "ER" di teks. String Pertama adalah tabel pencarian, bagian kedua menggunakan huruf kecil (yang merupakan blok berurutan dalam ascii) sebagai indeks ke dalam tabel dengan mengurangi nilai ajaib a dari nilai.
Bagian kedua terdiri dari beberapa String dengan panjang yang berbeda (yang pendek adalah bagian umum yang dibagikan di antara banyak ayat) yang dirakit menjadi yang panjang sebelum perulangan melalui karakter terjadi
sumber
l
dan gunakan String yang berisi semua#
langsung dalam untuk-setiap loop, dan ubahchar
dalam untuk-setiap loop keint
:for(int o:r.toCharArray())System.out.print("\n#, #Work#Make#Do#Makes Us#Hard#Bett#Fast#Strong#More#Than#Hour#Our#Nev#Ev#Aft#Af-#Work Is#Ov# #er# It".split("#")[o-97]);
Yang menghasilkan -5 byte / 513 byte .JavaScript ES6,
440 byte438 byteIni adalah sekelompok optimisasi kompresi sederhana. Sebagai one-liner:
Ini ditulis sebagai skrip yang dapat dieksekusi melalui
iojs --harmony_arrow_functions file.js
; Anda dapat mencukurconsole.log()
overhead tergantung pada arti dari "output lirik".Penjelasan
Setelah melakukan bagian luar
.replace()
, kode yang diumpankan keeval
adalah:Pujian
.repeat
fungsi baru yang mengkilap ini untuk string, menghemat 2 byte.sumber
b.repeat(7)
sebagai gantinyab+b+b+b+b+b+b
PowerShell, 659 Bytes
Membuat array kata kunci
$a
, lalu mengkodekan lirik menggunakan serangkaian string numerik yang dikirim ke dalam satufor
lingkaran. Pengulangan mengambil dua digit substring, menarik kata kunci yang sesuai dari$a
array, dan akhirnya-join''
menggabungkan semuanya.Saya pikir ini tentang sebagus metode ini dapat dilakukan, karena setiap kali saya mencoba bermain golf lebih lanjut (misalnya, mengganti
040008
dengan variabel baru), ternyata menjadi beberapa byte lagi karena panjang substring tidak cukup untuk akun untuk semua kutipan tambahan yang dibutuhkan. Meskipun ada beberapa jawaban baru yang diposting sejak saya mulai yang memiliki metode yang sedikit berbeda yang sepertinya lebih pendek di PowerShell (seperti menggunakan karakter ASCII untuk menyandikan, daripada dua digit, mungkin?), Saya akan tetap menggunakan yang ini.Edit - lupa pengodean pengganti yang saya gunakan:
sumber
GolfScript , 251 byte di- golf
Cobalah online!
Dihilangkan
[]
kode yang tidak perlu dan disederhanakan sesuai. Berubahi
danj
ke@
dan^
untuk mengizinkan penghapusan spasi putih. Penempatan pertama dari' '
variabel yang ditugaskan|
untuk menghindari pengulangan tiga karakter yang sama.GolfScript , Versi pertama yang bekerja, 262 byte
Cobalah online!
Ini adalah port jawaban Ruby saya ke dalam skrip golf menggunakan algoritme dasar yang sama: mengeluarkan daftar token dua kali, lalu mengacaknya menjadi ayat-ayat dan membangun baris demi baris ayat, menyesuaikan kekhasan masing-masing.
Ada beberapa perbedaan. Angka untuk tanda baca garis tengah yang benar ada di basis 81 (mudahnya ini membuat satu karakter ascii dicetak per ayat); dan angka yang mengkode apakah akan mencetak token terakhir atau tidak dimodifikasi karena indeksnya
55-i
bukani-28
(yang terakhir ditemukan menyebabkan masalah dengan kekuatan negatif menghasilkan bilangan pecahan bukannya memotong ke bilangan bulat.)Berkomentar
sumber
" "
) dalam variabel. Juga, jangan muncul setelah menetapkan variabel karena kebiasaan.51
yang saya lewatkan. Saya akan memperbaikinya nanti, dan mungkin mencari cara lain untuk mempersingkatnya. Ini adalah program skrip golf pertama saya, dan saya menemukan mereka sangat sulit untuk dibaca ketika simbol digunakan sebagai variabel, maka saya juga meninggalkan versi pertama saya yang bekerja 262-byte setidaknya untuk saat ini.Python - 1056 Charaters
Masih ada ruang untuk perbaikan dengan nama variabel, tapi ini awal.
sumber
Ruby, 486 Bytes
sumber
Ruby, 483 byte
Bekerja dengan menyandikan setiap kata yang digunakan dalam lagu ke satu huruf, mengalikan beberapa bait, lalu mengganti huruf yang disandikan dengan lirik yang sebenarnya. Koma, spasi dibiarkan apa adanya.
u
adalah baris baru.sumber
fuc b gud
PHP, 434 Bytes
Cobalah online!
sumber