24 시간 내내 바위


46

가능한 적은 유니 코드 문자로 다음 (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

자바 스크립트 - 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 문자를 이길 것입니다. ^^
Antoine Esteve

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)은 코드 골프에 woosy 해석 언어를 사용하지 않습니다!
Darren

당신은 실제로 i++ +비트 의 공백이 필요하지 않습니다
DLeh

나는 그것을 dotnetfiddle에 썼고 공백없이 컴파일하지 않았다. 지적 해 주셔서 감사합니다.
윌리엄 바르보사

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

아주 좋은, 그 편집을 할 것입니다.
histocrat

18

펄 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는 42 라는 사실을 사용했습니다 .

r정규 표현식 의 플래그는 "제자리 대체"를 e활성화 하고 플래그는 코드 평가 ( x.replace(/.../, function(m){...})JavaScript 와 유사)를 활성화합니다 .

(clock,rock)두 "맨손"의 배열입니다. $&정규식의 현재 일치이며 ord$&ASCII 값입니다.

3으로 마스크되거나 1+1+1ASCII 값은 이제 0, 1 및 2이므로 해당 배열 요소를 검색하는 데 사용할 수 있습니다. 2가 배열을 벗어나면 "short circuit"연산자가를 ||평가 ++$i합니다. 첫 번째 경기 $i에서 undef너무 증가하면 1, 2 등을 얻습니다 ...

간단히 말해서. 이것은 "clock"및 "rock"으로 *현재 발생으로 대체 됩니다 .()


1
그렇습니다. 아니. 계산 설명해주세요
seequ

1
@TheRare 설명 추가;)
core1024

6
흑 마법이야. +1
seequ

이것은 Perl을 위해 만들어 졌던 것입니다.
Pharap

16

Bash + coreutils, 120 ASCII, 92 유니 코드

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.

유니 코드 :

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

base64로 인코딩 된 유니 코드 버전 (유니 코드 렌더링이 엉망인 경우) :

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.
manatwork

@manatwork 죄송합니다. 캐치가 어떻게 들어 갔는지 모르겠습니다. 감사!
디지털 외상

1
나는 지금 Windows를 사용하고 있지만 eval파이프 bash또는 대신에 사용하는 이유는 무엇 sh입니까?
core1024

@ core1024 나 이외의 가능성을 잊어 버린 이유는 없습니다 ;-) 팁 주셔서 감사합니다!
디지털 외상

1
죄송합니다 $r!
Shahbaz

13

브레인 포트, 1299

Bleuuuurgh . 끔찍 했어요 왜 내가 이것을했는지 모르겠다. 처음에는 매우 쉬워 보였다. 첫 번째 그리고 아마도 마지막 Brainfuck 스크립트. 여기에서 시도하십시오.

자동화 된 코드 생성기의 도움으로 각 문자를 처음부터 생성하는 대신 대부분의 문자를 재사용하는 스크립트를 작성할 수있었습니다. 여기에 자동으로 생성 된 것보다 275 자만 짧습니다 .

출력은 개행으로 끝나지 않습니다.

나중에 약간의 설명을 넣을 수도 있습니다. 기본적으로 같은 아닌 임의의 긴 줄 >>>>>>>이나 <<<<<<<또는 >>.>>.>>.>>.문자 또는 이들의 일련의 생성.

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

10

루아 - 217 164 154 151 149 143

대신 루프를 사용하도록 이전 코드를 수정하여 보트로드를 절약합니다. 10 명의 다른 캐릭터를 면도 해주신 TeunPronk와 3 명의 다른 캐릭터를 면도 해 주신 WilliamBarbosa에게 감사드립니다. 변수를 사용하여 2 개 이상의 문자를 저장할 수 있습니다 k. 변수 r=" rock,"가 한 번 사용되므로 6 개 이상의 문자가 변수를 제거하여 저장됩니다 .

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.")

언 롤링,

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.")

jand 대신 루프를 사용하면 더 짧을 지 궁금합니다 k.
Teun Pronk

@TeunPronk : haha, 나는 당신의 의견이 나를 핑하는 것처럼 그것을 바꾸고있었습니다
Kyle Kanos

1
157까지 가져올 수 있습니다. 세 번째 숫자마다 쉼표가 필요하지 않습니다. 의 공간 뿅 넣어 O제거, O에서를 R,에 공간을 배치 R하고 대체 R에 의해 O,R당신에 io.write:)
Teun Pronk

1
@TunPronk : 업데이트되었습니다. 당신의 도움을 주셔서 감사합니다!
Kyle Kanos

1
io.write변수 ( f=io.write)로 저장 하고 더 줄일 수 있습니다
William Barbosa

8

CJam-90 ASCII / 54 유니 코드

ASCII :

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

유니 코드 :

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

http://cjam.aditsu.net/ 에서 시도 하십시오


당신의 유니코 ... "이 답변은 편집되었습니다." 오, 신경 쓰지 마
seequ

8

파이썬 (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

브레인 씨발-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 루프를 사용하여 개행, 숫자, 두 개의 소문자 및 쉼표의 시작 값을 설정했습니다. (모든 작은 ASCII 코드는 4x9 = 36을 얻었고 두 개의 소문자는 4x9x3 = 108을 얻었고 실제 값을 얻기 위해 일부를 더하고 빼기했습니다)

사전 설정이 완료되면 코드는 3 회 순환하는 가장 바깥 쪽 루프로 들어갑니다. 나는 의사 코드로 설명합니다.

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]에 넣고 3을 빼서 87 (W)를 얻 >[>>++++<<-]>>---.
습니다. [-]
그리고 그것을 지우고 [-2]를이 위치 [-1]로 옮기면 공간이 소문자에 가까워집니다.<[>+<-]

그 후 문자를 인쇄합니다. 소문자 # 1은 하단 부분 97-107을위한 것이고 소문자 # 2는 위 영역을위한 것입니다.


2
다른 BF 답변보다 300 자 더 짧은 +1
durron597

나는 더 낮아질 생각했다. 조건 (esolangs가 다운) 괜찮은 튜토리얼없이 만들 끔찍하지만 200 개 문자 이상 ~에 의해 짧아 질 수 있습니다
비비

6

자바 스크립트, 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

헤헤, 그래, 난독 화에 의해 생성 된 "무작위"유니 코드 문자는 때때로 이모
지로 이어진다

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

아, 알겠습니다 기본적으로 받아 들일 경우 경고를 내뿜는 것은 이상합니다.
Kyle Kanos

그것은 또한 시퀀스 포인트 경고를 뱉어 ...- w :)
bebe

@Kyle 포함 파일은 외부 함수 작동 방식 (반환 유형 및 매개 변수)을 정의합니다. 라이브러리 연결과 관련이 없습니다. 표준 C 컴파일러는 원하는 모든 매개 변수를 경고와 함께 함수에 전달하고 반환 값은 종종 무시되므로 어쨌든 작동합니다.
edc65

5

PHP- 125129

버전 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

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 포함)을 수행했습니다. std :: cout 대신 printf를 사용하면 더 짧은 프로그램을 얻기 위해 사후 증가와 함께 사용할 수 있다고 생각합니다.

다시 편집하여 루프를 다시 구현하여 231로 줄였습니다. 또 다시 편집하여 이제 203까지 내려갔습니다. #defines는 루핑 버전에서 모두 유용하지 않았습니다.

C ++가 어떻게 "m"함수를 실행할 수 있는지 궁금해하는 사람들을 위해 진입 점은 모든 func를 stdcall로 설정할 수있는 것처럼 컴파일러 옵션만으로 모든 함수로 정의 할 수 있습니다. 위의 컴파일 할 때 두 스위치를 모두 사용했습니다. 재정의 된 진입 점이 마음에 들지 않으면 내 문자 수에 3을 추가하십시오.


어떤 컴파일러를 사용하고 있습니까? gcc (4.7.1)에서는 주 함수를 호출 할 수 없습니다 m(). 당신은 그러나 void5 문자를 삭제 하고 저장할 수 있습니다 (또는 방법의 이름을 지정하는 경우 2 main)
Christoph Böhmwalder

지구상에서 어떻게 공감대를 얻었습니까? 먼저 기본적으로 컴파일되지 않는 'm'이라는 함수를 작성했습니다. 둘째, 모든 컴파일러는 시간을 역순으로 표시합니다. 이것은 큰 수정이 필요합니다
bebe

1
@HackerCow void 반환 유형을 정의하지 않고 VS2013을 작동시킬 수 없습니다. 그것을 허용하는 컴파일러 스위치가 있습니까?
대런

1
@bebe 편집에서 m () 진입 점을 설명합니다. 출력 시간이 역순으로 인쇄되지는 않았지만 복제 할 수는 없었지만 올바르게 인쇄 (처음 시도했을 때) 한 다음 1, 5 및 12를 모두 다시 테스트 한 다음 다른 시간에 다시 테스트했습니다. 다시 OS를 추락했다. 따라서 기술적으로 한 번 실행되었지만 정의되지 않은 동작에 의존하는 것은 '나쁜 생각'일 수 있으므로 다시 작성했습니다. :)
Darren

1
@bebe 나는 어느 쪽이든 멋지다. 어떤 식 으로든 C ++로 코드 골프 퍼즐을 "승리"할 수 없으므로 3자를 추가하는 것이 더 이상 중요하지 않습니다. -D 스위치 매크로 정의가 부정 행위에 동의하지만, 다른 컴파일러 플래그는 나에게 합법적 인 것처럼 보입니다. 링크 된 스레드의 사람들에게도 합법적 인 것처럼 보입니다. 간단한 컴파일러 스위치에서 짜낸 이점은 C ++과 Python / Bash / Perl 등의 경쟁 분야조차 정확하게 아닙니다.
Darren

4

스위프트 - 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

자바, 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

그게 속임수처럼 느껴졌고, String [] a가 필요합니다.
Undeserved

속임수가 아니고 여러 사람들이 그것을 사용했습니다 : D
Kyle Kanos

3

비 펀지-98 ( 402 268)

이제 막강한!

".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-98 컴파일러를 찾을 수 없지만 PyPI에서 사용 가능한 pyfunge를 사용할 수 있습니다.
waylon531

3

그루비 - (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"

언 골프 드 :

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

수학-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(", ")대신에 Q2자를 사용 하면 절약 할 수 있습니다.
Kyle Kanos

2
N그리고 R한 번만 표시 :이 매크로를 만드는 것보다 그들을 인라인 좋을 것이다.

위의 주석과 그 이상을 사용하면 200으로 압축 될 수 있습니다 (컴파일러가 원하는 include 및 네임 스페이스에서도).#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

자바 (V2) - 250 개 241 232 문자

이것은 William Barbosa의 답변에 영향을받는 완전한 실행 프로그램 입니다.

골프 :

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");}}

언 골프 드 :

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 콘솔에서 테스트되었습니다.


또는 xem.github.io/obfuscatweet를 사용하는 114 자 ;)
xem

4
@ xem, 나는 그것이 법의 서한에 부합한다는 것을 알고 있지만, 나는 유니 코드 압축 (또는 다른 컴파일러 / 생성기)의 팬이 아닙니다. 내 마음에 골프는 기술의 시험이며 모든 코드는 수공예품이어야하지만 ... 그냥 나야.
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

하스켈- 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."

편집 : 나는 도우미 함수를 사용하여 s를 정의하는 데 사용했다.

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

하지만 추가 캐릭터 1 개가 필요합니다. 모든 "시"/ "바위"/ "ock"을 압축 할 수있는 방법이 있습니까?


2

자바 스크립트, 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

2를 포함하지 않는 11을 포함하여 숫자는 없지만 숫자 값은 11입니다.

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."

언 골프 드 :

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

$i++,$i++,"$(($i++)) o'clock","$(($i++)) o'clock rock,"-join', '루프 내에서 사용하여 127까지 줄일 수 있습니다 .
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.