더 열심히 일하고 더 나아지십시오


26

이 도전에서 당신의 목표는 가사를 Daft Punk의 Harder, Better, Faster, Stronger 로 출력하는 것 입니다. 구체적으로 다음 텍스트를 출력하십시오.

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 예, 노래를 들으면 그가 말을 시작한 다음 일시 중지하는 것을 볼 수 있습니다. 나는 휴식을 보여주고 사람들을 화나게하기 위해 하이픈을 추가했습니다. 그래도 원하는 경우 제거 할 수 있습니다.
TreFox

9
내가 좋아하는 어떤 esolang 없다 충격있어 HQ9+Daft-Punk이 ... 그 인쇄
Fatalize

3
최소한 내장 압축 방법을 허용하지 않아야한다고 생각합니다.
flawr

9
"Around the World"의 가사가 더 쉬웠을 것입니다. ;)
Reto Koradi

3
이 노래는 내 마음에있는 동안 최초의 하나입니다 하지 않습니다 rickroll의 중복. 나는 그것을 meta meta.codegolf.stackexchange.com/q/6956/15599로
Level River St

답변:


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 개의 토큰을 가져 와서 두 번 인쇄합니다 (마지막 줄 바꿈이 추가됩니다)

구절 : 다음 순서로 한 줄에 4 개의 토큰으로 구절을 만들기 위해 토큰을 리플 링합니다.

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

일부 행에서는 마지막 토큰이 생략되거나 교환됩니다 Af-. 이 줄은 매직 번호 0x744447 = 7619655에서 1 비트로 표시됩니다.

세 줄에서 두 번째 토큰도 생략됩니다. 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

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 "두 번 발생합니다. 각 발생을 문자 0xE1로 바꿉니다. 또한 배열에서 대체 된 문자열을 기억합니다.

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

다음 부분 문자열 "Harder"은 0xE0으로 대체됩니다. substs배열은 전면을 향해 성장한다 :

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

문자 0xC0에 도달 할 때까지 총 34 회 반복됩니다.

이제 substs문자 b(가사에서는 표시되지 않음)를 구분 기호로 사용하여 연결합니다 . 펄 코드에서, 상기 substs어레이에 저장된다 @c(bareword는 사용을 b말해 split분할 할 경우), 새로운 뒤죽박죽 가사에 $e, 상기 코드는 단지 34 개 개의 치환을 역전.


1
어떤 설명이 있습니까?
feersum

1
@feersum : 완료
Timwi

5

Spects , 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로 출력하기 때문에 대신 새로운 라인이야,하지만 인터프리터는 자바 스크립트로 작성된 것입니다. 이 때문에 <br>s 대신 s를 사용 하는 버전이 있습니다 \n.

: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

매우 흥미로운. 여기서 도전하기 전에 언어 / 통역사 / 컴파일러가 존재해야한다는 규칙이 있습니다. 통역사가 언제 출판 되었는가?
Level River St

@steveverrill 어제 만들었습니다. 내 대답이 유효하지 않은 것 같습니다.
DanTheMan

3
메타 에 대한 합의 는 게시 할 수는 있지만 당첨에는 적용 할 수 없다는 것입니다. OP
Downgoat

er단일 토큰 을 만들 수 있습니까 ?
솔로몬 Ucko

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                                  ](+

이것은 어떻게 작동합니까? 내가 알 수있는 한, "riffle and omit"전략을 사용하는 유일한 사람인 것 같습니다. 여전히, 나는이 답변 뒤에 2 위를 차지하고 있음을 의미합니다.
Level River St

손으로 코딩 한 렘펠-지브. 흥미로운 것은 없습니다. 메타로 만들려고했던 요점은 분명하지만 설득력이 충분하지 않습니다.
피터 테일러

1
글쎄요, 그 노래의 구조를 최대한 활용 한 사람은 거의 없습니다. 기회는 내가 루비에서 2 위, 28 바이트 뒤에 있다는 사실에 의해 입증되었습니다. 골프 스크립트에 대한 내 대답의 포트가 275 바이트보다 짧을 것이라고 생각합니다. 다르게 생각하십니까?
Level River St

나는 문법 생성기의 전체 배터리를 시험해 보았고 LZ가 앞서 나왔다는 것에 놀랐습니다 (욕심 많은 문법 작성기는 1 바이트 뒤에 있었음에도 불구하고). 그러나이 GolfScript 포트 또는 Ruby에 대한 276 바이트 욕심 문법 접근법의 포트 중 하나가 303 바이트 미만으로 나왔다면 놀라지 않을 것입니다.
피터 테일러

2

루비-643 바이트

편집 : 899에서 830으로 골프 다운되었습니다.

편집 2 : 830-> 755.

편집 3 : 755-> 684.

편집 4 : 684-> 670.

편집 5 : 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

자바 518/490 바이트

편집 : 7 바이트가 필요없고 static {} 트릭 Edit2가있는 Java 6 버전이 추가되었습니다.

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에게 감사합니다. 첫 번째 문자열은 조회 테이블이고 두 ​​번째 부분은 값에서 마법의 값을 빼서 소문자 (아스키의 순차 블록)를 테이블의 인덱스로 사용합니다.

두 번째 부분은 길이가 다른 여러 문자열로 구성되며 (짧은 문자열은 여러 구절에서 공유되는 공통 부분 임) 문자를 통한 반복이 발생하기 전에 긴 문자열로 조립됩니다.


좋은 대답입니다! 하나는 내가이 1.5 년에 대해되었습니다 알아,하지만 당신은 골프 두 가지를 할 수 있습니다 제거를 l하고, 문자열이 포함 된 사용하는 모든 #(가)에 대한-각 루프 및 변경 직접적으로 char에 - 각 루프 int: for(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 바이트 .
Kevin Cruijssen

2

자바 스크립트 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.js; 를 통해 실행 가능한 스크립트로 작성되었습니다 . console.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루프 로 보냅니다 . 루프는 두 자리 수의 하위 문자열을 가져 와서 해당 키워드를 $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-

사용하기 쉬운 문자의 ASCII 코드를 얻는 방법이 있다면 많은 바이트를
줄일 수 있습니다.

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@^공백의 허가를 제거합니다. 동일한 세 문자가 반복되지 않도록 ' '변수 |에 첫 번째 발생을 지정했습니다 .

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]}/

온라인으로 사용해보십시오!

이것은 동일한 기본 알고리즘을 사용하여 내 루비가 골프 스크립트에 대답하는 포트입니다. 토큰 목록을 두 번 출력 한 다음 구절로 리플 링하고 한 줄씩 구절을 작성하여 각 구절의 특성을 조정하십시오.

몇 가지 차이점이 있습니다. 정확한 중간 줄 구두점의 숫자는 기준 81에 있습니다 (편의적으로 이것은 절당 하나의 인쇄 가능한 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 바이트 공백을 피하려면 사용하지 않는 기호를 변수 이름으로 사용하고 변수에 공백 ( " ")을 저장 하십시오. 또한 습관이 아닌 변수에 할당 한 후에는 팝업하지 마십시오.
아웃 골퍼 에릭

팁에 감사드립니다. 당신 51은 내가 그리워 하기 전에 공간을 발견했다 . 나중에 고치고 다른 방법으로 단축 할 수있을 것입니다. 이것은 내 첫 번째 골프 스크립트 프로그램이며 심볼을 변수로 사용할 때 읽는 것이 매우 어렵다는 것을 알았습니다. 따라서 적어도 지금은 272 바이트의 첫 번째 작업 버전을 남겨 두었습니다.
Level River St

아, 분명히 했어, lol.
아웃 골퍼 에릭

0

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