ร็อคตลอดเวลา


46

ในอักขระ Unicode น้อยที่สุดให้พิมพ์ดังต่อไปนี้ (144 ตัวอักษร):

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.

คุณไม่ต้องใช้ตัวเลขใด ๆ 1ในรหัสของคุณยกเว้นหลัก


1
มีช่องว่างที่ส่วนท้ายของ 3 บรรทัดแรกจำนวนนั้นนับหรือไม่
aditsu

@aditsu: สิ่งเหล่านี้เกิดจากการแก้ไขเนื่องจาก m.buettner ลืมที่จะลบออกเมื่อทำการแก้ไขกลับไปยังบล็อครหัส ฉันจะแก้ไขสิ่งนี้ แต่การแก้ไขถือว่าน้อยเกินไป
Wrzlprmft

1
ฉันลบออกตอนนี้
aditsu

4
11ใช้หลายคำตอบ การเรียนการสอนหมายความว่าคุณสามารถใช้หมายเลข 1 หรือหลัก 1 เท่านั้น
mfvonh

10
@mfvonh 1ผมบอกว่าคุณสามารถใช้ ฉันไม่ได้ระบุกี่ครั้งดังนั้นความจริงที่ว่าผู้คนใช้11เป็นช่องโหว่ที่ฉลาดและฉันก็ทำเพื่อมัน
rybo111

คำตอบ:


48

Javascript - 140 132

k=1,s=", ",t=" o'clock",x="";while(k<11)x+=k+++s+k+++s+k+++t+s+k+++t+" rock,\n";alert(x+"We're gonna rock around the clock tonight.")

ความจริงที่ว่า 11 นั้นทำจากสองของ 1 ให้ฉันผ่านกฎที่ฉันเดา

คำอธิบาย

k +++ s เท่ากับ (k ++) + s ดังนั้นมันจึงเพิ่ม k ก่อนเป็น x จากนั้นเพิ่มค่า k แล้วเพิ่ม s เป็น x กระบวนการนี้จะทำสามครั้งก่อนที่จะเพิ่มประโยคสุดท้าย


ทำไมคุณ {} ? ไม่จำเป็นในขณะที่คุณมีเพียง 1 การเรียนการสอน แต่ตามที่คุณต้องใช้ ";" คุณจะชนะเพียง 1 ถ่าน ^^
แอนทอนเอสเตฟ

3
อะไรk+++sทำอย่างไร มันเป็น(k++) + sหรือk + (++s)หรือ(k++) + (++s)?
seequ

31
+1 สำหรับเรื่องไร้สาระนี้:x+=k+++s+k+++s+k+++t+s+k+++t+u
Cruncher

2
@trlkly มักจะเล่นกอล์ฟใน JS คุณต้องใช้คำสั่งออกและสั้นกว่าalert console.logการใช้การแสดงผลอัตโนมัติของการคำนวณล่าสุดในคอนโซลก็เหมือนกับการโกง
edc65

15
คุณแน่ใจหรือว่าไม่ใช่ Brainfuck?
Michael Hampton

37

C # - 186

ภาษากอล์ฟที่ดีที่สุดหรือภาษากอล์ฟที่ดีที่สุด?

class P{static void Main(){var s="";for(int i=1;i<11;)s+=i+++", "+i+++", "+i+++" o'clock, "+i+++" o'clock rock,\n";System.Console.Write(s+"We're gonna rock around the clock tonight.");}}

ฉันสงสัยว่าทำไมมันได้รับคะแนนเสียงมากมายเช่นกัน ผู้คนชื่นชอบรายการที่ไม่ใช่ภาษาที่เป็นมิตรกับการเล่นกอล์ฟบางที
William Barbosa

7
เขาเป็นแรงบันดาลใจให้ฉันทำใน C ++ ดังนั้นเขาจึงได้รับการโหวต Real Men (tm) ไม่ได้ใช้ภาษาที่แปลแล้วน่ากลัวสำหรับโค้ดกอล์ฟ!
Darren

คุณไม่ต้องการช่องว่างในi++ +บิต
DLeh

ฉันเขียนมันลงบน dotnetfiddle และมันก็ไม่ได้คอมไพล์ถ้าไม่มีที่ว่าง ขอบคุณสำหรับการชี้
William Barbosa

คุณสามารถโกนหนวดได้มากกว่าเดิมโดยทำWriteLine-> Writeและใช้ตัวอักษร\nที่ส่วนท้ายของสตริง
Alconja

27

Brainfuck (1574)

ไม่ใช่การส่งที่ร้ายแรง แต่ปฏิบัติตามกฎ

-[----->+<]>--.-----.------------.[-->+++<]>++.------.------------.++[-->+++<]>.[--->++<]>--.+++++[->+++<]>.[--->+<]>++.-[--->+<]>+.+++++++++.+++.------------.++++++++.+++[----->++<]>.------------.++[-->+++<]>+.-[--->++<]>--.+++++[->+++<]>.[--->+<]>++.-[--->+<]>+.+++++++++.+++.------------.++++++++.-[++>---<]>+.---[----->++<]>.---.------------.++++++++.+++[----->++<]>.>++++++++++.-[----->+<]>.---------.------------.-----[->++<]>.----------.------------.----[->++<]>-.+[-->+<]>++++.+++++[->+++<]>.[--->+<]>++.-[--->+<]>+.+++++++++.+++.------------.++++++++.+++[----->++<]>.------------.----[->++<]>.[-->+<]>++++.+++++[->+++<]>.[--->+<]>++.-[--->+<]>+.+++++++++.+++.------------.++++++++.-[++>---<]>+.---[----->++<]>.---.------------.++++++++.+++[----->++<]>.>++++++++++.+[->+++++<]>++.-------------.------------.[-->+++<]>+.-.----.------------.[-->+++<]>+..-[--->++<]>.+++++[->+++<]>.[--->+<]>++.-[--->+<]>+.+++++++++.+++.------------.++++++++.+++[----->++<]>.------------.[-->+++<]>+.+.--[--->++<]>.+++++[->+++<]>.[--->+<]>++.-[--->+<]>+.+++++++++.+++.------------.++++++++.-[++>---<]>+.---[----->++<]>.---.------------.++++++++.+++[----->++<]>.>++++++++++.[------>+<]>.++[->++++<]>+.---[->+++<]>+.-[->+++<]>.-------------.--[--->+<]>-.++[->+++<]>+.++++++++.-..-------------.-[->+++<]>.---[----->++<]>.---.------------.++++++++.-[++>---<]>+.[->+++<]>+.--[--->+<]>---.---.++++++.-------.----------.-[--->+<]>-.---[->++++<]>.------------.---.--[--->+<]>-.+[->+++<]>.+++++++++.+++.------------.++++++++.-[++>---<]>+.---[->++++<]>.-----.-.-----.--.+.++++++++++++.[++>---<]>.

สามารถทดสอบได้ที่นี่


12
Brainfuck คำตอบที่ควรได้รับความเคารพเสมอ
Pharap

1
บางทีเราควรให้รางวัล "คำตอบที่ยาวที่สุด" แก่เขา? #RESPECT
Jamie

23

ทับทิม, 100

printf"%i, %i#{", %i o'clock"*r=-~1} rock,
"*-~r+"We're gonna rock around the clock tonight.",*1..$$

4
คุณสามารถบันทึกตัวละครอีกสองสามตัวด้วยs="%i, %i#{", %i o'clock"*-~1} rock,\n"(แทนที่\nด้วยตัวอักษรตามตัวอักษร) ความคิดที่ดีที่จะใช้$$!
Ventero

3
ขยายตัวในความคิดเห็นก่อนหน้าฉัน: ถ้าคุณกำหนดr=-~1แบบอินไลน์แล้วคุณสามารถใช้"..."*-~rแทนการช่วยให้คุณลดลงมอบหมายให้s+s+s s
Ventero

ดีมากจะทำการแก้ไขเหล่านั้น
ชำนาญวิชาประวัติศาสตร์

18

Perl 123

$s="*, *, * o'(, * o'( ),";print"$s
$s
$s
We're gonna ) around the ( tonight."=~s![(*)]!(clock,rock)[1+1+1&ord$&]||++$i!reg

การแสดงออกปกติตรง(, และ) *ฉันใช้ความจริงที่ว่ารหัส ASCII ของ(คือ 40, จาก)คือ 41 และ*42

rธงของการแสดงออกปกติช่วยให้ "ในสถานที่เปลี่ยนตัว" และeธงช่วยให้การประเมินผลรหัส (คล้ายกับx.replace(/.../, function(m){...})ใน JavaScript)

(clock,rock)คืออาร์เรย์ของ "คำเปล่า" สองคำ $&คือการจับคู่ปัจจุบันของนิพจน์ทั่วไปและord$&เป็นค่า ASCII

ปิดบังด้วย 3 หรือ1+1+1ค่า ASCII ตอนนี้เป็น 0, 1 และ 2 ดังนั้นฉันสามารถใช้พวกเขาเพื่อดึงองค์ประกอบอาร์เรย์ที่สอดคล้องกัน ในฐานะที่ 2 จะออกจากอาร์เรย์ที่ "ลัดวงจร" ผู้ประกอบการประเมิน|| ++$iในนัดแรก$iเป็นundefดังนั้นการเพิ่มมันฉันจะได้รับ 1 แล้ว 2 และอื่น ๆ ...

ในคำง่าย ๆ สิ่งนี้จะแทนที่*ด้วยเหตุการณ์ปัจจุบันโดย(มี "นาฬิกา" และ)"หิน"


1
ทำ. ไม่. คำนวณ. กรุณาอธิบาย
seequ

1
@TheRare คำอธิบายเพิ่ม;)
core1024

6
มันเป็นมนต์ดำ +1
seequ

นี่คือสิ่งที่ Perl ถูกสร้างขึ้นมาเพื่อไม่แปลกใจที่มันจะทำได้ดี
Pharap

16

Bash + coreutils, 120 ASCII, 92 Unicode

ASCII:

c=clock
f(){ echo $[++i], $[++i], $[++i] o\'$c, $[++i] o\'$c rock,;}
f
f
f
echo We\'re gonna rock around the $c tonight.

Unicode:

iconv -t unicode<<<挊挽潬正昻⤨⁻捥潨␠⭛椫ⱝ␠⭛椫ⱝ␠⭛椫⁝屯␧Ᵽ␠⭛椫⁝屯␧⁣潲正㬬㭽㭦㭦㭦捥潨圠履爧⁥潧湮⁡潲正愠潲湵⁤桴⁥挤琠湯杩瑨ਮ|sed 1d|bash

base64 ที่เข้ารหัสรุ่น Unicode (ในกรณีที่การเรนเด unicode เกิดความสับสน):

aWNvbnYgLXQgdW5pY29kZTw8POaMiuaMvea9rOato+aYiuKkqOKBu+aNpea9qOKQoOKtm+akq+Kx
neKQoOKtm+akq+KxneKQoOKtm+akq+KBneWxr+KQp+Kxo+KQoOKtm+akq+KBneWxr+KQp+KBo+a9
suato+OsrOCpveCppuCppuCppuaNpea9qOWcoOWxpeeIp+KBpea9p+a5ruKBoea9suato+aEoOa9
sua5teKBpOahtOKBpeaMpOeQoOa5r+adqeeRqOCornxzZWQgMWR8YmFzaAo=

2
120 เป็นเซมิโคลอนหลังจากวงเล็บปิดของการประกาศฟังก์ชันไม่จำเป็น
จัดการ

@ การจัดการอุ๊ปส์ดีมากจับ - ฉันไม่รู้ว่าคนที่แอบอยู่ในนั้น ขอบคุณ!
บาดเจ็บทางดิจิตอล

1
ตอนนี้ฉันใช้ Windows แล้ว แต่evalทำไมต้องใช้แทนที่จะไปป์bashหรือsh?
core1024

@ core1024 ไม่มีเหตุผลอื่นนอกจากฉันลืมความเป็นไปได้ ;-) ขอบคุณสำหรับเคล็ดลับ!
บาดเจ็บทางดิจิตอล

1
อุ๊ปส์ไม่นับ$rของ!
Shahbaz

13

Brainfuck, 1299

Bleuuuurgh มันแย่มาก ฉันไม่รู้ว่าทำไมฉันถึงทำสิ่งนี้มันดูง่ายในตอนเริ่มต้น สคริปต์ Brainfuck ตัวแรกและสุดท้าย ลองที่นี่

ด้วยความช่วยเหลือจากตัวสร้างโค้ดอัตโนมัติฉันสามารถเขียนสคริปต์ที่นำอักขระส่วนใหญ่กลับมาใช้ใหม่แทนที่จะสร้างจากสคริปต์ใหม่ มันเป็นเพียง 275 ตัวอักษรสั้นกว่าคนที่สร้างขึ้นโดยอัตโนมัติโพสต์ที่นี่

ผลลัพธ์ไม่ได้ถูกขึ้นบรรทัดใหม่

ฉันอาจใส่คำอธิบายเล็กน้อยในภายหลัง หลักสายยาวใด ๆ ที่ไม่ได้เป็นสิ่งที่ชอบ>>>>>>>หรือ<<<<<<<หรือ>>.>>.>>.>>.สร้างตัวละครหรือชุดของพวกเขา

-[----->+<]>--.
>
++[------>+<]>+.------------.
[-]<<+.>
++[------>+<]>+.------------.
[-]<<+.>
++++[->++++++++<]>.
>
+[------->++<]>+.
>
+[------->+++<]>++.
>
--[----->+<]>---.
>
+[------->++<]>--.
>
+[------->++<]>+.
>
--[----->+<]>---.
>
+[----->+++<]>++++.
>
++[------>+<]>+.
>
++++[->++++++++<]>.
<<<<<<<<<<<<<<<<<<<<+.
>>.>>.>>.>>.>>.>>.>>.>>.>>>>.
>
+[--------->++<]>.
>
+[------->++<]>+.
>
--[----->+<]>---.
>
+[----->+++<]>++++.
<<<<<<<<<<.
<++++++++++.
<<<<<<<<<<
<<<<<<<
+.
>>>>>>>>>>
>>>>>>>>.
<<<<<<<<<<
<<<<<<
.<<+.
>>>>>>>>>>
>>>>>>>>.
<<<<<<<<<<
<<<<<<
.<<+.
>>.>>.>>.>>.>>.>>.>>.>>.>>.
<<<<<<<<<<
<<<<<<
.<<+.
>>.>>.>>.>>.>>.>>.>>.>>.>>>>.
>>.>>.>>.>>.
<<<<<<<<<<.
<.
<<<<<<<<<
<<<<<<<<
+.[-]<
++[------>+<]>+.
>>.
[-]<<[-]<
-[----->+<]>--.-.
[-]<
++[------>+<]>+.------------.
[-]<
-[----->+<]>--..
>
++++[->++++++++<]>.
>>.>>.>>.>>.>>.>>.>>.>>.>>.
>>>>>>>>>
-[----->+<]>--.+.
<<<<<<<<<
<<<<<<<<<
<<<<<<<<<
<.
>>.>>.>>.>>.>>.>>.>>.
>>>>.
>>.>>.>>.>>.
>>[-]
++[------>+<]>+.>++++++++++.
>
+[--->++<]>+.++[->++++<]>+.---[->+++<]>+.-[->+++<]>.-------------.--[--->+<]>-.++[->+++<]>+.++++++++.-..-------------.
<<<<<<<<<<
<<<<<<<<<.
>>.>>.>>.>>.
<<[-]<<[-]<<[-]<<.
>
--[----->+<]>-----.--[--->+<]>---.---.++++++.-------.----------.
[-]<<<.
>
--------[-->+++<]>.------------.---.
<<.
<<<<<<<<<<
<<.
>>.>>.>>.>>.
>>>>.
>>[-]
--------[-->+++<]>.-----.-.-----.--.+.++++++++++++.[++>---<]>.

10

Lua - 217 164 154 151 149 143

ดัดแปลงอันเก่าเพื่อใช้ลูปแทนบันทึกการโหลดของอักขระ ขอบคุณ TeunPronk ที่ช่วยฉันกำจัดตัวละครอีก 10 ตัวและ WilliamBarbosa สำหรับการกำจัดตัวละครอีก 3 ตัว 2 ตัวละครอื่น ๆ kจะถูกบันทึกไว้โดยใช้ตัวแปร มีการบันทึกอักขระอีก 6 ตัวโดยกำจัดตัวแปรr=" rock,"เนื่องจากใช้เพียงครั้งเดียว

o=" o'clock"c=", "w=io.write k=1+1 for i=1,11,k+k do w(i,c,i+1,c,i+k,o,c,i+k+1,o," rock,\n")end w("We're gonna rock around the clock tonight.")

Ungolfed,

o=" o'clock"
c=", "
w=io.write
k=1+1
for i=1,11,k+k do 
   w(i,c,i+1,c,i+k,o,c,i+k+1,o," rock,\n")
end
w("We're gonna rock around the clock tonight.")

ฉันสงสัยว่ามันอาจจะสั้นลงหากคุณใช้ห่วงแทนและj k
Teun Pronk

@TeunPronk: ฮ่า ๆ ฉันเพิ่งจะเปลี่ยนสิ่งที่เป็นความคิดเห็นของคุณส่ง Ping ฉัน
Kyle Kanos

1
คุณสามารถนำมาไว้ที่ 157 คุณไม่จำเป็นต้องใช้เครื่องหมายจุลภาคหลังจากทุกหมายเลขที่ 3 ใส่หน้าพื้นที่O, ลบOจากการRวางพื้นที่ในRและแทนที่RโดยO,Rในของคุณio.write:)
Teun Pronk

1
@TeunPronk: อัปเดต ขอบคุณสำหรับความช่วยเหลือของคุณ!
Kyle Kanos

1
คุณสามารถเก็บไว้io.writeในตัวแปร ( f=io.write) และลดค่านี้ได้อีก
William Barbosa

8

CJam - 90 ASCII / 54 Unicode

ASCII:

{{T):T}:F~", ":CFCF" o'clock":OCFO" rock,
"}Z*"We're gonna rock around the clock tonight."

Unicode:

"ξ漰㠬༳ᆧᶃ㸩씪咦⏚騤䖫퍃᰽薂ᴤਥ궋씻㱗㽫Ƶꐥ勋䎔䃱魠ꝯ朐酠礢璿狮꓈执낦덋觫ᥛ琚"GZ)#bBC*b:c~

ลองใช้ที่http://cjam.aditsu.net/


ยูนิโก้ของคุณ ... "คำตอบนี้ได้รับการแก้ไขแล้ว" โอ้ไม่เป็นไร
seequ

8

Python (123)

print((1+1+1)*"%i, %i, %i o'clock, %i o'clock rock,\n"%tuple(range(1,11+1+1))+"We're gonna rock around the clock tonight.")

PYG (112)

P((1+1+1)*"%i, %i, %i o'clock, %i o'clock rock,\n"%T(R(1,11+1+1))+"We're gonna rock around the clock tonight.")

7

Brainfuck - 680

ทดสอบที่นี่: ideone.com/Wi9ftB

>>>++++[>+++++++++[>+++[<<<<+<+>>>>>-]<<<+<<<+<+>>>>>>-]<-]+<++++++++<+++<---------<++++++++
++++<----<++++++++++<+++[>>>+.>>>.<<<<.>>>>>>[>[<<<<<<--------.-.>>>.<<<<.>+..<.>>>.>-----.<
------------.+++++++++.+++.------------.++++++++.++++>+++++.<<<<.>.+.>>>>->>-]+<<+>-]+<[<<<<
+.>>>.<<<<.>+.<.>>>.>-----.<<.>---.+++.<.>----.++++>+++++.<<<<.>+.>>>>-]<<<<<.>>>.>-----.<<.
>---.+++.<.>----.<<<.>>>+++++++.---.<.>----.++++>+++++.<<<<<.<-]>[>>++++<<-]>>---.[-]<[>+<-]
>>++.>>-----.<+++.<.<.>++.>---.-..<------.<.>>++++.---.<++.>----.<<.>--.>+++++++.---.++++++.
-------.<+++.<.>>++++++.<++++.---.<.>--.>--------.+++.<.>----.<<.>>+++++++++.-----.-.-----.-
-.+.>[>+++<-]>-.<<<---[>>+<<--]>>--.

อย่างที่ฉันสัญญาไว้นี่เป็นเวอร์ชั่นที่ดีกว่า สมองของฉันรู้สึกเหมือน .. โอ้แล้วนั่นคือที่มาของชื่อ

คำอธิบาย: (เพราะมันไม่สามารถรักษาได้และฉันไม่ต้องการที่จะลืมวิธีการทำงาน)

ก่อนอื่นคุณต้องเลือกเค้าโครงข้อมูลที่ดีที่สุดสำหรับความท้าทายนี้ ฉันมาด้วย

-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

เราต้องเชื่อว่าสิ่งนี้เหมาะสมที่สุดเว้นแต่จะมีการเปลี่ยนแปลงมากเกินไป (ซึ่งในกรณีนี้คุณต้องจัดเรียงเค้าโครงใหม่)

หลังจากนั้นฉันใช้ 4x9x3 loop เพื่อตั้งค่าเริ่มต้นสำหรับ newline, number, ตัวอักษรตัวพิมพ์เล็กสองตัวและเครื่องหมายจุลภาค (รหัส ASCII ขนาดเล็กทั้งหมดได้ 4x9 = 36 และตัวอักษรตัวเล็กสองตัวได้ 4x9x3 = 108 จากนั้นฉันเพิ่มและย่อบางส่วนเพื่อให้ได้มูลค่าจริง)

เมื่อเสร็จสิ้นการตั้งรหัสจะเข้าสู่วงรอบนอกสุดที่รอบ 3 ครั้ง ฉันอธิบายโดยใช้ pseudocode

for 3 to 1 where i = numbers
    print '++i, '
    while inner_loop != 0              # this is true after the first loop
        while second_inner_loop != 0   # and this is true after the second
            print '10, 11 o'clock, 12' # prints the difference
            condition = 0              # it prevents the printing below
        second_inner_loop += 1
    inner_loop += 1
    while condition != 0
        print '++i, ++i o'clock, ++i'
    print ' o'clock rock,\n'

เมื่อส่วนนี้เสร็จสิ้นฉันแค่ต้องพิมพ์บรรทัดสุดท้าย แต่เรามีตัวพิมพ์ใหญ่ W ที่ต้องสร้างโดยไม่ใช้อักขระมากเกินไป ณ จุดนี้เราอยู่ที่นี่:

Address  Value  Pointer
     -4      0  <--
     -3     10
     -2     32
     -1     50
      1     99
      2    111
      3     44

ดังนั้นฉันจึงใส่ [-3] 4 ครั้งไปที่ [-1] และ substract 3 เพื่อรับ 87 (W): >[>>++++<<-]>>---.
จากนั้นลบออก[-]
และย้าย [-2] ไปที่ตำแหน่งนี้ [-1] ดังนั้นพื้นที่จะอยู่ใกล้กับตัวอักษรตัวเล็ก<[>+<-]

หลังจากนั้นมันก็พิมพ์ตัวอักษร ตัวพิมพ์เล็ก # 1 สำหรับส่วนล่าง 97-107 และตัวพิมพ์เล็ก # 2 สำหรับภูมิภาคด้านบน


2
+1 สำหรับการเป็น 300 ตัวอักษรสั้นกว่าคำตอบ BF อื่น ๆ
durron597

ฉันกำลังคิดที่จะลดลง เงื่อนไขน่ากลัวในการสร้างโดยไม่มีการสอนที่เหมาะสม (esolangs หยุดทำงาน) แต่จะสั้นลงอีกประมาณ 200 ตัวอักษร
bebe

6

JavaScript, 111 107 ตัวอักษรโดยไม่ต้องใช้หมายเลขใด ๆ

ประมวลผลตัวอย่างเหล่านี้ในคอนโซล JS ของเบราว์เซอร์ของคุณ:

107 (แรงบันดาลใจจากhttp://xem.github.io/obfuscatweet/รวมทั้งคำตอบของ JS อื่น ๆ ):

eval(unescape(escape('𩡯𬠨𬰽𘠬𘀢𛁴🐢𘁯𙱣𫁯𨱫𘠬𪐽𮀽𙰧𞰫𚱩🀽𜐱𞱸𚰽𪐫𚰫𬰫𪐫𚰫𬰫𪐫𚰫𭀫𬰫𪐫𭀫𘠠𬡯𨱫𛁜𫠢𚐻𮀫𘡗𩐧𬡥𘁧𫱮𫡡𘁲𫱣𪰠𨑲𫱵𫡤𘁴𪁥𘁣𫁯𨱫𘁴𫱮𪑧𪁴𛠢').replace(/uD./g,'')))

111 (เพียงบรรจุสตริงทั้งหมดและนำ eval ออกไป):

unescape(escape('𜐬𘀲𛀠𜰠𫰧𨱬𫱣𪰬𘀴𘁯𙱣𫁯𨱫𘁲𫱣𪰬𒠵𛀠𝠬𘀷𘁯𙱣𫁯𨱫𛀠𞀠𫰧𨱬𫱣𪰠𬡯𨱫𛀊𞐬𘀱𜀬𘀱𜐠𫰧𨱬𫱣𪰬𘀱𜠠𫰧𨱬𫱣𪰠𬡯𨱫𛀊𥱥𙱲𩐠𩱯𫡮𨐠𬡯𨱫𘁡𬡯𭑮𩀠𭁨𩐠𨱬𫱣𪰠𭁯𫡩𩱨𭀮').replace(/uD./g,''))

4
มีคนอื่นเห็นเต่าในนั้นหรือไม่? wtf
Dunno

hehe, ใช่, อักขระ Unicode "สุ่ม" ที่สร้างขึ้นโดย obfuscatweet บางครั้งก็นำไปสู่อิโมจิ :)
38418

5

C - 145 - ลองฉัน

main(i){i<11?main(i-~1+1,printf("%d, %d, %d o'clock, %d o'clock rock,\n"
,i++,i,i-~1,i-~1+1)):puts("We're gonna rock around the clock tonight.");}

C - 172 - ลองฉัน

#define l ,__LINE__+~1
#define f ;printf("%d, %d, %d o'clock, %d o'clock rock,\n"
main(){f l
l
l
l)f
l
l
l
l)f
l
l
l
l);puts("We're gonna rock around the clock tonight.");}

1
ฉันไม่ได้เป็นโปรแกรมเมอร์ C มากนักดังนั้นโปรดให้อภัยฉันถ้าฉันไร้เดียงสา แต่คุณไม่จำเป็นต้อง#include <stdio.h>ใช้printfเหรอ?
Kyle Kanos

1
ไลบรารีเริ่มต้นจะเชื่อมโยงกับแหล่งที่มาใน vc ++ และ gcc (ดังนั้นหากคุณไม่ต้องการอะไรเป็นพิเศษคุณสามารถเริ่มการแข่งขันกอล์ฟได้อย่างอิสระโดยพิมพ์main(){...
bebe

อ่าฉันเข้าใจแล้ว มันแปลกที่มันคายคำเตือนถ้ามันได้รับการยอมรับโดยค่าเริ่มต้น (เพียงตรวจสอบกับ gcc & icc ของฉันไม่มี vc ++ เพื่อทดสอบ)
Kyle Kanos

มันยังคายจุดเตือนลำดับดังนั้น ...-w :)
bebe

@Kyle รวมไฟล์กำหนดวิธีการทำงานของฟังก์ชั่นภายนอก (ประเภทกลับและพารามิเตอร์) ไม่เกี่ยวข้องกับการลิงก์ไลบรารี คอมไพเลอร์ C มาตรฐานจะส่งผ่านพารามิเตอร์ใด ๆ ที่คุณต้องการไปยังฟังก์ชั่นใด ๆ (พร้อมคำเตือน) และค่าที่ส่งคืนมักจะถูกละเว้นดังนั้นจึงทำงานได้
edc65

5

PHP - 125 129

รุ่น 1 (129)

$i;while($i<11)echo++$i.", ".++$i.", ".++$i." o'clock, ".++$i." o'clock rock,\n";echo"We're gonna rock around the clock tonight";

รุ่น 2 (125)

while($i++<11)echo"$i, ".++$i.", ".++$i." o'clock, ".++$i." o'clock rock,\n";echo"We're gonna rock around the clock tonight";

เวอร์ชั่นสะอาด:

while($i++<11)
    echo "$i, ".++$i.", ".++$i." o'clock, ".++$i." o'clock rock,\n";
echo "We're gonna rock around the clock tonight";

5

Perl, 114 111 110 108

$s=", X o'clock";$_="X, X$s$s rock,
"x(1+1+1)."We're gonna rock around the clock tonight.";s/X/++$i/eg;print

110:

$s=", X o'clock";print(("X, X$s$s rock,
"x(1+1+1)."We're gonna rock around the clock tonight.")=~s/X/++$i/egr)

111:

print(("X, X, X o'clock, X o'clock rock,
"x(1+1+1)."We're gonna rock around the clock tonight.")=~s/X/++$i/egr)

114:

($s="X, X, X o'clock, X o'clock rock,
"x(1+1+1)."We're gonna rock around the clock tonight.")=~s/X/++$i/ge;print$s

4

C ++ 261 203

#include<iostream>
#define x i++;
#define y std::cout<<
#define z y x y
void m(){for(int i=1;i<11;){z", ";z", ";z" o'clock, ";z" o'clock rock, "<<"\n";}y"We're gonna rock around the clock tonight.";}

แก้ไขความพยายามครั้งแรกของฉัน; มันทำงานเมื่อฉันทดสอบครั้งแรก แต่ดูเหมือนจะเป็นความบังเอิญ; โพสต์เพิ่มขึ้นในกระแสคือ "พฤติกรรมที่ไม่ได้กำหนด" และมันก็ทำสิ่งแปลก (รวมถึงการคัดกรองสีฟ้า Windows 7!) เมื่อฉันพยายามเรียกใช้อีกครั้ง ฉันคิดว่าการใช้ printf แทน std :: cout สามารถใช้กับ post-increment เพื่อให้ได้โปรแกรมที่สั้นลง

แก้ไขอีกครั้งรับลงไปที่ 231 โดยการนำลูปมาใช้อีกครั้ง แก้ไขอีกครั้งตอนนี้ลดเหลือ 203 ... #defines ที่ไม่ได้มีประโยชน์ในเวอร์ชันลูป

สำหรับผู้ที่สงสัยว่า C ++ สามารถเรียกใช้ฟังก์ชัน "m" ได้อย่างไรจุดเริ่มต้นสามารถกำหนดเป็นฟังก์ชันใด ๆ ที่มีเพียงตัวเลือกคอมไพเลอร์เช่นเดียวกับการตั้งค่า funcs ทั้งหมดให้เป็น stdcall; ฉันใช้สวิตช์ทั้งสองเมื่อรวบรวมข้างต้น หากคุณไม่ชอบจุดเข้าสู่นิยามใหม่ให้เพิ่ม 3 เข้ากับการนับตัวละครของฉัน


คุณใช้คอมไพเลอร์ตัวไหน? GCC (4.7.1) m()ไม่ให้ฉันเรียกฟังก์ชั่นหลัก อย่างไรก็ตามคุณสามารถปล่อยvoidและบันทึก 5 ตัวอักษร (หรือ 2 ถ้าคุณตั้งชื่อวิธีmain)
Christoph Böhmwalder

แล้วบนโลกใบนี้ได้รับการโหวตอย่างไร ประการแรกคุณเขียนฟังก์ชันที่เรียกว่า 'm' ซึ่งจะไม่คอมไพล์โดยค่าเริ่มต้นอันดับที่สองคอมไพเลอร์ทุกอันจะแสดงชั่วโมงในลำดับย้อนกลับ นี้ต้องแก้ไข BIG
bebe

1
@HackerCow ฉันไม่สามารถทำให้ VS2013 ทำงานได้หากไม่ได้กำหนดประเภทการคืนค่าเป็นโมฆะ มีสวิตช์คอมไพเลอร์ที่จะอนุญาตหรือไม่
Darren

1
@bebe ฉันอธิบายจุดเริ่มต้น m () ในการแก้ไขของฉัน; สำหรับชั่วโมงที่พิมพ์ออกมาในลำดับกลับกันฉันไม่เคยจัดการเพื่อทำซ้ำ แต่ฉันจัดการเพื่อให้พิมพ์ได้อย่างถูกต้อง (ครั้งแรกที่ฉันลอง) จากนั้นทำการทดสอบซ้ำ 1, 5 และ 12 จากนั้นอีกครั้ง ทดสอบซ้ำว่ามันล้มเหลวของระบบปฏิบัติการ ดังนั้นในทางเทคนิคมันวิ่งครั้งเดียว แต่พึ่งไม่ได้กำหนดพฤติกรรมน่าจะเป็นความคิดที่ไม่ดีดังนั้นฉันเขียนมัน :)
คาร์เรน

1
@bebe ฉันเท่ห์ทั้งสองทาง; ฉันจะ "ชนะ" ไม่ว่าจะด้วยวิธีใดก็ตามรหัสตัวต่อกอล์ฟกับ C ++ ดังนั้นการเพิ่มตัวละคร 3 ตัวก็ไม่ใช่เรื่องใหญ่โต ฉันยอมรับว่า -D สวิตช์คำจำกัดความของมาโครจะเป็นการโกง แต่ก็มีธงคอมไพเลอร์อื่น ๆ ที่ดูเหมือนจะเป็นเรื่องที่ถูกต้องสำหรับฉันเพราะพวกเขาดูเหมือนจะถูกต้องตามกฎหมายสำหรับผู้ใช้ในเธรดที่คุณเชื่อมโยง ประโยชน์ใด ๆ ที่คุณบีบออกจากสวิทช์คอมไพเลอร์จะไม่ง่ายว่าแม้แต่สนามเด็กเล่นระหว่าง C ++ และ Python / ทุบตี / Perl ฯลฯ
คาร์เรน

4

Swift - 136 134

var x=1
for;x<11;{print("\(x++), \(x++), \(x++) o'clock, \(x++) o'clock rock,\n")}
print("We're gonna rock around the clock tonight.")

3

Java, 228

โซลูชันฮาร์ดโค้ดอาจจะสั้นกว่านี้

public static void main(String[] a){
        String s = "";
        int i=1,j=1;
        for(i--,j--;i<=11;){
            s += ++i + (j > 1 ? " o'clock rock, ":", ");
            if(j == "one".length()){
                j -= j;
                s +="\n";
            }else
                j++;
        }
        System.out.println(s+"We're gonna rock around the clock tonight");
}

3
+1 สำหรับการรับรู้ว่าการเข้ารหัสยากจะสั้นกว่า
Kyle Kanos

1+1+1เป็น 9 "two".length()"ตัวอักษรที่สั้นกว่า และString[] aจำเป็นหรือไม่
Kyle Kanos

คนประเภทนั้นรู้สึกเหมือนมีการโกงและใช่จำเป็นต้องใช้สตริง [] a
ไม่ได้จอง

มันไม่ได้โกงหลายคนใช้มันแล้ว: D
Kyle Kanos

3

Befunge-98 ( 402 268)

ตอนนี้ unefunge!

".thginot kcolc eht dnuora kcor annog er'eW"a11+/a*1-> #;:,1+" ,",,:,1+" ,",,:,1+" ,kcolc'o "a1-k,:,1+a",kcor kcolc'o "ek,:a11+/a*b1111+++-+-#;_:,a-1+" ,",,:a111++-:*,,1+" ,",,:a111++-:*,,1+" ,kcolc'o "a1-k,:a111++-:*,,1+a",kcor kcolc'o "ek,:a11+/a*b1111+++-+$$$aa*k,@

1
บิตสุ่มของข้อความย้อนหลัง,,:,1+, a11+/a*b1111+++-+w:,อักขระจรจัดที่อยู่ภายใต้สายหลักของรหัส ... ทั่วไป Befunge ล่ามออนไลน์ส่วนใหญ่มีปัญหาเกี่ยวกับความยาวของบรรทัด (มันเกินขีด จำกัด ) คุณรู้จักคนที่ไม่สนใจหรือไม่?

ฉันไม่พบคอมไพเลอร์ Befunge-98 ใด ๆ ออนไลน์ แต่คุณสามารถใช้ pyfunge ที่มีอยู่ใน PyPI
waylon531

3

Groovy - 140 139 ตัวอักษร

เล่นกอล์ฟได้รับอิทธิพลจากคำตอบของ William Barbosa :

s="ock"
i=1
f={->println "${i++}, ${i++}, ${i++} o'cl$s, ${i++} o'cl$s r$s,"}
f();f();f()
println "We're gonna r$s around the cl$s tonight"

Ungolfed:

s = "ock"
i = 1
f = { ->
    println "${i++}, ${i++}, ${i++} o'cl$s, ${i++} o'cl$s r$s,"}
}

f();f();f()

println "We're gonna r$s around the clock tonight"

2

Mathematica - 153

i=1;
StringReplace[
  StringJoin[
    Riffle[{s="X, X, X o'clock, X o'clock rock,",s,s},"\n"]]<>
    "\nWe're gonna rock around the clock tonight.","X":>ToString[i++]]

+1 ฉันคิดว่านี่เป็นกลยุทธ์ที่ดีที่สุด แต่อาจสั้นกว่านี้ได้

2

C ++ 252

#define P(x) cout<<x
#define Q cout<<", "
#define N cout<<endl
#define C P(" o'clock")
#define R P(" rock")
#define F P(++i);Q;P(++i);Q;P(++i);C;Q;P(++i);C;R;N;
int i;
main()
{
    F F F
    P("We're gonna rock around the clock tonight.");
}

1
เว้นแต่ว่าคณิตศาสตร์ของฉันจะหมดการใช้งานP(", ")แทนการQช่วยให้คุณประหยัด 2 ตัวอักษร
Kyle Kanos

2
NและRปรากฏเพียงครั้งเดียวเท่านั้น: จะเป็นการดีกว่าถ้าจะแทรกอินไลน์เข้ามา

การใช้ความคิดเห็นด้านบนและอื่น ๆ นี้สามารถย่อให้เป็น 200 (แม้จะรวมถึงและ namespaces ของฉันต้องการคอมไพเลอร์):#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.";}
Hagen von Eitzen

2

Java (v2) - 250 241 232 ตัวอักษร

นี้เป็นโปรแกรมที่ทำงานที่สมบูรณ์ได้รับอิทธิพลจากคำตอบของวิลเลียมแปของ

แข็งแรงเล่นกอล์ฟ:

public class R{
static int o=1;
static String c(){return o+++", "+o+++", "+o+++" o'clock, "+o+++" o'clock rock,\n";}
public static void main (String[] a){System.out.println(c()+c()+c()+"We're gonna rock around the clock tonight");}}

Ungolfed:

public class R {
    static int o = 1;
    static String c() { 
        return o+++", "+o+++", "+o+++" o'clock, "+o+++" o'clock rock,\n";
    }

    public static void main (String[] a) {
        System.out.println(c()+c()+c()+"We're gonna rock around the clock tonight");
    }
}

2

ECMAScript6 - 136 135

ไม่ใช้แม้แต่ตัวเลขที่อนุญาต1:

alert([,...a=[s=", ",s,(c=" o'clock")+s,c+" rock,\n"],...a,...a].map((x,i)=>i+x).join("")+"We're gonna rock around the clock tonight.")

ทดสอบในคอนโซล Firefox


หรือ 114 chars โดยใช้xem.github.io/obfuscatweet ;)
xem

4
@xem ฉันรู้ว่ามันเหมาะกับจดหมายของกฎหมาย แต่ฉันไม่ได้เป็นแฟนของการบีบอัด Unicode (หรือคอมไพเลอร์อื่น ๆ / กำเนิด) ในใจของฉันกอล์ฟคือการทดสอบทักษะและรหัสทั้งหมดควรทำด้วยมือ ... แต่นั่นเป็นเพียงฉัน
Alconja

2

PowerShell, 123 118 109

1,1,1|%{"$('',''," o'clock"," o'clock rock"|%{"$((++$a))$_,"})"}
"We're gonna rock around the clock tonight."

หลังจากการเริ่มต้นที่น่ากลัว (167) ฉันกำจัดสำนวนบางอย่างที่ฉันไม่ต้องการแม้แต่อย่างน้อยก็สั้นกว่าการอ้างอิง


2

Haskell - 138 137 ตัวอักษร

ในฐานะโปรแกรมเดี่ยว:

r n=show n++s!!n
s=" o'clock rock,\n":c:c:" o'clock, ":s
c=", "
main=putStr$(r=<<)[1..11+1]++"We're gonna rock around the clock tonight."

แก้ไข: ฉันเคยมีฟังก์ชั่นผู้ช่วย o ใช้ในการกำหนด s โดย

s=o" rock,\n":c:c:o c:s;o=(" o'clock"++)

แต่กลับกลายเป็นว่าต้องเสียค่าใช้จ่ายเพิ่ม 1 อักขระ มีวิธีใดในการบีบอัด "o'clock" s / "rock" s / "ock" ทั้งหมดหรือไม่?


2

JavaScript, 140

a=", x o'clock",b="x, x"+a+a+" rock,\n",b+=b+=b+"We're gonna rock around the clock 
tonight.";for(i=1;i<=11+1;)b=b.replace("x",i++);alert(b)

ฉันสร้างสตริงเช่น "x, x, x o'clock x o'clock rock, \ n ... " จากนั้นฉันก็แทนที่ "x's" ด้วยตัวเลข


1

PHP 150

ไม่มีตัวเลขรวมถึง 11 ซึ่งจะไม่เป็นสอง 1 ติดกัน แต่ค่าตัวเลขสิบเอ็ด

function f(){static $i;echo++$i.", ".++$i.", ".++$i." o'clock, ".++$i." o'clock rock,\n";}f();f();f();echo"We're gonna rock around the clock tonight";

มันหายไปเต็มท้ายหยุด
Joey

1

PowerShell, 156 140 136 129 127

for($i=1;$i-lt11){$i++,$i++,"$(($i++)) o'clock","$(($i++)) o'clock rock,"-join', '}"We're gonna rock around the clock tonight."

Ungolfed:

for($i = 1; $i -lt 11){
    $i++, $i++ , "$(($i++)) o'clock", "$(($i++)) o'clock rock," -join ', '
}
"We're gonna rock around the clock tonight." 

คุณสามารถทำให้มันลดลงเหลือ 127 ได้โดยใช้$i++,$i++,"$(($i++)) o'clock","$(($i++)) o'clock rock,"-join', 'การวนซ้ำ
Joey

@ Јοеуแน่นอนขอบคุณสำหรับคำแนะนำ!
DarkAjax

1

คอบร้า - 193

class P
    var i=1-1
    def main
        print[.f,.f,.f,"We're gonna rock around the clock tonight."].join("")
    def f as String
        return"[[.i+=1,.i+=1,.i+=1].join(", ")] o'clock, [.i+=1] o'clock rock,\n"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.