Trabaja más duro, hazlo mejor

26

En este desafío, su objetivo será enviar las letras a Harder, Better, Faster, Stronger de Daft Punk . Específicamente, envíe este texto:

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

Su salida puede tener una nueva línea o un espacio en blanco al final.

Los métodos de compresión incorporados no están permitidos.

Este es el código de golf, ¡así que el código más corto gana!

TreFox
fuente
1
@feersum Sí, si escuchas la canción puedes ver que comienza a decir Después y luego hace una pausa. Agregué el guión para mostrar el descanso y enfurecer a las personas. Sin embargo, puedo eliminarlo si quieres.
TreFox
99
Me sorprende que no haya esolang como HQ9+Daft-Punkeso imprime esto ...
Fatalize
3
Creo que al menos deberías rechazar los métodos de compresión integrados.
flawr
99
La letra de "Around the World" habría sido más fácil. ;)
Reto Koradi
3
Esta canción es la primera en mucho tiempo que, en mi opinión, no es un duplicado del rickroll. Lo he llevado a meta meta.codegolf.stackexchange.com/q/6956/15599
Level River St el

Respuestas:

11

Rubí, 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]}

Algoritmo

Introducción de la canción: toma 16 fichas e imprímelas dos veces (la última tiene una nueva línea adicional)

Versos: Agite las fichas para formar los versos, 4 fichas por línea, en el siguiente orden:

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

En algunas líneas, el último token se omite o se intercambia por Af-. Estas líneas se observan con 1 bit en el número mágico 0x744447 = 7619655.

En tres líneas, el penúltimo token también se omite, aquellos donde i%51/48==1

La puntuación en el medio de la línea puede ser uno de ' ' ', ' '\n'. Estos están codificados en el número 02220010000200100010001001110010001000100010001000100010 (base 3) = "l4yq62lhgnizb0kfu" (base 36.)

Con comentarios

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

}
Level River St
fuente
9

Perl, 316 309 308 307 bytes

La fuente debe estar codificada como 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

Explicación

Comenzamos con la letra original. Por brevedad, supongamos que son

lyrics = "Work Work Harder Harder"

Ahora encontramos subcadenas cortas (≥ 3 caracteres) que ocurren con frecuencia. En este caso, "Work "ocurre dos veces. Reemplazamos cada aparición con el carácter 0xE1. También recordamos la cadena reemplazada en una matriz:

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

La siguiente subcadena, "Harder"se reemplaza con 0xE0. La substsmatriz crece hacia el frente:

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

Esto continúa durante un total de 34 iteraciones hasta llegar al carácter 0xC0.

Ahora concatenamos el substsuso del carácter b(que no aparece en la letra) como separador. En el código de Perl, la substsmatriz se almacena @c(usando la palabra simple bpara indicar splitdónde dividir), las nuevas letras mezcladas están adentro $e, y el código simplemente invierte las 34 sustituciones.

Timwi
fuente
1
¿Alguna explicación?
feersum
1
@feersum: Listo.
Timwi
5

Sprects , 302 bytes

: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

Hace poco hice este lenguaje y decidí probarlo con este desafío. Produce \ns en lugar de nuevas líneas porque genera HTML, pero el intérprete está escrito en JavaScript. Debido a esto, aquí hay una versión con <br>s en lugar de \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
DanTheMan
fuente
Muy interesante. Tenemos una regla aquí que el lenguaje / intérprete / compilador debe existir antes del desafío. No veo una fecha en su intérprete, ¿cuándo se publicó?
Level River St
@steveverrill Lo hice ayer. Supongo que mi respuesta no es válida entonces.
DanTheMan
3
El consenso sobre Meta es que esto todavía se puede publicar pero no es aplicable para ganar. Probablemente debería agregar un descargo de responsabilidad a su respuesta para informar a OP
Downgoat el
¿Puedes hacer eruna sola ficha?
Solomon Ucko
4

GolfScript (275 bytes)

Contiene caracteres ASCII no imprimibles, así que aquí hay un 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                                  ](+
Peter Taylor
fuente
¿Como funciona esto? Por lo que puedo decir, parece que soy el único que usa una estrategia de "riffle and omit", lo que me sorprende. Aún así, significa que estoy en segundo lugar detrás de esta respuesta.
Level River St
Lempel-Ziv codificado a mano. Nada interesante. Lo cual fue más o menos el punto que intenté hacer en meta, pero claramente no lo suficientemente convincente.
Peter Taylor
1
Bueno, estoy realmente decepcionado de que pocas personas se aprovecharon de la estructura de la canción. La oportunidad estaba allí, como lo demuestra el hecho de que estoy en el segundo lugar en Ruby, a solo 28 bytes detrás de ti. Me inclino a creer que un puerto de mi respuesta en golfscript vendría en menos de 275 bytes. ¿Piensas lo contrario?
Level River St
Probé con mi batería completa de generadores de gramática, y me sorprendió que LZ saliera adelante (aunque el codicioso constructor de gramática solo estaba un byte atrás). Pero no me sorprendería si uno de un puerto de este GolfScript o un puerto del enfoque de gramática codiciosa de 276 bytes en Ruby saliera a menos de 303 bytes.
Peter Taylor
2

Ruby - 643 bytes

Editar: Golfed de 899 a 830.

Edición2: 830 -> 755.

Edición3: 755 -> 684.

Edición4: 684 -> 670.

Edición5: 670 -> 643.

Realmente no he usado el rubí, así que estoy seguro de que esto podría reducirse, esto es solo un intento:

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
Peter Lenkefi
fuente
2

JAVA 518/490 Bytes

Editar: 7 Bytes innecesarios y agregó una versión de Java 6 con el truco estático {} Editar2: Explicación expandir

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

Gracias a @Chris Drost por la pista con las muchas "ER" en el texto. First String es una tabla de búsqueda, la segunda parte usa las letras minúsculas (que son un bloque secuencial en ascii) como un índice en la tabla restando el valor mágico de a del valor.

La segunda parte consiste en múltiples cadenas de diferente longitud (las cortas son partes comunes compartidas entre múltiples versos) que se ensamblan en una larga antes de que ocurra el bucle a través de los caracteres

masterX244
fuente
¡Buena respuesta! +1 Y sé que han pasado aproximadamente 1,5 años, pero puedes jugar dos cosas: Quita ly usa la Cadena que contiene todo #directamente en el ciclo for-each, y cambia el charciclo for-each a 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]);Lo que resulta en -5 bytes / 513 bytes .
Kevin Cruijssen
2

JavaScript ES6, 440 bytes 438 bytes

Este es un montón de simples optimizaciones de compresión. Como una línea:

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

Esto fue escrito para ser un script ejecutable a través de iojs --harmony_arrow_functions file.js; puede reducir la console.log()sobrecarga dependiendo del significado de "generar la letra".

Explicación

Después de realizar el exterior .replace(), el código alimentado evales:

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

Prestigio

  • @vihan, quien me recordó que ES6 también tiene esta nueva .repeatfunción brillante para cadenas, ahorrando 2 bytes.
CR Drost
fuente
Probablemente pueda usar en b.repeat(7)lugar deb+b+b+b+b+b+b
Downgoat
1

PowerShell, 659 bytes

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

Crea una serie de palabras clave $a, luego codifica las letras usando una serie de cadenas numéricas que se envían en un forbucle. El bucle toma subcadenas de dos dígitos, extrae la palabra clave correspondiente de la $amatriz y finalmente-join'' concatena todo junto.

Creo que esto es tan bueno como este método se puede hacer, ya que cada vez que intenté seguir jugando golf (por ejemplo, reemplazando 040008con una nueva variable), resultó ser un par de bytes más largo porque la longitud de la subcadena no era suficiente para cuenta con todas las cotizaciones adicionales necesarias. Aunque se han publicado algunas respuestas nuevas desde que comencé que tienen métodos ligeramente diferentes que parecen ser más cortos en PowerShell (como usar caracteres ASCII para codificar, en lugar de dos dígitos, ¿tal vez?), Me quedaré con éste.

Editar: olvidé la codificación de reemplazo que utilicé:

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-
AdmBorkBork
fuente
si tienes una manera de obtener el código ASCII de un personaje que sea fácil de usar, entonces eso debería funcionar para
ahorrar
1

GolfScript , 251 bytes de golf

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

Pruébalo en línea!

Se eliminó el []código innecesario y simplificado en consecuencia. Cambiado iy jhacia @y ^para permitir la eliminación de espacios en blanco. Primera ocurrencia asignada de ' 'a variable| para evitar repetir los mismos tres caracteres.

GolfScript , primera versión de trabajo 262 bytes

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

Pruébalo en línea!

Este es un puerto de mi respuesta Ruby en golfscript usando el mismo algoritmo básico: generar la lista de tokens dos veces, luego agruparlos en los versos y construir los versos línea por línea, ajustándose a las peculiaridades de cada uno.

Hay un par de diferencias. El número para la puntuación correcta de la línea media está en la base 81 (convenientemente, esto hace un carácter ascii imprimible por verso); y el número que codifica si se imprime o no el último token se modifica porque el índice está en 55-ilugar de i-28(se descubrió que este último causa problemas con potencias negativas que generan números fraccionarios en lugar de truncarse a entero).

Comentado

'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.
Level River St
fuente
252 bytes. Utilice símbolos no utilizados como nombres de variables para evitar espacios en blanco y almacene espacio ( " ") en una variable. Además, no explote después de asignar a una variable por costumbre.
Erik the Outgolfer
@EriktheOutgolfer gracias por los consejos, pero ya publiqué una versión de 251 bytes que incorpora la mayoría de ellos. Sin 51embargo, viste un espacio antes que me perdí. Lo arreglaré más tarde, y posiblemente busque otras formas de acortarlo. Este es mi primer programa de golfscript, y los encuentro muy difíciles de leer cuando los símbolos se usan como variables, por lo tanto, también dejé mi primera versión funcional de 262 bytes al menos por ahora.
Level River St
Ah, aparentemente lo hiciste, lol.
Erik the Outgolfer
0

Python - 1056 personajes

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

Todavía hay margen de mejora con nombres de variables, pero es un comienzo.

Noelkd
fuente
2
¿Podría ayudar escribir por separado una lista de todos sus nombres de variables para que pueda ver fácilmente qué letras individuales aún no se han utilizado y luego buscar y reemplazar sus nombres de variables largos?
trichoplax
0

Rubí, 486 bytes

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
Vasu Adari
fuente
0

Rubí, 483 bytes

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

Funciona codificando cada palabra utilizada en la canción en una sola letra, multiplicando algunas estrofas y luego sustituyendo las letras codificadas con la letra real. Comas, los espacios se dejan como están. uEs una nueva línea.

dkudriavtsev
fuente
2
Huevo de Pascua: contiene la frasefuc b gud
dkudriavtsev
0

PHP, 434 bytes

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

Pruébalo en línea!

Jörg Hülsermann
fuente