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!
code-golf
kolmogorov-complexity
TreFox
fuente
fuente
HQ9+Daft-Punk
eso imprime esto ...Respuestas:
Rubí,
308303Algoritmo
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:
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
fuente
Perl,
316309308307 bytesLa fuente debe estar codificada como Latin-1.
Explicación
Comenzamos con la letra original. Por brevedad, supongamos que son
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:La siguiente subcadena,
"Harder"
se reemplaza con 0xE0. Lasubsts
matriz crece hacia el frente:Esto continúa durante un total de 34 iteraciones hasta llegar al carácter 0xC0.
Ahora concatenamos el
substs
uso del carácterb
(que no aparece en la letra) como separador. En el código de Perl, lasubsts
matriz se almacena@c
(usando la palabra simpleb
para indicarsplit
dónde dividir), las nuevas letras mezcladas están adentro$e
, y el código simplemente invierte las 34 sustituciones.fuente
Sprects , 302 bytes
Hace poco hice este lenguaje y decidí probarlo con este desafío. Produce
\n
s 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\n
s:fuente
er
una sola ficha?GolfScript (275 bytes)
Contiene caracteres ASCII no imprimibles, así que aquí hay un hexdump:
fuente
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:
fuente
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
java6:
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
fuente
l
y usa la Cadena que contiene todo#
directamente en el ciclo for-each, y cambia elchar
ciclo for-each aint
: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 .JavaScript ES6,
440 bytes438 bytesEste es un montón de simples optimizaciones de compresión. Como una línea:
Esto fue escrito para ser un script ejecutable a través de
iojs --harmony_arrow_functions file.js
; puede reducir laconsole.log()
sobrecarga dependiendo del significado de "generar la letra".Explicación
Después de realizar el exterior
.replace()
, el código alimentadoeval
es:Prestigio
.repeat
función brillante para cadenas, ahorrando 2 bytes.fuente
b.repeat(7)
lugar deb+b+b+b+b+b+b
PowerShell, 659 bytes
Crea una serie de palabras clave
$a
, luego codifica las letras usando una serie de cadenas numéricas que se envían en unfor
bucle. El bucle toma subcadenas de dos dígitos, extrae la palabra clave correspondiente de la$a
matriz 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
040008
con 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é:
fuente
GolfScript , 251 bytes de golf
Pruébalo en línea!
Se eliminó el
[]
código innecesario y simplificado en consecuencia. Cambiadoi
yj
hacia@
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
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-i
lugar dei-28
(se descubrió que este último causa problemas con potencias negativas que generan números fraccionarios en lugar de truncarse a entero).Comentado
fuente
" "
) en una variable. Además, no explote después de asignar a una variable por costumbre.51
embargo, 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.Python - 1056 personajes
Todavía hay margen de mejora con nombres de variables, pero es un comienzo.
fuente
Rubí, 486 bytes
fuente
Rubí, 483 bytes
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.
u
Es una nueva línea.fuente
fuc b gud
PHP, 434 bytes
Pruébalo en línea!
fuente