Dalam sesedikit mungkin karakter Unicode, cetak yang berikut (144 karakter):
1, 2, 3 o'clock, 4 o'clock rock,
5, 6, 7 o'clock, 8 o'clock rock,
9, 10, 11 o'clock, 12 o'clock rock,
We're gonna rock around the clock tonight.
Anda tidak boleh menggunakan angka apa pun dalam kode Anda, kecuali digit 1
.
11
. Apakah instruksi tersebut berarti Anda hanya dapat menggunakan angka 1 atau angka 1?1
. Saya tidak menentukan berapa kali, jadi fakta bahwa orang telah menggunakan11
celah pintar, dan saya semua untuk itu.Jawaban:
Javascript -
140132Faktanya, 11 itu terbuat dari dua angka 1, biarkan aku melewati aturan.
Penjelasan
K +++ s sama dengan (k ++) + s, jadi ia menambahkan k pertama ke x, lalu menambah k dan kemudian menambahkan s ke x. Proses ini akan dilakukan tiga kali sebelum menambahkan kalimat terakhir.
sumber
k+++s
harus dilakukan Apakah itu(k++) + s
atauk + (++s)
atau(k++) + (++s)
?x+=k+++s+k+++s+k+++t+s+k+++t+u
alert
lebih pendek dariconsole.log
. Menggunakan tampilan otomatis dari perhitungan terakhir di konsol seperti curang.C # - 186
Bahasa golf terbaik atau bahasa golf terbaik?
sumber
i++ +
bitWriteLine
->Write
, dan menggunakan literal\n
di akhir string.Brainfuck (1574)
Bukan penyerahan serius, tapi ikuti aturan.
Dapat diuji di sini .
sumber
#RESPECT
Ruby, 100
sumber
s="%i, %i#{", %i o'clock"*-~1} rock,\n"
(ganti\n
dengan linebreak literal). Ide bagus untuk digunakan$$
!r=-~1
inline, Anda dapat menggunakan"..."*-~r
alih-alihs+s+s
, memungkinkan Anda untuk membatalkan tugass
.Perl 123
Ekspresi reguler cocok
(
,)
dan*
. Saya menggunakan fakta bahwa kode ASCII(
adalah 40,)
adalah 41 dan*
42.The
r
bendera ekspresi reguler memungkinkan "di tempat substitusi" dane
bendera memungkinkan evaluasi kode (mirip denganx.replace(/.../, function(m){...})
di JavaScript).(clock,rock)
adalah array dari dua "kata kosong".$&
adalah kecocokan saat ini dari persamaan reguler danord$&
merupakan nilai ASCII.Masked oleh 3 atau
1+1+1
nilai ASCII sekarang 0, 1 dan 2, jadi saya bisa menggunakannya untuk mengambil elemen array yang sesuai. Karena 2 berada di luar array, operator "korsleting"||
mengevaluasi++$i
. Pada pertandingan pertama$i
yangundef
jadi incrementing itu saya mendapatkan 1, kemudian 2 dan seterusnya ...Dengan kata-kata sederhana. Ini menggantikan
*
dengan kejadian saat itu,(
dengan "jam" dan)
dengan "batu".sumber
Bash + coreutils, 120 ASCII, 92 Unicode
ASCII:
Unicode:
base64 disandikan versi Unicode (dalam kasus rendering unicode kacau):
sumber
eval
bukannya pipa kebash
ataush
?$r
s!Brainfuck, 1299
Bleuuuurgh . Itu mengerikan. Saya tidak tahu mengapa saya melakukan ini, sepertinya cukup mudah pada awalnya. Script Brainfuck pertama dan terakhir. Coba di sini.
Dengan bantuan dari pembuat kode otomatis , saya dapat menulis skrip yang menggunakan kembali sebagian besar karakter alih-alih menghasilkan masing-masing dari awal. Hanya 275 karakter lebih pendek dari yang dihasilkan secara otomatis, diposting di sini .
Outputnya tidak diakhiri baris baru.
Saya mungkin akan memberikan sedikit penjelasan nanti. Intinya, setiap garis panjang yang bukan sesuatu seperti
>>>>>>>
atau<<<<<<<
atau>>.>>.>>.>>.
menghasilkan karakter atau serangkaian dari mereka.sumber
Lua -
217164154151149143Dimodifikasi yang lama untuk menggunakan loop sebagai gantinya, menyimpan banyak karakter. Terima kasih kepada TeunPronk karena membantu saya mencukur 10 karakter lain dan kepada WilliamBarbosa karena mencukur 3 karakter lainnya. 2 karakter lagi dapat disimpan dengan menggunakan variabel
k
. 6 karakter lagi disimpan dengan menghilangkan variabelr=" rock,"
karena digunakan sekali.Tidak disatukan,
sumber
j
dank
.O
, menghapusO
dariR
, menempatkan ruang diR
dan menggantiR
denganO,R
di Andaio.write
:)io.write
dalam variabel (f=io.write
) dan mengurangi ini lebih jauhCJam - 90 ASCII / 54 Unicode
ASCII:
Unicode:
Cobalah di http://cjam.aditsu.net/
sumber
Python (123)
PYG (112)
sumber
Brainfuck - 680
coba di sini: ideone.com/Wi9ftB
seperti yang saya janjikan, ini versi yang lebih baik. otakku terasa seperti .. ooh jadi dari situlah nama itu berasal.
PENJELASAN: (karena tidak dapat dipelihara dan saya tidak ingin melupakan cara kerjanya)
pertama Anda harus memilih tata letak data terbaik untuk tantangan ini. saya datang dengan
-4 outmost loop -3 newline char -2 space -1 numbers 1 lowercase #1 2 lowercase #2 3 comma, apostrophe, period 4 condition (outmost loop < 3) 5 inner loop 6 second inner loop
Kami harus yakin ini optimal kecuali akan ada terlalu banyak shift (yang mana Anda harus mengatur ulang tata letak)
Setelah itu saya menggunakan loop 4x9x3 untuk mengatur nilai awal untuk baris baru, angka, dua huruf kecil dan koma. (semua kode ascii yang lebih kecil mendapat 4x9 = 36 dan dua huruf kecil mendapat 4x9x3 = 108, lalu saya menambahkan dan mengurangi beberapa untuk mendapatkan nilai sebenarnya)
Ketika preset selesai, kode memasuki loop terluar yang berputar 3 kali. Saya menjelaskannya dengan pseudocode.
Ketika bagian ini selesai saya hanya perlu mencetak baris terakhir. Tetapi kami memiliki huruf kapital W yang harus diproduksi tanpa menggunakan terlalu banyak karakter. Pada titik ini kita ada di sini:
jadi saya menempatkan [-3] 4 kali ke [-1] dan mengurangi 3 untuk mendapatkan 87 (W):
>[>>++++<<-]>>---.
kemudian hapus
[-]
dan pindahkan [-2] ke lokasi ini [-1] sehingga ruang akan dekat dengan huruf kecil.
<[>+<-]
Setelah itu baru cetak hurufnya. huruf kecil # 1 untuk bagian bawah 97-107 dan huruf kecil # 2 untuk wilayah di atas.
sumber
JavaScript,
111107 karakter, tanpa menggunakan nomor apa pun.Jalankan cuplikan ini di konsol JS browser Anda:
107 (terinspirasi oleh http://xem.github.io/obfuscatweet/ ditambah jawaban JS lainnya):
111 (hanya mengemas semua string dan menghapus eval sekitar):
sumber
C - 145 - coba saya
C - 172 - coba saya
sumber
#include <stdio.h>
menggunakannyaprintf
?main(){...
PHP - 125
129Versi 1 (129)
Versi 2 (125)
Versi bersih:
sumber
Perl,
114111110108110:
111:
114:
sumber
C ++
261203Mengedit upaya pertama saya; itu bekerja ketika saya pertama kali mengujinya, tetapi itu tampaknya hanya kebetulan; peningkatan pasca dalam aliran adalah "perilaku tidak terdefinisi", dan melakukan hal-hal aneh (termasuk skrining biru Windows 7!) ketika saya mencoba menjalankannya kembali. Saya pikir menggunakan printf sebagai ganti std :: cout dapat digunakan dengan penambahan selisih untuk mendapatkan program yang lebih pendek.
Diedit lagi, turun ke 231 dengan menerapkan kembali loop. Diedit lagi, sekarang ke 203 ... #define itu tidak semuanya berguna dalam versi perulangan.
Bagi mereka yang bertanya-tanya bagaimana C ++ dapat menjalankan fungsi "m", titik masuk dapat didefinisikan sebagai fungsi apa pun hanya dengan opsi kompiler, karena dapat mengatur semua fungsi menjadi stdcall; Saya menggunakan kedua sakelar saat mengkompilasi di atas. Jika Anda tidak menyukai titik entri yang didefinisikan ulang, tambahkan 3 ke jumlah karakter saya.
sumber
m()
. Namun Anda dapat menghapusvoid
dan menyimpan 5 karakter (atau 2 jika Anda menyebutkan metodemain
)Swift -
136134sumber
Jawa, 228
Solusi hardcoded mungkin lebih pendek.
sumber
1+1+1
adalah 9 karakter lebih pendek dari"two".length()"
. Dan apakahString[] a
perlu?Befunge-98 (
402268)Sekarang kehancuran!
sumber
,,:,1+
,a11+/a*b1111+++-+w:,
, karakter liar di bawah jalur utama kode ... khas Befunge. Sebagian besar penerjemah online mengalami masalah dengan panjang garis (itu melebihi batas), apakah Anda tahu ada yang tidak keberatan?Groovy -
140139 karakterGolf, dipengaruhi oleh jawaban William Barbosa :
Tidak Disatukan:
sumber
Mathematica - 153
sumber
C ++ 252
sumber
P(", ")
untukQ
menghemat 2 karakter.N
danR
hanya muncul sekali: akan lebih baik untuk menyejajarkan mereka daripada membuat makro.#include<iostream> #define P std::cout<<++i<< #define C" o'clock" #define F P", ";P", ";P C<<", ";P C<<" rock"<<std::endl; int i;main(){F F F std::cout<<"We're gonna rock around the clock tonight.";}
Java (v2) -
250241232 karakterIni adalah program yang berjalan lengkap, dipengaruhi oleh jawaban William Barbosa .
Golf:
Tidak Disatukan:
sumber
ECMAScript6 -
136135Bahkan tidak menggunakan
1
digit yang diizinkan :Diuji di konsol Firefox.
sumber
PowerShell,
123118109Setelah awal yang mengerikan (167), saya menyingkirkan beberapa idiom yang bahkan tidak saya butuhkan dan setidaknya membuatnya lebih pendek daripada referensi.
sumber
Haskell -
138137 karakterSebagai program mandiri:
Sunting: Saya dulu memiliki fungsi pembantu o digunakan untuk mendefinisikan s oleh
tetapi ternyata membutuhkan 1 karakter ekstra. Apakah ada cara untuk mengompres semua "jam" / "rock" s / "ock"?
sumber
JavaScript, 140
Saya membuat string seperti "x, x, x jam x batu jam, \ n ..." Lalu saya mengganti "x's" dengan angka.
sumber
PHP 150
Tidak ada angka, termasuk 11 yang tidak akan menjadi dua 1 yang saling menempel, tetapi nilai angka sebelas.
sumber
PowerShell,
156140136129127Tidak Disatukan:
sumber
$i++,$i++,"$(($i++)) o'clock","$(($i++)) o'clock rock,"-join', '
dalam loop.Cobra - 193
sumber