ทำงานให้หนักขึ้นทำให้ดีขึ้น


26

ในการท้าทายนี้เป้าหมายของคุณคือส่งเนื้อเพลงไปที่ Daft Punk's 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นี้พิมพ์ ...
เสียชีวิต

3
ฉันคิดว่าอย่างน้อยคุณควรไม่อนุญาตให้สร้างขึ้นในวิธีการบีบอัด
ข้อบกพร่อง

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 โทเค่นและพิมพ์สองครั้ง (อันสุดท้ายมีบรรทัดใหม่พิเศษ)

โองการ: Riffle โทเค็นเข้าด้วยกันเพื่อทำข้อ 4 โทเค็นต่อบรรทัดตามลำดับต่อไปนี้:

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

Af-ในเส้นบางโทเค็นที่ผ่านมาถูกละไว้หรือแลกเปลี่ยน เส้นเหล่านี้ถูกจดบันทึกด้วยเลข 1 บิตในหมายเลขเวทย์มนตร์ 0x744447 = 7619655

ในสามบรรทัดโทเค็นสุดท้ายจะถูกละเว้นเช่นกัน 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 "เกิดขึ้นสองครั้ง เราแทนที่แต่ละเหตุการณ์ที่เกิดขึ้นด้วยอักขระ 0xE1 เรายังจำสตริงที่ถูกแทนที่ในอาร์เรย์:

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

สตริงย่อยถัดไป"Harder"จะถูกแทนที่ด้วย 0xE0 substsอาร์เรย์เติบโตไปทางด้านหน้า:

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

การดำเนินการนี้จะทำซ้ำทั้งหมด 34 ครั้งจนกว่าเราจะได้อักขระ 0xC0

ตอนนี้เราต่อการsubstsใช้อักขระb(ซึ่งไม่ได้เกิดขึ้นในเนื้อเพลง) เป็นตัวคั่น ในรหัส Perl substsอาร์เรย์จะถูกเก็บไว้ใน@c(โดยใช้ bareword bเพื่อบอกsplitตำแหน่งที่จะแยก) เนื้อเพลงที่คลั่งไคล้ใหม่ก็อยู่ใน$eนั้นและรหัสก็จะย้อนกลับ 34 การแทนที่


1
คำอธิบายใด ๆ
feersum

1
@feersum: เสร็จแล้ว
Timwi

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

ฉันเพิ่งทำภาษานี้และฉันตัดสินใจที่จะทดสอบกับความท้าทายนี้ มันส่งออก\ns แทนบรรทัดใหม่เพราะมันจะออกเป็น 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

น่าสนใจมาก. เรามีกฎที่นี่ว่าภาษา / ล่าม / คอมไพเลอร์จะต้องมีอยู่ก่อนที่จะมีความท้าทาย ฉันไม่เห็นวันที่คุณล่ามมันถูกตีพิมพ์เมื่อใด
เลเวลริเวอร์เซนต์

@stververill ฉันทำมันเมื่อวานนี้ ฉันเดาว่าคำตอบของฉันไม่ถูกต้องแล้ว
DanTheMan

3
ฉันทามติเกี่ยวกับMetaก็คือสิ่งนี้ยังคงสามารถโพสต์ได้ แต่ไม่สามารถใช้ได้สำหรับการชนะ คุณอาจเพิ่มคำปฏิเสธในคำตอบของคุณเพื่อแจ้ง OP
Downgoat

คุณสร้างerโทเค็นเดี่ยวได้ไหม
โซโลมอน Ucko

4

GolfScript (275 ไบต์)

ประกอบด้วยอักขระ ASCII ที่ไม่สามารถพิมพ์ได้ดังนั้นนี่คือ 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                                  ](+

มันทำงานอย่างไร เท่าที่ฉันสามารถบอกได้ว่าฉันเป็นคนเดียวที่ใช้กลยุทธ์ "ระลอกคลื่นน้อยและละเว้น" ซึ่งทำให้ฉันประหลาดใจ ยังคงหมายความว่าฉันอยู่ในสถานที่ที่สองที่อยู่เบื้องหลังคำตอบนี้
เลเวลริเวอร์เซนต์

Lempel-Ziv ที่เขียนด้วยมือ ไม่มีอะไรน่าสนใจ. ซึ่งเป็นจุดที่ฉันพยายามทำในเมตาดาต้า แต่ก็ไม่ชัดเจนเพียงพอ
Peter Taylor

1
ฉันผิดหวังจริงๆที่มีเพียงไม่กี่คนที่ใช้ประโยชน์จากโครงสร้างของเพลงอย่างเต็มที่ โอกาสอยู่ที่นั่นตามความจริงที่ว่าฉันอยู่ในอันดับที่สองใน Ruby เพียง 28 ไบต์อยู่ข้างหลังคุณ ฉันอยากจะเชื่อว่าคำตอบของฉันใน Golfscript นั้นจะสั้นกว่า 275 ไบต์ คุณคิดอย่างอื่นไหม?
เลเวลริเวอร์เซนต์

ฉันลองใช้เครื่องกำเนิดไฟฟ้าไวยากรณ์เต็มรูปแบบและรู้สึกประหลาดใจที่ LZ ออกมาข้างหน้า (แม้ว่าผู้สร้างไวยากรณ์โลภจะอยู่ข้างหลังเพียงหนึ่งไบต์) แต่ฉันจะไม่แปลกใจหากหนึ่งในพอร์ตของ GolfScript นี้หรือพอร์ตของวิธีไวยากรณ์โลภ 276- ไบต์ใน Ruby ออกมาที่น้อยกว่า 303 ไบต์
Peter Taylor

2

Ruby - 643 ไบต์

แก้ไข: Golfed ลงจาก 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

JAVA 518 / 490Bytes

แก้ไข: ไม่จำเป็น 7 ไบต์และเพิ่มรุ่น Java 6 ด้วยเคล็ดลับ {} คงที่ Edit2: คำอธิบายขยาย

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

ขอบคุณ @Chris Drost สำหรับคำใบ้ที่มี "ER" มากมายในข้อความ First String เป็นตารางการค้นหาส่วนที่สองใช้ตัวอักษรตัวเล็ก (ซึ่งเป็นบล็อกลำดับใน ascii) เป็นดัชนีลงในตารางโดยการลบค่าเวทย์ของ a จากค่า

ส่วนที่สองประกอบด้วยความยาวที่แตกต่างกันหลายเส้น (ส่วนที่สั้นเป็นส่วนที่ใช้ร่วมกันระหว่างข้อหลาย ๆ ข้อ) ซึ่งประกอบเข้าด้วยกันเป็นความยาวก่อนที่จะวนลูปผ่านตัวอักษรเกิดขึ้น


คำตอบที่ดี! +1 และฉันรู้ว่ามันใช้เวลาประมาณ 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

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

ความรุ่งโรจน์

  • @ วิหารที่เตือนฉันว่า 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 (เช่นการใช้อักขระ 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 ของตัวละครที่ใช้งานง่ายแล้วควรจะกำจัดจำนวนไบต์จำนวนมาก
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}/

ลองออนไลน์!

กำจัด[]รหัสที่ไม่จำเป็นและง่ายขึ้นตามลำดับ เปลี่ยนiและjไปยัง@และ^เพื่ออนุญาตให้ลบพื้นที่ว่างออก ที่ได้รับมอบหมายเกิดขึ้นเป็นครั้งแรกของ' 'ตัวแปร|ที่จะหลีกเลี่ยงการทำซ้ำเดียวกันตัวละครทั้งสาม

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 โดยใช้อัลกอริทึมพื้นฐานเดียวกัน: ส่งออกรายการโทเค็นสองครั้งจากนั้นก็กระเพื่อมเข้าไปในโองการและสร้างโองการทีละบรรทัดปรับสำหรับลักษณะเฉพาะของแต่ละ

มีความแตกต่างสองสามอย่าง หมายเลขสำหรับเครื่องหมายวรรคตอน mid-line ที่ถูกต้องอยู่ในฐาน 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 ไบต์ ใช้สัญลักษณ์ที่ไม่ได้ใช้เป็นชื่อตัวแปรเพื่อหลีกเลี่ยงช่องว่างและพื้นที่เก็บ ( " ") ในตัวแปร และอย่าป๊อปหลังจากกำหนดให้กับตัวแปรที่ไม่ติดนิสัย
Erik the Outgolfer

@EriktheOutgolfer ขอบคุณสำหรับเคล็ดลับ แต่ฉันได้โพสต์เวอร์ชันไบต์ 251 ที่รวมส่วนใหญ่แล้ว คุณเห็นที่ว่างก่อนหน้า51นั้นที่ฉันคิดถึง ฉันจะแก้ไขในภายหลังและอาจหาวิธีอื่นเพื่อย่อให้สั้นลง นี่เป็นโปรแกรม golfscript แรกของฉันและฉันพบว่ามันยากมากที่จะอ่านเมื่อใช้สัญลักษณ์เป็นตัวแปรดังนั้นฉันจึงปล่อยรุ่นการทำงานครั้งแรกที่ 262 ไบต์ขึ้นไปอย่างน้อยตอนนี้
ระดับแม่น้ำเซนต์

อาคุณเห็นได้ชัดแล้วฮ่า ๆ
Erik the Outgolfer

0

Python - 1056 Charters

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

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

Ruby ขนาด 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.