もっと頑張って、もっと良くする


26

このチャレンジでのあなたの目標は、ダフト・パンクのより強く、より良く、より速く、より強く歌詞を出力することです。具体的には、次のテキストを出力します。

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

出力には、末尾の改行または末尾の空白が含まれる場合があります。

組み込みの圧縮方法は使用できません。

これはコードゴルフなので、最短のコードが勝ちます!


1
@feersumはい、あなたが歌を聴くと、彼がAfterを言い始め、その後一時停止することがわかります。ハイフンを追加して、休憩を示し、人々を激怒させました。ただし、必要に応じて削除できます。
TreFox

9
私はHQ9+Daft-Punkこれを印刷するような
エソランが

3
少なくとも組み込みの圧縮方法を許可しないでください。
flawr

9
「世界一周」の歌詞はもっと簡単だっただろう。;)
レトコラディ

3
この歌は私の頭の中にある最初の曲で、リックロールの複製ではありません。私はメタにそれを撮影したmeta.codegolf.stackexchange.com/q/6956/15599
レベル川セント

回答:


11

ルビー、308 303

puts a='Work It|Make It|Do It|Makes Us|Harder|Better|Faster|Stronger|More Than|Hour|Our|Never|Ever|After|Work Is|Over

'.split(?|),a
56.times{|i|puts a[j=i%4/2*4+i%4*2]+' '+a[j+4]+[[' ',', ','
']["l4yq62lhgnizb0kfu".to_i(36)/3**i%3]+a[j+1]+' ',''][i%51/48]+[a[j+5],['','Af-'][i%44/32]][7619655>>i-28&1]}

アルゴリズム

歌のイントロ:16個のトークンを受け取り、2回印刷します(最後のトークンには余分な改行が付いています)

詩:トークンを一緒にさざ波を立てて、次の順序で詩を作ります。

 0  4  1  5
 2  6  3  7
 8 12  9 13
10 14 11 15

一部の行では、最後のトークンが省略されるか、と交換されAf-ます。これらの行は、マジック番号0x744447 = 7619655の1ビットで示されます。

3行目では、最後から2番目のトークンも省略されます。 i%51/48==1

行の中央の句読点は、のいずれかです' ' ', ' '\n'。これらは、02220010000200100010001001110010001000100010001000100010(基数3)= "l4yq62lhgnizb0kfu"(基数36)でエンコードされます。

コメント付き

puts a='Work It|Make It|Do It|Makes Us|Harder|Better|Faster|Stronger|More Than|Hour|Our|Never|Ever|After|Work Is|Over

'.split(?|),a                                                    #Set up array containing all 16 tokens, print it, and print it again (note newlines at end of last token.)

56.times{|i|                                                     #14 verses, 4 lines each

puts a[j=i%4/2*4+i%4*2]+                                         #expression cycles through 0,2,8,10. Print the first token on the line.

' '+a[j+4]+                                                      #print a space, and the second token on the line.

[[' ',', ','
']["l4yq62lhgnizb0kfu".to_i(36)/3**i%3]+a[j+1]+' ',''][i%51/48]+ #if i%51/48==1,print nothing. Otherwise print the 3rd token, followed by a space, and preceded by one of ' ' or ', ' or '\n'

[a[j+5],['','Af-'][i%44/32]][7619655>>i-28&1]                    #if 7619655>>i-28&1==0 print the fourth token. Otherwise print either nothing or Af- depending on the value of i%44/32

}

9

Perl、316 309 308 307バイト

ソースはLatin-1としてエンコードする必要があります。

@c=split b,'
Â×
Ô
ÚáÐÙáÒ
ÅOÆÖáEváAftáØ
bÑÏábÝà
bÑÈ-
bÈÇÈÇbHoÆbur
btáÑbÏßËÌÊßÉbHoÜAfbÔ ÒÍbÝà ÐÎber, b Evb× ÙbÓ ÚbBettábOÜØ ÖßbStrongáÛbÕ
ÞàbÝs UsbOvábNevbDoàbÞ IsbFastbHardbMore Thanbur bMakebWorkber b Itber
';$e='ÞàÀÓÀÄÄÄÈÇÏÌÂÎÌÔ
ÛÍÌÅÃÃÃÁËßÊßÅÁÎáÛÍáÁËáÊáÉÇÕ';$f=chr$_+192,$e=~s/$f/$c[$_]/g for 0..34;print$e

説明

オリジナルの歌詞から始めます。簡潔にするために、それらが

lyrics = "Work Work Harder Harder"

これで、頻繁に発生する短い部分文字列(≥3文字)が見つかりました。この場合、"Work "2回発生します。各出現を文字0xE1に置き換えます。配列内の置換された文字列も覚えています。

lyrics = "ááHarder Harder"
substs = ["Work "]

次のサブストリング、"Harder"は0xE0に置き換えられます。substs配列は、前方に成長します:

lyrics = "ááà à"
substs = ["Harder", "Work "]

これは、文字0xC0になるまで合計34回繰り返されます。

次にsubsts、文字b(歌詞には表示されない)をセパレータとして使用して連結します。Perlコードでは、substsアレイはに格納されている@c(裸の単語を使用してb伝えるためにsplit分割する場合)、新しいごちゃ混ぜに歌詞であり$e、そしてコードは、単に34個の置換を反転させます。


1
説明はありますか?
feersum

1
@feersum:完了。
ティムウィ

5

Sprects、302バイト

:xxnnnnnnnmW12603 27428 3s59qp wb12604280qpb12603 2742803s59qp0wjb:ncvb:mcQb:WcEb:x1203 204203s50607809q0w0y0i0p0j01l0z00:c1263 27428, 3s59:vqp wj:Qqp, w:Eqp wAf-:b0y1liz00:0\n:1Work :2It :3Make:4Do :5 Us :6Harder :7Better\n:8Faster:9Stronger\n:qMore Than :wHour :yOur :iNever :pEver:jAfter :lIs :zOver

私は最近この言語を作成し、この課題でテストすることにしました。これは、出力\n、それはHTMLに出力しますが、インタプリタはJavaScriptで書かれているので、新しいラインの代わりにね。このため、<br>sの代わりに\nsを使用したバージョンがあります。

:xxnnnnnnnmW12603 27428 3s59qp wb12604280qpb12603 2742803s59qp0wjb:ncvb:mcQb:WcEb:x1203 204203s50607809q0w0y0i0p0j01l0z00:c1263 27428, 3s59:vqp wj:Qqp, w:Eqp wAf-:b0y1liz00:0<br>:1Work :2It :3Make:4Do :5 Us :6Harder :7Better<br>:8Faster:9Stronger<br>:qMore Than :wHour :yOur :iNever :pEver:jAfter :lIs :zOver

とても興味深い。ここでは、チャレンジの前に言語/インタープリター/コンパイラーが存在する必要があるというルールがあります。通訳の日付は表示されませんが、いつ公開されましたか?
レベルリバーセント

@steveverrill私は昨日それを作りました。私の答えは無効だと思います。
DanTheMan

3
メタに関するコンセンサスは、これはまだ投稿できますが、勝利には適用されないということです。回答に免責事項を追加して、OP
Downgoat

er単一のトークンを作成できますか?
ソロモンウッコ

4

GolfScript(275バイト)

これには印刷できないASCII文字が含まれているため、16進ダンプを次に示します。

0000000: 3a6b 2757 6f72 6b20 4974 0a4d 616b 6586  :k'Work It.Make.
0000010: 0444 6f8c 0873 2055 730a 4861 7264 6572  .Do..s Us.Harder
0000020: 0a42 6574 7485 0346 6173 8504 5374 726f  .Bett..Fas..Stro
0000030: 6e67 9503 4d6f 7265 2054 6861 6e0a 486f  ng..More Than.Ho
0000040: 7572 0a4f 8203 4e65 76ae 0345 8304 4166  ur.O..Nev..E..Af
0000050: b204 df06 730a 4f96 048c 07ed 7020 d606  ....s.O.....p ..
0000060: 20f4 0720 de07 fb05 20e4 062c 9b05 7320   .. .... ..,..s 
0000070: 5573 20ee 1220 df04 20f3 0420 e406 f903  Us .. .. .. ....
0000080: 20e8 0720 4e65 9b04 eeff eeff eeb6 d206   .. Ne..........
0000090: fe03 e817 df0f 2ce0 05da 5c27 d908 2042  ......,...\'.. B
00000a0: 6574 d303 e017 2053 7472 6f6e 67bd 03e9  et.... Strong...
00000b0: 0ee8 0520 4166 2dec ffec 040a ec1b eb26  ... Af-........&
00000c0: e728 d80c c60f c128 4d61 6b65 d004 4265  .(.....(Make..Be
00000d0: 74c3 04d0 0e9a 0373 2055 7320 5374 726f  t......s Us Stro
00000e0: 6e67 e212 486f e303 4166 fc04 ed16 277b  ng..Ho..Af....'{
00000f0: 6b7b 7b6b 247d 2a30 3a6b 3b7d 7b31 3237  k{{k$}*0:k;}{127
0000100: 2e32 243c 7b2d 3a6b 7d2a 3b7d 6966 7d2f  .2$<{-:k}*;}if}/
0000110: 5d28 2b                                  ](+

これはどのように作動しますか?私が知る限り、「さざ波を立てる」戦略を使用しているのは私だけであるように思われます。それでも、それは私がこの答えの後ろに2位にいることを意味します。
レベルリバーセント

手書きのLempel-Ziv。面白くも何とも。これは、私がメタで作成しようとしたポイントでしたが、十分に納得がいくほどではありませんでした。
ピーターテイラー

1
歌の構造を最大限に活用している人がほとんどいないことに本当に失望しています。私がRubyで2位であり、わずか28バイトしか後ろにいないという事実からも明らかなように、チャンスがありました。ゴルフスクリプトへの私の回答のポートは275バイトよりも短くなると信じています。そうでないと思いますか?
レベルリバーセント

一連の文法ジェネレータを試してみましたが、LZが先に出てきたことに驚きました(ただし、貪欲な文法ビルダーは1バイトしか遅れていませんでしたが)。しかし、このGolfScriptの移植版または276バイトの貪欲な文法アプローチのRubyの移植版のいずれかが303バイト未満で出てきたとしても、私は驚かないでしょう。
ピーターテイラー

2

ルビー-643バイト

編集:899から830にゴルフダウン。

Edit2:830-> 755。

編集3:755-> 684。

編集4:684-> 670。

Edit5:670-> 643。

私は実際にルビーを使用していませんので、これはゴルフができると確信しています、これは単なる試みです:

l=%w[Work Make Do Harder Better Faster Stronger More Than Hour Our Never Ever After Over Faster,]
i,j,f,u,d=->x{l[x]+' It'},->x,y{l[x]+' It '+l[y]+' '},->a,b,c,d,e{a+' '+b+' '+c+' '+d+' '+e},'s Us ',l[6]
s,q,w,e,r,y,k=f[l[10],l[0],'Is',l[11],l[14]],j[0,3],j[1,4],j[2,15],j[2,5],->d,e{f[l[7],l[8],l[12],d,e]},l[1]+u
t,z,m=e+k,->a{puts q+w,t+d,y[l[9],a],s,''},y['','']
2.times{puts i[0],i[1],i[2],k,l[3],l[4],l[5],d,l[7]+' '+l[8],l[9],l[10],l[11],l[12],l[13],l[0]+' Is',l[14],''}
7.times{z[l[13]]}
puts q+i[1],t,f[l[7],l[8],l[12]+',',l[9],''],s,''
3.times{z['Af-']}
puts q,w,r+k+d,y[l[9],''],s,'',q,r,m,s,'',q,w,r,k+d,m,l[9]+' '+l[13],s

2

JAVA 518 / 490Bytes

編集:不要な7バイトとstatic {}トリックを使用したJava 6バージョンの追加Edit2:説明expand

class E{public static void main(String[]_){String l="\n#, #Work#Make#Do#Makes Us#Hard#Bett#Fast#Strong#More#Than#Hour#Our#Nev#Ev#Aft#Af-#Work Is#Ov# #er# It",a="cwadwaewafagvahvaivajvakulamanaovapvaqvasatvaa",z="anusuovutvaa",y="kulupvu",x="cwugv",w="fujva",b=x+"udwuhvuaewuivb"+w,c=b+y+"muqvu"+z,d=x+"bdwaewuivbfakulupvbm"+z,e=b+y+"mur"+z,f=x+"adwuhvaewuivu"+w+y+z+x+"aewuivakulupv"+z+x+"adwuhvaewuiva"+w+"kulupvamuqv"+z,r=a+a+c+c+c+c+c+c+c+d+e+e+e+f;for(char o:r.toCharArray())System.out.print(l.split("#")[o-97]);}}

java6:

class E{static{String l="\n#, #Work#Make#Do#Makes Us#Hard#Bett#Fast#Strong#More#Than#Hour#Our#Nev#Ev#Aft#Af-#Work Is#Ov# #er# It",a="cwadwaewafagvahvaivajvakulamanaovapvaqvasatvaa",z="anusuovutvaa",y="kulupvu",x="cwugv",w="fujva",b=x+"udwuhvuaewuivb"+w,c=b+y+"muqvu"+z,d=x+"bdwaewuivbfakulupvbm"+z,e=b+y+"mur"+z,f=x+"adwuhvaewuivu"+w+y+z+x+"aewuivakulupv"+z+x+"adwuhvaewuiva"+w+"kulupvamuqv"+z,r=a+a+c+c+c+c+c+c+c+d+e+e+e+f;for(char o:r.toCharArray())System.out.print(l.split("#")[o-97]);}}

テキスト内の多くの「ER」のヒントを提供してくれた@Chris Drostに感謝します。最初の文字列はルックアップテーブルであり、2番目の部分は小文字(asciiの連続ブロック)を使用して、値からaのマジック値を減算することにより、テーブルへのインデックスを作成します。

2番目の部分は、長さの異なる複数の文字列で構成され(短い文字列は、複数の詩の間で共有される共通部分です)、文字のループが発生する前に長い文字列にアセンブルされます


いい答えだ!+1と私はそれが1.5年程度となっています知っているが、あなたはゴルフ二つのことをすることができます:削除をlし、文字列を含む使用するすべて#のために、各ループ、および変更を直接にcharまで-ため、各ループでintfor(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]);でどの結果-5バイト/ 513バイト
ケビンCruijssen

2

JavaScript ES6、 440バイト 438バイト

これは、単純な圧縮最適化の束です。ワンライナーとして:

eval("a='w_m_d_u_h_b_f_s_M_H_O_N_E_A_W_VX';b='w hTm b_d f,Tu s_M ETH A_O W N VX';c=bRA/,'Y');o={};'wWork It|mMake It|dDo It|uMakes Us|hHard&bBett&fFast&sStrong&MMore Than|HHour|OOur|NNev&EEv&AAft&WWork Is|VOv&X\\n\\n|YAf-|_\\n|T 'R&/g,'er|').split('|').map(x=>o[x[0]]=x.slice(1));console.log((a+a+b.repeat(7)+bR._/g,'_')R,?T/g,',T')+c+c+c+bRT/,'_')R,/,'')+bR,?T. ._/g,'_')+bR,?T/g,'_'))R\\w/g,x=>o[x]).trim())".replace(/R/g,'.replace(/'))

これは、を介して実行可能なスクリプトになるように記述されましたiojs --harmony_arrow_functions file.jsconsole.log()「歌詞を出力する」の意味に応じて、オーバーヘッドを削減できます。

説明

outerの実行後.replace()、渡されるコードevalは次のとおりです。

// The first three lines, with each phrase compressed to a single character, newlines
// compressed to _, and block-endings compressed to X. Call this compressed-format.
a = 'w_m_d_u_h_b_f_s_M_H_O_N_E_A_W_VX';

// The compressed-format main block: this is repeated seven times literally but
// every other stanza, besides `a` above, ultimately uses some simple variant
// of this block.
b = 'w hTm b_d f,Tu s_M ETH A_O W N VX';
// The new character T above is a new character we're adding to compressed-format, it is
// a space in the main block but also a hook for some regular expressions later.

// We need one more entry in compressed-format: some blocks, here assigned to
// the variable `c`, shorten "After" to Y = "Af-".
c = b.replace(/A/, 'Y');

// Now we want to build a lookup table for this compressed format above. That is done by
// these lines, which have also been compressed:
o={};
'wWork It|mMake It|dDo It|uMakes Us|hHard&bBett&fFast&sStrong&MMore Than|HHour|OOur|NNev&EEv&AAft&WWork Is|VOv&X\n\n|YAf-|_\n|T '
    .replace(/&/g, 'er|')
    .split('|')
    .map(x => o[x[0]] = x.slice(1));
// The fact that so many fragments end in 'er' allows us to actually shave a couple 
// bytes above, but the compression scheme is fundamentally creating a dict like
//     {a: "Phrase 1", b: "Phrase 2", c: "Phrase 3", d: "Phrase 4"}
// from the string "aPhrase 1|bPhrase 2|cPhrase 3|dPhrase4".

// Now we have the part that actually does the work:
console.log(
    ( // build-string phase
        // first two opening blocks `a`
        a + a + 

        // seven repetitions of `b`
        b.repeat(7) +

        // a version of `b` without final words and with commas before each T.
        b.replace(/._/g, '_').replace(/,?T/g, ',T') + 

        // three repetitions with the 'Af-' suffix.
        c + c + c + 

        // one with the first T converted into a newline and no commas
        b.replace(/T/, '_').replace(/,/, '') + 

        // one with only the first halfs of the three lines
        b.replace(/,?T. ._/g, '_') + 

        // one with no commas and all T's converted to newlines.
        b.replace(/,?T/g, '_')
    ) // end build-string phase
    // Now we convert from compressed-format to actual format
    .replace(/\w/g, x => o[x])
    // We are only told that one trailing newline is allowed; we have two extra:
    .trim() 
)

称賛

  • @vihanは、ES6にも.repeat文字列用にこの光沢のある新しい関数があり、2バイトを節約することを思い出しました。

おそらくb.repeat(7)代わりに使用できますb+b+b+b+b+b+b
-Downgoat

1

PowerShell、659バイト

$a=@(" ","`n",",","Stronger","Make It","Do It","Makes Us","Harder","Better","Faster","Work It","More Than","Hour","Our","Never","Ever","After","Work Is","Over","Af-")
$z="1000070"
$y="01130017001400180101"
$x="010500090200060"
$v="00301110015001200"
$b="100104010501060107010801090103011101120113011401150116011701180101"
$c=$z+"0040008$x$v"+"16$y"
$d=$z+"20004$x"+"1110015020012$y"
$e=$z+"0040008$x$v"+"19$y"
$f=$z+"10400080105000900060003011100150012$y"
$g=$z+"105000901110015$y"+"10000701040008010500090106000301110015011200160113001700140018"
$($b,$b,$c,$c,$c,$c,$c,$c,$c,$d,$e,$e,$e,$f,$g|%{for($i=0;$i-lt$_.length;$i+=2){$a[$_.Substring($i,2)]}})-join''

キーワードの配列を作成$aし、forループに送信される一連の数値文字列を使用して歌詞をエンコードします。ループは2桁の部分文字列を受け取り、対応するキーワードを$a配列から引き出し、最後に-join''それをすべて連結します。

これは、この方法を実行できる程度に優れていると思います。たとえば、040008新しい変数に置き換えるなど、さらにゴルフをしようとすると、サブストリングの長さが足りないため、数バイト長くなりました必要なすべての余分な引用符を説明します。私が始めてからいくつかの新しい回答が投稿されましたが、PowerShellでは短いかもしれないように少し異なる方法があります(2桁ではなくASCII文字を使用してエンコードするなど)、私は固執しますこれです。

編集-私が使用した置換エンコーディングを忘れました:

00  <space>
01  `n
02  ,
10  Work It
04  Make It
05  Do It
06  Makes Us
07  Harder
08  Better
09  Faster
03  Stronger
11  More Than
12  Hour
13  Our
14  Never
15  Ever
16  After
17  Work Is
18  Over
19  Af-

使いやすい文字のアスキーコードを取得する方法を取得した場合、それはバイトの束を削るために
うまくいくはずです-masterX244

1

GolfScript、251バイトのゴルフ

'Work It
Make It
Do It
Makes Us
Harder
Better
Faster
Stronger
More Than
Hour
Our
Never
Ever
After
Work Is
Over

'2*.n/:a;56,{:@4%.2&+2*:^a=' ':|4^+a='jSRSSS]SSSSSST'81base 3@?/3%[|', 'n]=^)a=+@ 51%48/!*|237118176 2 55@-?/1&@44%32/'Af-'*5^+a=if^9/n*n}/

オンラインでお試しください!

[]それに応じて、不要で簡素化されたコードを削除しました。変更ijする@^空白の許可を除去します。同じ3文字が繰り返されるのを避けるために' '、変数|に最初の出現を割り当てました。

GolfScript、最初の作業バージョン262バイト

'Work It
Make It
Do It
Makes Us
Harder
Better
Faster
Stronger
More Than
Hour
Our
Never
Ever
After
Work Is
Over

'2*.n/:a;56,{:i;[i 4%.2&+2*:j a=' '4j+a='jSRSSS]SSSSSST'81base 3i?/3%[' '', 'n]=j)a=+i 51%48/!*' '237118176 2 55i-?/1&i 44%32/'Af-'*5j+a=if j 9/n*n]}/

オンラインでお試しください!

これは、同じ基本アルゴリズムを使用して、Rubyの回答をgolfscriptに移植したものです。トークンのリストを2回出力し、それらを詩にリフリングし、行ごとに詩を作成し、それぞれの特性を調整します。

いくつかの違いがあります。正しいミッドラインの句読点の番号は、ベース81にあります(便利なことに、これは1節につき1つの印刷可能なASCII文字になります)。最後のトークンを印刷するかどうかをエンコードする数値は、インデックスが55-i代わりであるため変更されますi-28(後者は、整数に切り捨てるのではなく小数を生成する負のべき乗の問題を引き起こすことが判明しました)

コメント済み

'Work It
Make It
Do It
Makes Us
Harder
Better
Faster
Stronger
More Than
Hour
Our
Never
Ever
After
Work Is
Over

'2*                                               #make a string of all the tokens twice and push on the stack
.n/:a;                                            #duplicate the string, split into tokens at newline to form array. Assign to a
56,{:i;                                           #iterate through i= (0..55) 
  [i 4%.2&+2*:j                                   #calculate j=(i%4+(i%4&2))*2 to cycle through 0 2 8 10.
  a=' '                                           #leave a[j] on stack followed by space (token A)
  4j+a=                                           #leave a[j+4] on stack (token B))
  'jSRSSS]SSSSSST'81base 3i?/3%[' '', 'n]=j)a=+   #leave ' ' ', ' or newline on stack as appropriate followed by a[j+1] (token C)
  i 51%48/!*                                      #multiply the data described in the previous line by  !(i%51/48)  (1 or 0)
  ' '                                             #leave a space on the stack
  237118176 2 55i-?/1&                            #leave 237118176/2**55-i & 1 on stack (true or false indicates token D required)
  i 44%32/'Af-'*5j+a=                             #leave i%44/32= 0 or 1 copies of 'Af-' on the stack. Leave a[j+5] on the stack.  
  if                                              #depending on value of last but one line, select an option from the previous line.
  j 9/n*n]                                        #leave a newline on the stack. if 9/n is 1 or more (last line of verse) leave an additional newline
}/                                                #close the loop
                                                  #printing done by implied stack dump on program exit.

252バイト。未使用のシンボルを変数名として使用して、空白を避け" "、変数にスペース()を保存します。また、習慣から外れた変数に割り当てた後にポップしないでください。
エリックアウトゴルファー

@EriktheOutgolferはヒントに感謝しますが、私はすでにそれらのほとんどを組み込んだ251バイトのバージョンを投稿しました。あなた51は私が逃した前にスペースを見つけました。後で修正し、場合によっては他の短縮方法を探します。これは私の最初のgolfscriptプログラムであり、シンボルを変数として使用すると読みにくくなります。したがって、少なくとも現時点では、262バイトの最初の作業バージョンを残しました。
レベルリバーセント

ああ、どうやらそうだね、笑。
エリックアウトゴルファー

0

Python-1056文字

a,b,d,s,w,i,t,e,f,h,H,mi,mu,mt,ad,n,o,O="After","Better","Do It ","Stronger","Work ","Is ","It ","Ever ","Faster ","Harder ","Hour ","Make It ","Makes Us ","More Than ","Af-","Never ","Our ","Over"
owinO=o+w+i+n+O
mus=mu+s
df=d+f
dfmu=df[0:-1]+", "+mu
dfmus=df+mus
dfcmus=df[0:-1]+", "+mus
ha=h+a
Ha=H+a
mib=mi+b
mte=mt+e
mteh=mte+H
mtech=mte[0:-1]+", "+H
mtehad=mteh+ad
mteha=mteh+a
wi=w+i
wt=w+t
wth=wt+h
wthmt=wth[0:-1]+", "+mi
wthmib=wth+mi+b
E = ""
l =[wt,mi,d,mu,h,b,f,s,mt,H,o,n,e,a,wi,O,E,wt,mi,d,mu,h,b,f,s,mt,H,o,n,e,a,wi,O,E,wthmib,dfcmus,mteha,owinO,E,wthmib,dfcmus,mteha,owinO,E,wthmib,dfcmus,mteha,owin
O,E,wthmib,dfcmus,mteha,owinO,E,wthmib,dfcmus,mteha,owinO,E,wthmib,dfcmus,mteha,owinO,E,wthmib,dfcmus,mteha,owinO,E,wthmt,dfmu,mtech,owinO,E,wthmib,dfcmus,mteha
d,owinO,E,wthmib,dfcmus,mtehad,owinO,E,wthmib,dfcmus,mtehad,owinO,E,wth,mib,dfmus,mteh,owinO,E,wth,df,mte,owinO,E,wth,mib,df,mus,mte,Ha,owinO]

for ln in l:
    print ln

変数名についてはまだ改善の余地がありますが、開始点です。


2
すべての変数名のリストを個別に書き出して、まだ使用されていない単一の文字を簡単に確認してから、長い変数名を検索置換すると役立つ場合がありますか?
trichoplax

0

ルビー、486バイト

i=%w(Work\ It Make\ It Do\ It Makes\ Us Harder Better Faster Stronger More\ Than Hour Our Never Ever After Work\ Is Over)
z=i[1]+p+i[5]
y=i[2]+p+i[6]
x=z+n+y
w=i[3]+p+i[7]
v=i[8]+p+i[12]
u=w+n+v
t="Our "+i[14]+" Never Over"
s=i[0]+p+i[4]
r=i[9]+p+i[13]
n="\n"
p=' '
m=', '
a=i.join n
q=n+t
l=s+n
b=s+p+x+m+u+p+r+q
c=s+m+i[1]+n+y+m+i[3]+n+v+m+i[9]+q
d=b.gsub("After","Af-")
e=l+x+p+u+p+i[9]+q
f=l+y+n+v+q
g=l+x+n+u+n+r+q
def o s
s+"

"
end
puts o(a)*2+o(b)*7+o(c)+o(d)*2+o(d)+o(e)+o(f)+g

0

ルビー、483バイト

puts "#{'a buc bud bucs eufuguhuiuj kulumuoupuqua rutuu'*2}#{'a b f c b gud b h, cs e iuj k p l qum a r o tuu'*7}a b f, c bud b h, cs euj k p, lum a r o tuu#{'a b f c b gud b h, cs e iuj k p l num a r o tuu'*3}a b fuc b gud b h cs e iuj k p lum a r o tuua b fud b huj k pum a r o tuua b fuc b gud b hucs e iuj k pul qum a r o tu".gsub /./,Hash[[*?a..?u,' ',','].zip %w{Work It Make Do Us Harder Better Faster Stronger More Than Hour Our Af- Never Ever After Is s Over}+[?\n,' ',',']]

歌で使用されるすべての単語を単一の文字にエンコードし、いくつかのスタンザを乗算し、エンコードされた文字を実際の歌詞に置き換えます。コンマ、スペースはそのままです。u改行です。


2
イースターエッグ:フレーズを含むfuc b gud
-dkudriavtsev

0

PHP、434バイト

$m="Make It";$b="$m Better";$o="Our Work Is Never Over
";$u="Makes Us";$s="$u Stronger";$d="Do It";$f="$d Faster";$e="More Than Ever";$h="Hour";$w="Work It Harder";echo strtr("001111111$w, $m
$f, $u
$e, $h
$o
222$w
$b
$f $s
$e $h
$o
$w
$f
$e
$o
$w
$b
$f
$s
$e
$h After
$o",["Work It
$m
$d
$u
Harder
Better
Faster
Stronger
More Than
$h
Our
Never
Ever
After
Work Is
Over

","$w $b
$f, $s
$e $h After
$o
","$w $b
$f, $s
$e $h Af-
$o
"]);

オンラインでお試しください!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.