Daha çok çalış, daha iyisini yap


26

Bu mücadelede hedefiniz, Daft Punk'ın Daha Zorlu, Daha İyi, Daha Hızlı, Daha Güçlü'ya şarkı sözlerini vermektir. Özellikle, bu metni çıktısı alın:

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

Çıktınızın izleyen bir yeni satırı veya izleyen bir boşluk olabilir.

Yerleşik sıkıştırma yöntemlerine izin verilmez.

Bu kod golf, yani en kısa kod kazanıyor!


1
@ feersum Evet, şarkıyı dinlerseniz, Sonra söylemeye başladığını ve sonra durakladığını görebilirsiniz. Arayı göstermek ve insanları kızdırmak için kısa çizgi ekledim. Yine de istersen kaldırabilirim.
TreFox

9
Şok oldum, bunu basacak bir esolang yok HQ9+Daft-Punk...
15'te ölümcül

3
Bence en azından sıkıştırma yöntemlerinde yerleşik olanlara izin vermemelisin.
kusur

9
"Dünyanın Her Yerinde" sözleri daha kolay olurdu. ;)
Reto Koradi 10:15

3
Bu şarkı bir süredir ilk şarkım aklımda, rickroll'ün bir kopyası değil . Meta meta.codegolf.stackexchange.com/q/6956/15599
Level River St

Yanıtlar:


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

Algoritma

Şarkı tanıtımı: 16 jeton alın ve iki kez yazdırın (sonuncusu ekstra bir yeni satır taşır)

Ayetler: Ayetleri yapmak için belirteçleri bir araya getirin, satır başına 4 belirteç, aşağıdaki sırayla:

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

Bazı satırlarda, son simge atlanır veya ile değiştirilir Af-. Bu çizgiler, 0x744447 = 7619655 sihirli sayısında 1 bit ile belirtilir.

Üç satırda, sondaki belirteç de göz ardı edilir; i%51/48==1

Çizginin ortasındaki noktalama işaretlerinden biri olabilir ' ' ', ' '\n'. Bunlar 02220010000200100010001001110010001000100010001000100010 (temel 3) = "l4yq62lhgnizb0kfu" (temel 36.) kodludur.

Yorumlarla

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 bayt

Kaynak Latin-1 olarak kodlanmalıdır.

@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

açıklama

Orijinal şarkı sözleriyle başlıyoruz. Kısalık olarak, varsayalım ki

lyrics = "Work Work Harder Harder"

Şimdi sık görülen kısa alt dizileri (≥ 3 karakter) buluyoruz. Bu durumda, "Work "iki kez oluşur. Her oluşumu 0xE1 karakteri ile değiştiriyoruz. Ayrıca bir dizideki değiştirilen dizgiyi de hatırlarız:

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

Bir sonraki alt dize, "Harder"0xE0 ile değiştirilir. substsDizi öne doğru büyür:

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

Bu, 0xC0 karakterine ulaşana kadar toplam 34 yineleme için devam eder.

Şimdi substs, b(şarkı sözlerinde bulunmayan) karakterini ayırıcı olarak kullanarak birleştiriyoruz . Perl kodunda, substsdizi saklanır @c( nereye bölüneceğini bsöylemek için korkak kullanarak split), yeni karışık sözler içeridedir $eve kod sadece 34 ikameyi tersine çevirir.


1
Herhangi bir açıklama var mı?
feersum

1
@ feersum: Yapıldı.
Timwi

5

Ertelemeler , 302 bayt

: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

Daha yeni bu dili yaptım ve bu zorlukla test etmeye karar verdim. Bu çıkarır \no HTML içine çıkışı nedeniyle yerine yeni hatların s, ancak tercüman JavaScript ile yazılmış. Bu nedenle, burada <br>s yerine s olan bir sürüm var \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

Çok ilginç. Burada, dil / tercüman / derleyicinin mücadeleden önce var olması gerektiği konusunda bir kuralımız var. Tercüman üzerinde bir tarih görmüyorum, ne zaman yayınlandı?
Seviye Nehri St

@ steveverrill Dün yaptım. Sanırım cevabım geçersiz o zaman.
DanTheMan 12:15

3
Meta üzerindeki fikir birliği , bunun hala gönderilebileceği, ancak kazanmak için geçerli olmadığı yönündedir. OP
Downgoat 13:15

erTek bir jeton yapabilir misin ?
Solomon Ucko

4

GolfScript (275 bayt)

Bu, yazdırılamayan ASCII karakterleri içerir, bu yüzden burada bir 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                                  ](+

Bu nasıl çalışıyor? Söyleyebileceğim kadarıyla, beni şaşırtan bir "oluk ve ihmal" stratejisi kullanan tek kişi benim gibi görünüyor. Yine de, bu cevabın arkasında ikinci sıradayım demektir.
Seviye Nehri St

El kodlu Lempel-Ziv. İlginç bir şey yok. Neredeyse meta olarak yapmaya çalıştığım nokta buydu, ama açıkça yeterince ikna edici değildi.
Peter Taylor

1
Aslında, çok az insanın şarkının yapısından tam olarak faydalanmasından dolayı hayal kırıklığına uğradım. Fırsat, Ruby'de ikinci sırada olduğumun, arkanızda sadece 28 byte olduğumun kanıtı olarak vardı. Golf senaryosuna cevabımın bir limanının 275 bayttan daha kısa olacağına inanmaya meyilliyim. Aksini düşünüyor musun?
Seviye River St

Tam gramer jeneratörleri pilimi denedim ve LZ'nin öne çıkmasına şaşırdım (açgözlü gramer oluşturucu sadece bir bayt olmasına rağmen). Ancak, bu GolfScript portundan biri veya Ruby'ye 276 bayt açgözlü dilbilgisi yaklaşımının limanı 303 bayttan daha az çıktıysa şaşırmam.
Peter Taylor

2

Ruby - 643 bayt

Düzenleme: 899 ile 830 arası golf oynadı.

Düzen2: 830 -> 755

Düzen3: 755 -> 684

Düzen4: 684 -> 670.

Düzen5: 670 -> 643

Ben gerçekten yakut kullanmadım, bu yüzden bu golf aşağı olabilir eminim, bu sadece bir girişim:

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

Düzenleme: gereksiz 7 Bayt ve statik {} hile ile bir Java 6 sürümü ekledi Edit2: Açıklama genişlet

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

Metinde birçok "ER" olan ipucu için @ Chris Drost'a teşekkürler. Birinci Dize bir arama tablosudur, ikinci kısım küçük harfleri (ascii'de sıralı bir blok olan) bir a'nın sihirli değerini değerden çıkartarak bir indeks olarak kullanır.

İkinci kısım, karakterlerin arasından geçen ilmek oluşmadan önce uzun bir araya getirilen farklı uzunluktaki çok sayıda Dizeden (kısa olanlar, çoklu ayetler arasında paylaşılan ortak parçalardır) oluşur.


Güzel cevap! 1 Ve bunun 1,5 yıl kadar oldu biliyorum ama golf iki şey yapabilir: Kaldır lve dize içeren kullanan tüm #for-each döngüsü ve değiştirmek doğrudan charto-her döngüde 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]);hangi sonuçların -5 bayt / 513 bayt .
Kevin Cruijssen

2

JavaScript ES6, 440 bayt 438 bayt

Bu basit sıkıştırma optimizasyonlarıdır. Tek astar olarak:

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

Bu, üzerinden çalıştırılabilir bir komut dosyası olarak yazılmıştır iojs --harmony_arrow_functions file.js; console.log()"Sözleri çıktı" nın anlamına bağlı olarak ek yükü tıraş edebilirsiniz .

açıklama

Dış gerçekleştirdikten sonra .replace(), beslenen kod evalşöyledir:

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

şeref

  • ES6'nın .repeatdizgiler için bu parlak yeni işlevi olduğunu ve 2 byte tasarruf sağladığını hatırlatan @vihan .

Muhtemelen b.repeat(7)yerine kullanabilirsinizb+b+b+b+b+b+b
Downgoat

1

PowerShell, 659 Bayt

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

Bir anahtar kelime dizisi oluşturur $a, ardından bir dizi sayısal dizgiyi kullanarak sözleri kodlar.for döngüye . Döngü iki basamaklı alt $adizileri alır, karşılık gelen anahtar sözcüğü diziden çeker ve sonunda -join''hepsini bir araya getirir.

Herhalde daha fazla golf oynamaya çalıştığım gibi, bu yöntemin yapılabileceği kadar iyi olduğunu düşünüyorum. 040008 yeni bir değişkenle ), alt uzunluk için yeterli olmadığı için birkaç bayt daha uzun oldu. gerekli olan tüm ekstra teklifleri hesaba katın. Başladığımdan beri, PowerShell'de daha kısa olabilecek gibi görünen biraz farklı yöntemlere sahip olduğumdan bazı yeni cevaplar vermiş olmama rağmen (belki iki basamaktan ziyade kodlamak için ASCII karakterlerini kullanmak gibi), buna bağlı kalacağım. Bu.

Düzenleme - kullandığım değiştirme kodunu unuttum:

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-

Eğer kullanımı kolay bir karakterin ascii kodunu elde etmenin bir yolunu bulursanız, o zaman bir demet baytı tıraş etmek için çalışmalısınız
masterX244

1

GolfScript , 251 bayt golf oynadı

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

Çevrimiçi deneyin!

Gereksiz []ve basitleştirilmiş kodu buna göre ortadan kaldırdı . Değiştirilen ive jkarşı @ve ^boşluk içinde izin kaldırılması. ' 'Değişkenin ilk oluşumu atandı|Aynı üç karakteri tekrar etmemek .

GolfScript , İlk çalışan sürüm 262 bayt

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

Çevrimiçi deneyin!

Bu benim Ruby cevabımın aynı temel algoritmayı kullanan golf komut dosyasına cevabımın bir limanıdır: belirteçlerin listesini iki kere çıkar, sonra bunları ayetlere ayır ve her birinin özelliklerini ayarlayarak ayetleri satır satır oluştur.

Birkaç fark var. Doğru orta çizgi noktalama işaretlerinin sayısı, taban 81'dedir (elverişli olarak bu, her ayette bir basılabilir ascii karakteri yapar); ve son belirtecin yazdırılıp yazdırılmayacağını kodlayan sayı, endeks 55-iyerine i-28(çünkü ikincisinin, tamsayının kesilmesi yerine kesirli sayılar üreten negatif güçlerle ilgili sorunlara neden olduğu bulundu) değiştirildi.

Yorumlananlar

'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 bayt. Boşluktan kaçınmak için kullanılmayan sembolleri değişken adları olarak kullanın ve space ( " ") değişkenini saklayın . Ayrıca, alışkanlık dışı bir değişkene atadıktan sonra pop etmeyin.
Outgolfer'lı Erik,

@EriktheOutgolfer ipuçları için teşekkür eder, ancak ben zaten çoğunu içeren 251 baytlık bir versiyonunu yayınladım. Daha önce 51özlediğim bir yer tespit etmiştim. Daha sonra tamir edeceğim ve muhtemelen onu kısaltmanın başka yollarını arayacağım. Bu benim ilk golfscript programım ve onları semboller değişken olarak kullanıldığında okumayı çok zor buluyorum, dolayısıyla 262 baytlık ilk çalışma versiyonumu da en azından şimdilik açık bıraktım.
Level River St

Ah, görünüşe göre yaptın, lol.
Outgolfer Erik,

0

Python - 1056 Karakterler

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

Değişken isimleriyle gelişim için hala yer var, ancak bir başlangıç.


2
Hangi değişken harflerin kullanılmadığını kolayca görebilmeniz için değişken değişken isimlerinizin bir listesini ayrı ayrı yazmak ve daha sonra uzun değişken isimlerinizi kolayca değiştirmek isteyebilir mi?
trichoplax 24:15

0

Ruby, 486 Bayt

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 bayt

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

Şarkıda kullanılan her sözcüğü tek bir harfe kodlayarak çalışır, bazı boşlukları çarparak, sonra şifreli harfleri gerçek şarkı sözleriyle değiştirir. Virgüller, boşluklar olduğu gibi bırakılır. uYeni bir satır.


2
Paskalya yumurtası: cümle içerirfuc b gud
dkudriavtsev

0

PHP, 434 Bayt

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

Çevrimiçi deneyin!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.