ロックアラウンドザクロック


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 14

1
私は今、それらを削除
aditsu

4
いくつかの答えはを使用します11。命令は、あなただけ使用できることを意味してい番号 1または数字 1を?
mfvonh 14

10
@mfvonhを使用できると言いました1。私は何回指定しなかったので、人々が使用したという事実11は巧妙な抜け穴であり、私はそれですべてです。
rybo111 14

回答:


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は2つの1で構成されているので、私が推測する規則に合格することができます。

説明

k +++ sは(k ++)+ sと等しいため、最初にxにkを追加し、次にkをインクリメントしてから、xにsを追加します。このプロセスは、最後の文を追加する前に3回実行されます。


なぜあなたはやる {} ?しばらくは必要ありません。1つの命令しかありません。ただし、「;」を使用する必要があるため あなたは1文字だけを獲得します。^^
アントワーヌ・エステベ14

3
何をk+++sするの?それ(k++) + sか、k + (++s)それとも(k++) + (++s)
seequ 14

31
このナンセンスの+1:x+=k+++s+k+++s+k+++t+s+k+++t+u
ランチャー14

2
@trlklyは通常、JSでゴルフをする場合、出力ステートメントを使用する必要がalertあり、より短いですconsole.log。コンソールで最後の計算の自動表示を使用することは、不正行為に似ています。
edc65 14

15
それはBrainfuckではないのですか?
マイケルハンプトン14

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 14

7
彼は私にC ++でそれをやろうという気にさせてくれたので、彼は票を得ました。本物のMen(tm)は、コードゴルフに気まぐれな解釈言語を使用しません!
ダレン

あなたは、実際にスペースを必要としないi++ +ビット
DLeh

dotnetfiddleで作成しましたが、スペースなしではコンパイルできませんでした。指摘してくれてありがとう。
ウィリアムバルボサ14

WriteLine-> を実行し、文字列の最後にWriteリテラル\nを使用することで、さらにいくつかを削ることができます。
アルコニャ14

27

ブレインファック(1574)

重大な提出ではありませんが、規則に従います。

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

ここでテストできます。


12
Brainfuckの回答は常に尊敬に値します。
ファラプ14

1
おそらく、彼に「最長回答」賞を与えるべきでしょうか?#RESPECT
ジェイミー14

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

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)2つの「裸の単語」の配列です。$&は、正規表現の現在の一致であり、ord$&ASCII値です。

3でマスクされるか1+1+1、ASCII値が0、1、2になったため、それらを使用して対応する配列要素を取得できます。2は配列の外にあるため、「短絡」演算子はを||評価し++$iます。最初の一致で$iは、1 undefを取得してから2を取得します...

簡単な言葉で。これは*、現在のオカレンス(である「クロック」と)「ロック」に置き換えられます。


1
します。ありません。計算します。説明してください?
seequ 14

1
@TheRareの説明を追加;)
core1024 14

6
それは黒魔術です。+1
seequ 14

これは、Perlの目的の1つであり、当然のことながら、非常にうまく機能します。
ファラプ14

16

Bash + coreutils、ASCII 120、Unicode 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.

Unicode:

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

base64エンコードされた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、関数宣言の右中括弧の後のセミコロンは不要です。
マナトワーク14

@manatworkおっと-どうやってそこに忍び込んだのかわかりません。ありがとう!
デジタル外傷14

1
私は今、Windows上だけど、使用する理由何であるeval代わりにpipeingのbashsh
core1024 14

@ core1024可能性を忘れる以外に理由はありません;-)ヒントをありがとう!
デジタル外傷14

1
おっと、$rsをカウントしませんでした!
Shahbaz

13

Brainfuck、1299

Bleuuuurgh。それはひどいものでした。なぜこれをしたのかはわかりませんが、最初は非常に簡単でした。おそらく最後のBrainfuckスクリプト。ここで試してみてください。

自動コードジェネレーターの助けを借りて各文字をゼロから生成する代わりに、ほとんどの文字を再利用するスクリプトを作成することができました。ここに投稿され自動生成されたものよりも275文字短いだけです

出力は改行で終了しません。

後で少し説明するかもしれません。基本的に、キャラクターや一連のキャラクターのようなものではない、>>>>>>>または<<<<<<<それらを>>.>>.>>.>>.生成しない長い行。

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

10

LUA - 217 164 154 151 149 143

代わりにループを使用するように古いものを修正し、キャラクターのボート負荷を節約します。TeunPronkが私をさらに10文字削るのを手伝ってくれてありがとう、WilliamBarbosaがもう3文字を削ってくれた。変数を使用すると、さらに2文字を保存できますk。変数r=" rock,"は1回使用されるため、変数を削除すると、さらに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.")

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

jandの代わりにループを使用すると短くなるのではないかと思いますk
テウンプロンク

@TeunPronk:ハハ、私はちょうどあなたのコメントが私をpingしていることを変えた
カイルKanos

1
157まで下げることができます。3桁ごとにコンマは必要ありません。あなたの前にスペースを置き、からO削除OR、スペースを入れてR置き換えRO,Rくださいio.write:)
Teun Pronk 14

1
@TeunPronk:更新されました。ご協力いただきありがとうございます!
カイルカノス

1
io.write変数(f=io.write)に保存し、これをさらに減らすことができます
William Barbosa 14

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 14

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

ブレインファック-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ループを使用して、改行、数値、2つの小文字、およびコンマの開始値を設定しました。(より小さいASCIIコードはすべて4x9 = 36を取得し、2つの小文字は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

[-1]に4回[-3]を入力し、87(W)を得るために3を減算します。>[>>++++<<-]>>---.
その後、消去して[-]
[-2]をこの場所[-1]に移動し、スペースが小文字に近くなるようにします。<[>+<-]

その後、文字を印刷するだけです。小文字#1は下部97-107用で、小文字#2は上記の領域用です。


2
他のBF回答より300文字短いため+1
durron597 14

もっと低くすることを考えていました。条件は(esolangsがダウンしている)まともなチュートリアルせずに作成することがひどいですが、それは200文字以上〜によって短くすることができる
BEBE

6

JavaScript、111 107文字、数字は使用しません。

ブラウザのJSコンソールで次のスニペットを実行します。

107(http://xem.github.io/obfuscatweet/に触発され、さらにその他のJSの回答):

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

111(すべての文字列をパックし、評価を削除するだけです):

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

4
他の誰かがそこにカメを見ます...?wtf
ダンノ14

hehe、ええ、
obfuscatweet

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か?
カイルカノス14

1
デフォルトのライブラリは、あなたが何か特別なを必要としないので、もし、あなたが自由にタイピングによるゴルフチャレンジを開始することができ、VCソース++とGCC(にリンクされているmain(){...
BEBE

ああ、分かった。それがデフォルトで受け入れられた場合、警告を吐き出すのは奇妙です(私のgccとiccでチェックし、テストするvc ++はありません)。
カイルカノス14

また、シーケンスポイントの警告を出力します...- w :)
bebe

@Kyleインクルードファイルは、外部関数の動作方法(戻り値の型とパラメーター)を定義します。ライブラリのリンクとは関係ありません。標準Cコンパイラは、任意の関数に任意のパラメーターを(警告付きで)渡し、戻り値は無視されることが多いため、とにかく動作します。
edc65 14

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の青いスクリーニングを含む!)。std :: coutの代わりにprintfを使用すると、ポストインクリメントで短いプログラムを取得できると思います。

再度編集し、ループを再実装することで231まで下げました。もう一度編集しましたが、今では203個になりました...これらの#definesは、ループバージョンではすべて役に立ちませんでした。

C ++がどのように関数 "m"を実行できるのか疑問に思う人のために、エントリポイントは、すべてのfuncをstdcallに設定できるように、コンパイラオプションだけで任意の関数として定義できます。上記のコンパイル時に両方のスイッチを使用しました。再定義されたエントリポイントが気に入らない場合は、文字カウントに3を追加します。


どのコンパイラを使用していますか?gcc(4.7.1)では、メイン関数を呼び出すことができませんm()。ただしドロップすることができますvoid(あなたはメソッドに名前を付ける場合は2と5文字の保存main
クリストフBöhmwalder

いったいどうして賛成票を獲得したのですか?まず、デフォルトではコンパイルされない「m」という関数を作成しました。次に、すべてのコンパイラーが時間を逆順に表示します。これはBIG補正を必要とする
BEBE

1
@HackerCow void戻り値の型が定義されていないと、VS2013を動作させることができません。それを可能にするコンパイラスイッチはありますか?
ダレン14

1
@bebe編集でm()エントリポイントを説明します。出力時間を逆順に印刷することに関しては、私はそれを何とか複製することはできませんでしたが、正しく印刷することができました(最初に試したとき)、1、5、12のすべてを再テストしてから、再テストすると、OSがクラッシュしました。したがって、技術的には一度実行されましたが、未定義の動作に依存することはおそらく「悪い考え」なので、私はそれを書き直しました:)
ダレン14

1
@bebe私はどちらの方法でもクールです。コードパズルをC ++で「勝つ」つもりはないので、3文字を追加しても大したことはありません。-Dスイッチマクロ定義は不正行為になることに同意しますが、他のコンパイラフラグは、リンクしたスレッドの人々にとっても合法であるように見えるため、私にとっては合法であるように見えます。あなたがC ++とPython /バッシュ/ Perlのなどの間で正確にも活躍の場ではないだろう、単純なコンパイラスイッチを絞り出すどれ利点
ダレン

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

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は、ハードコーディングが短くなることを認識しています。
カイルカノス14

1+1+1は、より短い9文字です"two".length()"。そしてString[] a必要ですか?
カイルカノス14

それはちょっと不正行為のように感じました。はい、String [] aが必要です。
14

不正行為ではなく、何人かの人々がそれを使用しています:D
カイルカノス14

3

Befunge-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を下に。ほとんどのオンライン通訳者は、行の長さに問題があります(限界を超えています)。

Befunge-98コンパイラをオンラインで見つけることができませんでしたが、PyPIで利用可能なpyfungeを使用できます。
waylon531 14

3

Groovyの- 140の 139文字

ウィリアム・バルボサの答えの影響を受けたゴルフ:

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

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文字節約されます。
カイルカノス14

2
NそしてR、マクロを作成するよりも、それらをインライン化する方が良いでしょう:一度のみ表示されます。

上記のコメントなどを使用すると、これを200に凝縮できます(コンパイラーが必要とするインクルードおよびネームスペースを含む場合でも):#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.";}
ハーゲンフォンエイツェン

2

Java(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 14

4
@xem、私はそれが法律の条文に適合することを知っていますが、私はUnicode圧縮(または他のコンパイラ/ジェネレータ)のファンではありません。私の考えでは、ゴルフはスキルのテストであり、すべてのコードは手作りである必要があります...それは私だけです。
アルコニャ14

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=o" rock,\n":c:c:o c:s;o=(" o'clock"++)

しかし、1文字余分にかかることが判明しました。すべての「時」/「ロック」/「オック」を圧縮する方法はありますか?


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

数字はありません。2の1がつながれない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";

末尾のフルストップがありません。
ジョーイ14

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まで下げることができます。
ジョーイ14

@Јοеу確かに、アドバイスをありがとう!
DarkAjax 14

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.