Làm việc chăm chỉ hơn, làm cho nó tốt hơn


26

Trong thử thách này, mục tiêu của bạn sẽ là xuất lời bài hát cho Harder, Better, Faster, Stronger của Daft Punk . Cụ thể, xuất văn bản này:

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

Đầu ra của bạn có thể có một dòng mới hoặc khoảng trắng theo sau.

Được xây dựng trong các phương pháp nén không được phép.

Đây là mã golf, vì vậy mã ngắn nhất sẽ thắng!


1
@feersum Có, nếu bạn nghe bài hát bạn có thể thấy anh ấy bắt đầu nói Sau đó rồi dừng lại. Tôi đã thêm dấu gạch nối để hiển thị giờ nghỉ và làm mọi người tức giận. Tôi có thể loại bỏ nó nếu bạn muốn, mặc dù.
TreFox

9
Tôi bị sốc vì không có esolang như thế HQ9+Daft-Punkin điều này ...
Fatalize

3
Tôi nghĩ bạn ít nhất không cho phép xây dựng trong các phương pháp nén.
flawr

9
Lời bài hát "Vòng quanh thế giới" sẽ dễ dàng hơn. ;)
Reto Koradi

3
Bài hát này là bài hát đầu tiên trong tâm trí tôi, không phải là một bản sao của rickroll. Tôi đã đưa nó đến meta meta.codegolf.stackexchange.com/q/6956/15599
Level River St

Câu trả lời:


11

Ruby, 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]}

Thuật toán

Giới thiệu bài hát: Lấy 16 mã thông báo và in chúng hai lần (lần cuối cùng có thêm một dòng mới)

Các câu thơ: Sắp xếp các mã thông báo lại với nhau để tạo ra các câu thơ, 4 mã thông báo trên mỗi dòng, theo thứ tự sau:

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

Trong một số dòng, mã thông báo cuối cùng bị bỏ qua hoặc trao đổi Af-. Những dòng này được ghi chú với 1 bit trong số ma thuật 0x744447 = 7619655.

Trong ba dòng, mã thông báo áp chót cũng bị bỏ qua, những nơi i%51/48==1

Dấu câu ở giữa dòng có thể là một trong ' ' ', ' '\n'. Chúng được mã hóa theo số 02220010000200100010001001110010001000100010001000100010 (cơ sở 3) = "l4yq62lhgnizb0kfu" (cơ sở 36.)

Với nhận xét

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 byte

Nguồn phải được mã hóa thành 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

Giải trình

Chúng tôi bắt đầu với lời bài hát gốc. Để cho ngắn gọn, hãy giả sử họ là

lyrics = "Work Work Harder Harder"

Bây giờ chúng tôi tìm thấy các chuỗi con ngắn (3 ký tự) xảy ra thường xuyên. Trong trường hợp này, "Work "xảy ra hai lần. Chúng tôi thay thế mỗi lần xuất hiện bằng ký tự 0xE1. Chúng tôi cũng nhớ chuỗi thay thế trong một mảng:

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

Chuỗi con tiếp theo "Harder", được thay thế bằng 0xE0. Các substsmảng phát triển về phía trước:

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

Điều này tiếp tục cho tổng số 34 lần lặp cho đến khi chúng ta nhận được ký tự 0xC0.

Bây giờ chúng tôi ghép nối việc substssử dụng ký tự b(không xuất hiện trong lời bài hát) như một dấu phân cách. Trong mã Perl, substsmảng được lưu trữ @c(sử dụng bareword bđể cho biết splitnơi cần chia), lời bài hát lộn xộn mới được đưa vào $evà mã chỉ đơn giản là đảo ngược 34 thay thế.


1
Có lời giải thích nào không?
frageum

1
@feersum: Xong.
Timwi

5

Sprects , 302 byte

: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

Gần đây tôi mới thực hiện ngôn ngữ này và tôi quyết định thử nghiệm nó với thử thách này. Nó xuất ra \ns thay vì các dòng mới vì nó xuất ra HTML, nhưng trình thông dịch được viết bằng JavaScript. Vì điều này, đây là phiên bản có <br>s thay vì \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

Rất thú vị. Chúng tôi có một quy tắc ở đây là ngôn ngữ / trình thông dịch / trình biên dịch phải tồn tại trước thách thức. Tôi không thấy ngày của bạn thông dịch viên, khi nào nó được xuất bản?
Cấp sông St

@steveverrill Tôi đã làm nó ngày hôm qua. Tôi đoán câu trả lời của tôi là không hợp lệ sau đó.
DanTheMan

3
Đồng thuận trên Meta là điều này vẫn có thể được đăng nhưng không áp dụng để chiến thắng. Có lẽ bạn nên thêm từ chối trách nhiệm vào câu trả lời của mình để thông báo cho OP
Downgoat

Bạn có thể tạo ermột mã thông báo duy nhất không?
Solomon Ucko

4

GolfScript (275 byte)

Điều này chứa các ký tự ASCII không in được, vì vậy đây là một hexdump:

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

Cái này hoạt động ra sao? Theo như tôi có thể nói thì dường như tôi là người duy nhất sử dụng chiến lược "riffle and omit", điều làm tôi ngạc nhiên. Tuy nhiên, điều đó có nghĩa là tôi ở vị trí thứ hai sau câu trả lời này.
Cấp sông St

Mã hóa tay Lempel-Ziv. Không có gì thú vị. Đó là điểm mà tôi đã cố gắng thực hiện trong meta, nhưng rõ ràng là không đủ sức thuyết phục.
Peter Taylor

1
Vâng, tôi thực sự thất vọng vì ít người tận dụng được cấu trúc của bài hát. Cơ hội đã ở đó, bằng chứng là tôi đang ở vị trí thứ hai trong Ruby, chỉ sau bạn 28 byte. Tôi có xu hướng tin rằng một cổng câu trả lời của tôi vào bản golf sẽ ngắn hơn 275 byte. Bạn có nghĩ khác không?
Cấp sông St

Tôi đã thử đầy đủ các bộ tạo ngữ pháp của mình trên đó và rất ngạc nhiên khi LZ xuất hiện trước (mặc dù trình xây dựng ngữ pháp tham lam chỉ đứng sau một byte). Nhưng tôi sẽ không ngạc nhiên nếu một trong những cổng của GolfScript này hoặc một cổng của cách tiếp cận ngữ pháp tham lam 276 byte vào Ruby xuất hiện ở mức dưới 303 byte.
Peter Taylor

2

Ruby - 643 byte

Chỉnh sửa: Chơi gôn từ 899 xuống 830.

Chỉnh sửa2: 830 -> 755.

Chỉnh sửa3: 755 -> 684.

Chỉnh sửa4: 684 -> 670.

Chỉnh sửa5: 670 -> 643.

Tôi chưa thực sự sử dụng ruby, vì vậy tôi chắc chắn rằng điều này có thể bị đánh bại, đây chỉ là một nỗ lực:

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

Chỉnh sửa: không cần thiết 7 byte và thêm phiên bản Java 6 với thủ thuật {} tĩnh Edit2: Mở rộng giải thích

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

Cảm ơn @Chris Drost về gợi ý với nhiều chữ "ER" trong văn bản. Chuỗi đầu tiên là bảng tra cứu, phần thứ hai sử dụng các chữ cái viết thường (là một khối tuần tự trong ascii) làm chỉ mục vào bảng bằng cách trừ giá trị ma thuật của a khỏi giá trị.

Phần thứ hai bao gồm nhiều Chuỗi có độ dài khác nhau (các đoạn ngắn là các phần chung được chia sẻ giữa nhiều câu) được tập hợp thành một chuỗi dài trước khi xảy ra vòng lặp qua các ký tự


Câu trả lời tốt đẹp! +1 Và tôi biết đã khoảng 1,5 năm, nhưng bạn có thể chơi golf hai điều: Xóa lvà sử dụng Chuỗi chứa tất cả #trực tiếp trong vòng lặp cho mỗi vòng lặp và thay đổi charvòng lặp for-Each thành 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]);Kết quả trong -5 byte / 513 byte .
Kevin Cruijssen

2

JavaScript ES6, 440 byte 438 byte

Đây là một loạt các tối ưu hóa nén đơn giản. Như một lớp lót:

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(/'))

Điều này đã được viết để trở thành một kịch bản thực thi thông qua iojs --harmony_arrow_functions file.js; bạn có thể tắt phần console.log()trên đầu tùy theo ý nghĩa của "xuất lời bài hát".

Giải trình

Sau khi thực hiện bên ngoài .replace(), mã được đưa vào evallà:

// 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() 
)

Thanh danh

  • @vihan, người đã nhắc nhở tôi rằng ES6 cũng có .repeatchức năng mới sáng bóng này cho chuỗi, tiết kiệm 2 byte.

Bạn có thể có thể sử dụng b.repeat(7)thay vìb+b+b+b+b+b+b
Downgoat

1

PowerShell, 659 byte

$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''

Tạo một loạt các từ khóa $a, sau đó mã hóa lời bài hát bằng cách sử dụng một chuỗi các chuỗi số được gửi vào một forvòng lặp. Vòng lặp có các chuỗi con gồm hai chữ số, kéo từ khóa tương ứng từ $amảng và cuối cùng là -join''nối tất cả lại với nhau.

Tôi nghĩ rằng điều này cũng tốt như phương pháp này có thể được thực hiện, vì mỗi lần tôi cố gắng chơi gôn hơn (ví dụ, thay thế 040008bằng một biến mới), hóa ra là một vài byte dài hơn vì độ dài chuỗi con không đủ để tài khoản cho tất cả các báo giá thêm cần thiết. Mặc dù đã có một số câu trả lời mới được đăng từ khi tôi bắt đầu có các phương thức hơi khác nhau, có vẻ như chúng có thể ngắn hơn trong PowerShell (như sử dụng các ký tự ASCII để mã hóa, thay vì hai chữ số, có lẽ vậy?), Tôi sẽ gắn bó với cái này.

Chỉnh sửa - quên mã hóa thay thế tôi đã sử dụng:

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-

nếu bạn có cách lấy mã ascii của một ký tự dễ sử dụng thì nên tìm cách loại bỏ một loạt byte
masterX244

1

GolfScript , có 250 byte

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

Hãy thử trực tuyến!

Loại bỏ []mã không cần thiết và đơn giản hóa cho phù hợp. Thay đổi ijđể @^cho phép loại bỏ khoảng trắng. Được chỉ định lần xuất hiện đầu tiên của' ' biến |để tránh lặp lại ba ký tự giống nhau.

GolfScript , Phiên bản làm việc đầu tiên 262 byte

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

Hãy thử trực tuyến!

Đây là một câu trả lời Ruby của tôi thành golfs bằng cách sử dụng cùng một thuật toán cơ bản: xuất ra danh sách các mã thông báo hai lần, sau đó riff chúng vào các câu thơ và xây dựng các câu thơ theo từng dòng, điều chỉnh theo đặc thù của từng câu.

Có một vài sự khác biệt. Số cho dấu chấm câu chính xác nằm ở cơ sở 81 (thuận tiện là điều này tạo ra một ký tự ascii có thể in trên mỗi câu); và mã hóa số có hay không in mã thông báo cuối cùng được sửa đổi vì chỉ mục 55-ithay vìi-28 (chỉ số được tìm thấy gây ra sự cố với công suất âm tạo ra các số phân số thay vì cắt thành số nguyên.)

Đã bình luận

'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 byte. Sử dụng các ký hiệu không được sử dụng làm tên biến để tránh khoảng trắng và lưu trữ khoảng trắng ( " ") trong một biến. Ngoài ra, không bật sau khi gán cho một biến theo thói quen.
Erik the Outgolfer

@EriktheOutgolfer cảm ơn vì những lời khuyên, nhưng tôi đã đăng một phiên bản 251 byte kết hợp hầu hết chúng. Bạn phát hiện ra một không gian trước 51đó mà tôi bỏ lỡ mặc dù. Tôi sẽ sửa nó sau, và có thể tìm cách khác để rút ngắn nó. Đây là chương trình golf đầu tiên của tôi và tôi thấy chúng rất khó đọc khi các biểu tượng được sử dụng làm biến số, do đó tôi cũng đã để lại phiên bản làm việc đầu tiên dài 262 byte của mình ít nhất là bây giờ.
Cấp sông St

Ah bạn rõ ràng đã làm, lol.
Erik the Outgolfer

0

Python - 1056 Charaters

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

Vẫn còn chỗ để cải tiến với tên biến, nhưng đó là một khởi đầu.


2
Có thể giúp viết riêng một danh sách tất cả các tên biến của bạn để bạn có thể dễ dàng xem những chữ cái duy nhất chưa được sử dụng và sau đó tìm kiếm thay thế tên biến dài của bạn?
trichoplax

0

Ruby, 486 byte

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

Ruby, 483 byte

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,' ',',']]

Hoạt động bằng cách mã hóa từng từ được sử dụng trong bài hát thành một chữ cái, nhân một số khổ thơ, sau đó thay thế các chữ cái được mã hóa bằng lời bài hát thực tế. Dấu phẩy, dấu cách được để nguyên. ulà một dòng mới.


2
Trứng phục sinh: chứa cụm từfuc b gud
dkudriavtsev

0

PHP, 434 byte

$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
"]);

Hãy thử trực tuyến!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.