Rema rema Rema tu bote

26

Es probable que todos estén familiarizados con la siguiente canción , que es una ronda musical :

La canción.

Fondo

Menos personas pueden recordar haber tratado de cantar la versión de 4 personas de esto con algunos amigos y no lo han logrado. Descomponer la letra de una canción con diferentes tonos armoniosos se conoce como cantar una "ronda" y eso es lo que estamos aquí para simular hoy usando salida estática. Aquí hay un ejemplo de alguien que realmente realiza la pieza (el enlace a audio / video tendrá sonido) .

El reto

Este desafío es generar el texto de la siguiente manera exactamente como sigue:

Row, row, row your boat,           |-----------------------------------|-----------------------------------|-----------------------------------
Gently down the stream.            |Row, row, row your boat,           |-----------------------------------|-----------------------------------
Merrily, merrily, merrily, merrily,|Gently down the stream.            |Row, row, row your boat,           |-----------------------------------
Life is but a dream.               |Merrily, merrily, merrily, merrily,|Gently down the stream.            |Row, row, row your boat,           
-----------------------------------|Life is but a dream.               |Merrily, merrily, merrily, merrily,|Gently down the stream.            
-----------------------------------|-----------------------------------|Life is but a dream.               |Merrily, merrily, merrily, merrily,
-----------------------------------|-----------------------------------|-----------------------------------|Life is but a dream.               

Reglas

  • El espacio en blanco final es aceptable, pero no obligatorio, esto incluye nuevas líneas.
  • Los guiones y las barras son parte de la salida requerida, sí.
  • Se requieren comas, puntos, mayúsculas y todos los elementos sintácticos relacionados con la gramática.

Este es el , el código de conteo de bytes más bajo sin usar lagunas estándar es el ganador.

Urna de pulpo mágico
fuente
2
Solo quiero decir, ¡disfruto mucho tus grandes desafíos de complejidad kolmogorov y ascii-art ! Tanto este como un teclado tan real han sido extremadamente divertidos para escribir soluciones. :)
DJMcMayhem
2
@DJMcMayhem desde que encontré este sitio veo desafíos al azar en mi vida diaria y guardo un pequeño bloc de notas para las ideas que obtengo, ¡seguiré tratando de hacer las divertidas!
Urna mágica del pulpo

Respuestas:

12

05AB1E , 80 77 bytes

“¢ã,¢ã,¢ã€žžÄ,““èî„‹€€šæ.“"merrily, "4ר“‚쀈€³€…žâ.“'-35×Ð)€ª.B3FDÁ})øvy'|ý,

Pruébalo en línea!

Trabajo en progreso.

Emigna
fuente
Por cierto, no me impresionó mucho el diccionario que no tenía "05AB1E". Hizo casi imposible cantar eficientemente el feliz cumpleaños 05AB1E. Sin embargo, una respuesta genial, esperaba ver una respuesta 05AB1E basada en el diccionario jaja. También DJMcMayhem es correcto, lo hace.
Urna mágica del pulpo
Espera, que es ª? No importa, frase en mayúscula, brillante.
Urna mágica de pulpo
@carusocomputing: Sí, hace poco noté que existe. Lo he necesitado varias veces en el pasado: P
Emigna
vypuede ser ʒguardar un byte.
Kevin Cruijssen
10

V , 139 , 128 bytes

iLife is but a dream ±µ |4amerrily, x7b~A|Gently down the stream.±² |3arow, X5b~Ayour boat,±± |3I³µ-|3AòÄó.û-}|ò5DÎ4f|C|

Una línea! (tipo de: P)

Pruébalo en línea!

Hexdump:

00000000: 694c 6966 6520 6973 2062 7574 2061 2064  iLife is but a d
00000010: 7265 616d 20b1 b520 7c1b 3461 6d65 7272  ream .. |.4amerr
00000020: 696c 792c 201b 7837 627e 417c 4765 6e74  ily, .x7b~A|Gent
00000030: 6c79 2064 6f77 6e20 7468 6520 7374 7265  ly down the stre
00000040: 616d 2eb1 b220 7c1b 3361 726f 772c 201b  am... |.3arow, .
00000050: 5835 627e 4179 6f75 7220 626f 6174 2cb1  X5b~Ayour boat,.
00000060: b120 7c1b 3349 b3b5 2d7c 1b33 4101 1bf2  . |.3I..-|.3A...
00000070: c4f3 2efb 2d7d 7cf2 3544 ce34 667c 437c  ....-}|.5D.4f|C|

¿Recibo puntos de bonificación por aterrizar exactamente en 2^7 ?

Esto tomó un tiempo para darse cuenta. Espero poder jugar mucho como mi respuesta de arte ASCII de teclado, pero no estoy seguro. Ya veremos. Son desafíos muy similares (y ambos muy divertidos: D)

Originalmente probé esto (180):

3irow, ch your boat,±± ||"rCLife is but a dream.±µ ||"lD4imerrily, r||"mCGently down the stream.±² ||"gC³µ-|B"dCR³D
GRDD
MGRD
LMGR
DLMG
DDLM
³DLÍR/r
ÍG/g
ÍM/m
ÍL/l
ÍD/d

Pruébalo en línea!

Lo que inserta esto:

RDDD
GRDD
MGRD
LMGR
DLMG
DDLM
DDDL

y luego realiza una sustitución para expandirlo. Pero construirlo al estilo es mucho más corto (y más divertido TBH)

DJMcMayhem
fuente
Se obtiene 0^(2^7)puntos de bonificación para aterrizar en 2^7jaja. Interesante primer pensamiento sobre la versión 180.
Urna mágica del pulpo
1
@carusocomputing Aww, ¿por qué no darle (2 ^ 7) / 0 puntos de bonificación?
Matthew Roh
6

Lote, 292 288 275 bytes

@set d=-------
@set "d=%d%%d%%d%%d%%d%^|
@set "m=M_ m_ m_ m_^|
@set "s=           ^|
@set "s=Life is but a dream.    %s%%m:_=errily,%Gently down the stream. %s%Row, row, row your boat,%s%%d%%d%%d%"
@for /l %%i in (1,1,6)do @call:c
:c
@echo %s:~111,146%
@set "s=%d%%s%

Editar: guardé 13 bytes reescribiendo el código para usar una versión del truco de subcadena que utilicé en mi respuesta Retina. Convenientemente, puedo hacer un bucle seis veces y luego caer para una séptima iteración del cuerpo del bucle, lo que significa que la cita necesaria para generar |s no se vuelve demasiado onerosa, sin embargo, debo tener cuidado de tener ^en cuenta los s al seleccionar la subcadena. .

Neil
fuente
6

Python 3, 252 235 208 206 205 bytes

Bien bien. Aquí hay una respuesta menos aburrida:

w=' '*11
t=["Row, row, row your boat,"+w,"Gently down the stream. "+w,"Merrily,"+" merrily,"*3,"Life is but a dream.    "+w,*['-'*35]*3]
for a in zip(*[t[z:]+t[:z]for z in range(7,3,-1)]):print(*a,sep='|')

Respuesta anterior, 252 bytes:

Respuesta aburrida, y la otra respuesta de Python es más corta, pero pensé en intentarlo si este enfoque es más corto. Python 3 a pesar de los ahorros en byte / string 2-3 diferencia porque ambos gzipy base64son más mierda en Python 2.

from base64 import*
from gzip import*
print(decompress(b85decode('ABzY8Fgf~I0{;ujFV|5hf)Waq`K3h)N%@H-ItmC-qe~c2OAVKMYF<fBr9w)6d7eT^Myf(_Nl|KIuATz2dxGfaW-i~<qN2>4N*#q<oQxVex|z!-Gc8pivsfXiv_v6MAqB%CkU6w=GZ!&|OJj#}Q7chW$(>wu%p_Rd3;?AKH=M}>000')).decode())
L3viatán
fuente
25% de la longitud original, bastante impresionante, pero podría ser mucho más inteligente y comprimir solo la primera iteración, dividir en nuevas líneas y realizar 4 turnos. Esto probablemente vencería a la otra implementación de python. Pensamientos a tener en cuenta. Yo no fui el que -1, no sé quién hizo eso.
Urna mágica de pulpo
@carusocomputing True. Realmente me interesaba lo bien que funciona la compresión run-off-the-mill en una tarea de salida fija tan redundante. Sin embargo, convertí mi respuesta a una más corta y menos tonta.
L3viathan
¿Puedes editar también en la compresión? Yo, personalmente, encontré ese enfoque interesante también. Es decir, qué tan bajo llegó el conteo de bytes mediante un simple gzip. Debe usar Huffman o algo así ... +1 independientemente del esfuerzo.
Urna mágica del pulpo
1
@carusocomputing, lo agregaré en la parte inferior, supongo. Además, creo que no es la parte de la deflación de Huffman lo que lo está haciendo relativamente bueno, sino la parte de LZ.
L3viathan
1
@ JonathanAllan De hecho, me perdí eso. Solucionado, perdió un byte.
L3viathan
5

PowerShell , 224 207 202 bytes

$a=' '*11;0..6|%{((0..4+4+4)[($_,($_+=6),--$_,--$_|%{$_%7})]|%{("Row, row, row your boat,$a","Gently down the stream.$a ","Merrily,$(' merrily,'*3)","Life is but a dream.$a    ",('-'*35))[$_]})-join'|'}

Pruébalo en línea! (la salida se ajusta si su pantalla no es lo suficientemente ancha)

Dios mío, esta cosa de generación de matriz es fea, pero ahorró 17 bytes, así que ...

0..6|%{((0..4+4+4)[($_,($_+=6),--$_,--$_|%{$_%7})]

Pasamos del 0a 6. Cada iteración, estamos indexando en una matriz (0,1,2,3,4,4,4). La indexación se basa en el dígito actual, el dígito actual +6, eso -1y luego eso -1 . Cada uno de ellos se alimenta a través de un bucle donde modulamos %7. Por ejemplo, si estamos en 0el 0..6bucle externo , entonces estos serían 0,6,5,4, entonces cada uno %7, entonces 0,6,5,4. Eso está indexado en la (0,1,2,3,4,4,4)matriz, por lo que la salida es 0,4,4,4. Para la entrada 1obtenemos 1,7,6,5entonces 1,0,6,5qué rendimientos1,0,4,4 . Y así. (las cosas serían mucho más fáciles si tuviéramos una .clampfunción)

Esos son escupidos uno a la vez en un bucle |%{}. Cada iteración, indexamos en el lugar apropiado en la matriz de letras de canciones, y dejamos esa cadena en la tubería. Esas cadenas se -joineditan junto con |para formatear la línea de salida. Esas cadenas se dejan en la tubería y la salida es implícita.

Guardado algunos bytes gracias a Value Ink.

AdmBorkBork
fuente
Teniendo en cuenta que ya ha $aguardado en 11 espacios, puede cambiar la cuarta línea para terminar en $amás 4 espacios en lugar de $(' '*15)para -3 bytes, ¿sí?
Value Ink el
4

JavaScript (ES8), 285 256 240 231 229 217 214 213 211 210 bytes

_=>"0444104421043210432144324443".replace(/./g,(x,y)=>a[x].padEnd(35)+`
|||`[++y&3],a=["Row, row, row your boat,","Gently down the stream.","Merrily,"+(m=" merrily,")+m+m,"Life is but a dream.","-".repeat(35)])

Ahorró algunos bytes al tomar prestado un truco de la respuesta de Arnauld


Intentalo

f=

_=>"0444104421043210432144324443".replace(/./g,(x,y)=>a[x].padEnd(35)+`
|||`[++y&3],a=["Row, row, row your boat,","Gently down the stream.","Merrily,"+(m=" merrily,")+m+m,"Life is but a dream.","-".repeat(35)])

o.innerText=f()
<pre id=o>

Lanudo
fuente
1
'0444,1044,2104,3210,4321,4432,4443'.split, .mapte ahorra 10 bytes. Además, padEndno es parte de ES6, o incluso ES7.
Neil
Vaya, estaba destinado a actualizar eso a ES8. Gracias, @Neil. Y gracias por el consejo, pero estaba en el proceso de trabajar en otra solución que terminó ahorrándome 12 bytes.
Shaggy
4

PHP, 191 bytes

for(;$n<7;$n++)for($m=0;$m<4;)echo $m?"|":"\n",str_pad($i=["Row, row, row your boat,","Gently down the stream.",M.($t="errily,")." m$t m$t m$t","Life is but a dream."][$n-$m++],35," -"[!$i]);

Pruébalo en línea!

Expandido

for(;$n<7;$n++)
  for($m=0;$m<4;)
    echo $m?"|":"\n"
     ,str_pad($i=["Row, row, row your boat,","Gently down the stream."
       ,M.($t="errily,")." m$t m$t m$t","Life is but a dream."][$n-$m++]
       ,35," -"[!$i]);
Jörg Hülsermann
fuente
Podrías guardar un personaje quitando los corchetes del eco (no es una función)
Robbie Averill
@RobbieAverill Lo sé, pero los corchetes incluyen un operador ternario y solo podría eliminarlo. Reemplazo el punto a través de una coma
Jörg Hülsermann
3

Python 2 , 199 bytes

w=' '
s=['-'*35]
t=['Row, row, row your boat,'+w*11,'Gently down the stream.'+w*12,'Merrily,'+' merrily,'*3,'Life is but a dream.'+w*15]
print'\n'.join(map('|'.join,zip(t+s*3,s+t+s+s,s+s+t+s,s*3+t)))

Pruébalo en línea!


Gracias a @mathjunkie por guardar 14 bytes

ovs
fuente
'Merrily, merrily, merrily, merrily,'podría estar ('merrily, '*4).capitalize()bien? ¿O no es Python?
Urna mágica de pulpo
2
O incluso más corto,'Merrily,'+' merrily,'*3
drogadicto de matemáticas
2

CJam , 128 122 bytes

"Row, row, row your boat,""gently down the stream."'M" merrily,"4*2>+"Life is but a dream."'-35*__]{35Se]}%a4*4,.m>z'|f*N*

Pruébalo en línea!

Explicación

"Row, row, row your boat,"  e# Push this string.
"gently down the stream."   e# Push this string.
'M                          e# Push the character 'M'.
" merrily,"4*               e# Push the string " merrily, merrily, merrily, merrily,".
2>+                         e# Remove the first two letters of it, and append it to 'M',
                            e#   fixing the capitalization.
"Life is but a dream."      e# Push this string.
'-35*__                     e# Push a string containing 35 hyphens and make two copies of it.
]                           e# Collect all these strings in an array.
{35Se]}%                    e# Pad each of them to length 35 by adding spaces to the right.
a4*                         e# Repeat the array 4 times.
4,                          e# The range [0 1 2 3].
.m>                         e# Rotate each subarray of strings rightward by the corresponding
                            e#   number in the range.
z                           e# Transpose the array.
'|f*                        e# Join the strings on each row with '|' characters.
N*                          e# Join the rows together with newlines.
Gato de negocios
fuente
2

SOGL , 83 bytes

┌׀0ρMVxDrž|⁷ΨB≈π93|↑D~Νķ‰¤t╤▼ΣΗ⁶⅔¾№⁷Ζ÷│²╥Ν9°‘-”)0ΔH«‘4*jŗ"ΣΨ¬¹‘4*;+7{’⁄{»}⁽:’∞n1wpX

La primera parte ┌׀0ρMVxDrž|⁷ΨB≈π93|↑D~Νķ‰¤t╤▼ΣΗ⁶⅔¾№⁷Ζ÷│²╥Ν9°‘es una cadena comprimida que resulta en

`life is but a dream.               |-|gently down the stream.            |row, row, row your boat,           |`

Estas son las líneas invertidas (ya que esto las imprime línea por línea), con la parte "alegremente" cortada para ser reemplazada en el programa.
El resto del programa:

...‘                                        Push the compressed string
      )0ΔH«‘                                push "merrily, "
            4*                              repeat it 4 times
              j                             take the last letter off
    -”         ŗ                            replace "-" with the merrily line
                "ΣΨ¬¹‘                      push 35 dashes with an appending "|"
                      4*                    repeat it 4 times
                        ;+                  add inverted ("---|---..."+"Life is but a dream  ...")
                                            The resulting string of above is "-----------------------------------|-----------------------------------|-----------------------------------|-----------------------------------|life is but a dream.               |merrily, merrily, merrily, merrily,|gently down the stream.            |row, row, row your boat,           |"
                          7{                repeat 7 times
                            ’⁄{»}            rotate right 35 times
                                 ⁽           uppercase the 1st letter
                                  :          duplicate
                                   ’∞n       split into parts of length 135
                                      1w     get the 1st one
                                        p    output that
                                         X   delete the splat array
dzaima
fuente
2

/// , 200 bytes

/_/     //&/errily,//*/ m&//+/-------//@/Row, row, row your boat, __//#/Gently down the stream.  __//$/M&***//%/Life is but a dream.___//~/+++++/@|~|~|~
#|@|~|~
$|#|@|~
%|$|#|@
~|%|$|#
~|~|%|$
~|~|~|%

Pruébalo en línea!

Simple, utiliza ocurrencias comunes como reemplazos.

Camarada SparklePony
fuente
2

PHP, 179 bytes:

for($m="errily,";$i<28;)echo str_pad($s=["Row, row, row your boat,","Gently down the stream.","M$m m$m m$m m$m","Life is but a dream."][($i>>2)-$i%4],35," -"[!$s]),"
|||"[++$i%4];

sin golf

for($i=0;$i<28;$i++)
{
    $x=$i%4;
    $y=$i>>2;

    $s=["Row, row, row your boat,",
        "Gently down the stream.",
        M.($m="errily,")." m$m m$m m$m",
        "Life is but a dream."
    ][$y-$x];

    $pad_string = $s ? " ":"-";
    $postfix = $x<3 ? "|" : "\n";
    echo str_pad($s,35,$pad_string),$postfix;
}
Titus
fuente
2

JavaScript (ECMAScript 2017), 191 187 182 bytes

Guardado 3 bytes gracias a Shaggy

f=(i=27,s=['Life is but a dream.','Merrily,'+(m=' merrily,')+m+m,'Gently down the stream.','Row, row, row your boat,'][(i>>2)-i%4]||'')=>i?s.padEnd(35,' -'[+!s])+`
|||`[i&3]+f(i-1):s

o.innerHTML = f();
<pre id=o style="font-size:10px"></pre>

Arnauld
fuente
Creo que 'Merrily,'+' merrily,'.repeat(3)guarda un byte.
Neil
Ah, y olvidé mencionar que padEndno está en ES7, y mucho menos ES6.
Neil
1
M${s='errily, '}m${s}m${s}men lugar de M${s='errily,'} m${s} m${s} mguardar 2 bytes
Luke
1
Puede guardar 3 bytes con "Merrily,"+(s=" merrily,")+s+s.
Shaggy
1
@ Shaggy Ah sí. Esa parece ser la mejor opción. ¡Gracias!
Arnauld
2

Servidor SQL de Microsoft, 421 bytes

with v as(select left(s+space(35),35)s,n from(values('Row, row, row your boat,',1),('Gently down the stream.',2),('Merrily, merrily, merrily, merrily,',3),('Life is but a dream.',4))t(s,n))select isnull(v.s,s.s)+'|'+isnull(b.s,s.s)+'|'+isnull(c.s,s.s)+'|'+isnull(d.s,s.s)from v full join v b on v.n=b.n+1 full join v c on b.n=c.n+1 full join v d on c.n=d.n+1 cross apply(select replicate('-',35)s)s order by isnull(v.n,9)

Compruébalo en línea

Andrei Odegov
fuente
Me encanta. La base de datos es mi mensaje!
Zahiro Mor
2

C (CCG), 231 230 bytes

-1 byte gracias a ceilingcat!

#define m"errily, "
char s[7][35]={"Life is but a dream.","M"m"m"m"m"m"m"m,"Gently down the stream.","Row, row, row your boat,"};f(l,c){memset(s[4],45,'k');for(l=7;l--;)for(c=0;c<4;)printf("%-35.35s%c",s[(4+l+c++)%7],"|||\n"[c]);}

Muy claro. Primero construye el conjunto de cadenas de 7 líneas, parte a través de una macro para factorizar la parte "alegremente", luego las líneas de guiones se rellenan con a memset. Luego, las líneas se imprimen con el desplazamiento y los separadores adecuados.

Pruébalo en línea!

Quentin
fuente
@ceilingcat gracias!
Quentin
1

MATLAB, 280 bytes

a='errily,';
z={'Row, row, row your boat,';'Gently down the stream.';['M',a,' m',a,' m',a,' m',a];'Life is but a dream.'};
z{5}(1:35)='-';
y=5*ones(7,4);
for j=1:4;z{j}(end+1:35)=' ';y(j:j+3,j)=(1:4)';end
x=z(y);
for j=1:7;fprintf('%s|%s|%s|%s\n',x{j,1},x{j,2},x{j,3},x{j,4});end

La indexación de la matriz de celdas es bastante costosa, ese parece ser el lugar más fácil para descartar algunos bytes (si es posible).

jerj
fuente
Bienvenido al sitio!
DJMcMayhem
1

Retina , 153 150 bytes


<-|>Life is but a dream.15|M!< m!>|Gently down the stream.12|Row, row, row your boat,11<|->
<(.*?)>
$1$1$1
!
errily,
-
35$*-
\d+
$* 
r!&`.{71}\|.{71}

Pruébalo en línea!

Intenté la codificación arbitraria de longitud de ejecución pero $1$*$2no hace lo que quiero y repetir cadenas resultó demasiado complicado. Editar: ahorró 2 bytes mediante codificación errily,y 1 byte al eliminar un innecesario ^.

Neil
fuente
1

Python 2, 225 bytes

w=[["-"*35]*7for _ in[0]*4]
for i in [0]*4:w[i][i:i+4]=[a.ljust(35)for a in["Row, row, row your boat,","Gently down the stream.","Merrily,"+" merrily,"*3,"Life is but a dream."]]
print "\n".join(["|".join(i)for i in zip(*w)])

Pruébalo en línea!

Neil
fuente
1

Perl 5 , 215 bytes

$m='merrily,';$s=' 'x11;$l='-'x35;
@t=@s=("Row, row, row your boat,$s","Gently down the stream. $s",
       "\u$m $m $m $m","Life is but a dream.    $s",$l,$l,$l);
map{$i--;map$t[$_].="|".$s[$i++%7],0..6}1..3;print"$_\n"for@t

Pruébalo en línea!

Kjetil S.
fuente
1

Swift , 416 406 405 380 372 307 bytes

var f=String.init(repeating:count:);_={[[0,4,4,4],[1,0,4,4],[2,1,0,4],[3,2,1,0],[4,3,2,1],[4,4,3,2],[4,4,4,3]].forEach{print($0.map{["Row, row, row your boat,"+f(" ",11),"Gently down the stream."+f(" ",12),"Merrily,"+f(" merrily,",3),"Life is but a dream."+f(" ",15),f("-",35)][$0]}.joined(separator:"|"))}}

Puedes probarlo aquí .

Gracias a @Mr. ¡Xcoder por salvarme 65 bytes!

Caleb Kleveter
fuente
1
Genial para ver una respuesta rápida!
azufre
1
Puede hacerlo más corto reemplazando la declaración de flo siguiente:, lo var f=String.init(repeating:count:)que ahorra una tonelada de bytes: 30
Sr. Xcoder
1
Además, en el sandbox que no debería print(o()), solo debe llamar o()porque tiene una printdeclaración dentro, que da un ()final al final de la salida
Sr. Xcoder
1
Además, elimine los espacios en blanco innecesarios. Ahorrará muchos bytes. Comentaré una versión mejorada.
Sr. Xcoder
1
Aquí hay una versión mejorada, 309 bytes. Esto es 63 bytes más corto y se puede golfed, creo
Sr. Xcoder
1

T-SQL, 296 277 276 bytes

PRINT REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE('1|0|0|0
2|1|0|0
3|2|1|0
4|3|2|1
0|4|3|2
0|0|4|3
0|0|0|4',0,REPLICATE('-',35))
        ,1,'Row, row, row your boat,6')
        ,2,'Gently down the stream. 6')
        ,3,'M5 m5 m5 m5')
        ,4,'Life is but a dream.    6')
        ,5,'errily,')
        ,6,SPACE(11))

Los saltos de línea al principio son parte de la cadena original, los saltos de línea cerca del final son solo para fines de visualización y no se cuentan para el total de bytes.

Inspirado en gran medida por la respuesta de Conrade SparklePony . Técnica diferente a la respuesta SQL de Andrei Odegov .

Reemplazo múltiple bastante sencillo, pero algunas cosas que ayudan a ahorrar bytes:

  • SQL permite saltos de línea en la cadena original
  • El uso de números en lugar de caracteres me permite eliminar un montón de comillas simples
  • Reemplazos anidados (5 y 6), ahórreme aún más bytes (gracias, @ t-clausen.dk)

Si tan solo pudiera REPLACEtodos los REPLACEs con algo más corto. Hmm ...

BradC
fuente
1
Si REEMPLAZA el espacio 11,12,15 usando su propio método, puede guardar 1 byte
t-clausen.dk
1

Japt -R , 99 95 94 92 90 89 87 bytes

R³i`Life  ¿t a Ým.
M{34î`Îk, m`}
Gt§ ܵ e Ðpam.
Row, w, w yr ¾,`ú)·ú-
£éY Ťq|

Intentalo

R³i`L...{34î`...`}...,`ú)·ú-
R                                :Newline
 ³                               :Repeat 3 times
  i                              :Prepend
   `                             :  Decompress
    L...                         :    "Life is but a dream.\nM"
        {                        :    Interpolate
         34î                     :      Repeat & slice to length 34
            `...`                :        The compressed string "errily, m"
                 }               :    End interpolation
                  ...,           :    "\nGently down the stream.\nRow, row, row your boat,"
                      `          :  End decompression
                       ú         :  Right pad each line with spaces to the length of the longest
                        )        :End prepend
                         ·       :Split on newlines
                          ú-     :Right pad each element with "-" to the length of the longest
£éY Ťq|                         :Assign the above to U
£                                :Map each element at 0-based index Y
 éY                              :  Rotate U right Y times
    Å                            :  Slice off the first element
     ¤                           :  Slice off the first two elements
      q|                         :  Join with "|"
                                 :Implicit output, joined with newlines
Lanudo
fuente
0

Ruby, 162 bytes

7.times{|i|puts (~i..~i+3).map{|j|[*[?-*35]*3,"Life is but a dream.",?M+['errily,']*4*" m","Gently down the stream.","Row, row, row your boat,"][j].ljust(35)}*?|}
Tinta de valor
fuente
0

Java, 295 bytes / 272 259 bytes

con líneas nuevas cada 4 columnas (295b)

void r(){String m=" merrily,",t="-------",s="     ",e=t+t+t+t+t;String[]v={"Gently down the stream.  "+s+s, "Merrily,"+m+m+m, "Life is but a dream."+s+s+s, e, e, e, "Row, row, row your boat, "+s+s};for(int i=0;i<7;i++){for(int j=6+i;j>2+i;j--)System.out.print(v[j%7]+'|');System.out.println();}}

Pruébalo en línea

sin versión de nueva línea (259b):

void r(){String m=" merrily,",t="-------",s="     ",e=t+t+t+t+t;String[]v={"Gently down the stream.  "+s+s, "Merrily,"+m+m+m, "Life is but a dream."+s+s+s, e, e, e, "Row, row, row your boat, "+s+s};for(int i=0;i<28;i++)System.out.print(v[(6-i%4+i/4)%7]+'|');}
  • Condensado 2 para bucles en 1

Pruébalo en línea

Targz
fuente
0

Japt , 158 157 bytes

='|L=`Row, žw, žw yŒr ¾…,`+Sp11 +UV=`Gt§ ܵ e Ðpam.`+S³²²+UW=`M€Îk,`+` ´rÎk,`³+UJ=W+VX=`Life ‰ ¿t a Ý„m.`+Sp15 +UZ='-p35 +U[LZ³RVLZ²RJLZRXJLRZXJRZ²XWRZ³X]q

Pruébalo en línea!

Oliver
fuente
0

Perl 5 , 163 bytes

say join'|',(('-'x26)x3,"Life is but a dream".$"x7,ucfirst(join$",("merrily,")x3),"Gently down the stream    ",ucfirst "row, "x3 ."your boat  ")[-$_..3-$_]for 1..7

Pruébalo en línea!

Xcali
fuente
0

Encantamientos rúnicos , 292 bytes

B͍"-"'#*"|"3s
"Row, row, row your boat,"b" "S*q"|"3sB͍>01B10B3*1-akr@>12B01B10B2*1-akr@>13B12B01B10B1-akr@>14B13B12B01B1-akr@>10B3*14B1-r0[10B2*14B13B1-akr0[10B14B13B12B1-akr]]@
B͍"Gently down the stream."c" "S*q"|"3s
B͍"Merrily,"3" merrily,"S*q"|"3s
B͍"Life is but a dream."f" "S*q"|"3s

Pruébalo en línea!

Generalmente no hago , pero el diseño era uno con el que podía trabajar sin demasiados problemas. Runic no tiene buenas formas de comprimir cadenas arbitrarias, por lo que solo tenemos que trabajar con las partes repetitivas.

Explicación:

Descomprimiendo ligeramente:

B͍"-"'#*"|"3s
B͍"Row, row, row your boat,"b" "S*q"|"3s
B͍"Gently down the stream."c" "S*q"|"3s
B͍"Merrily,"3" merrily,"S*q"|"3s
B͍"Life is but a dream."f" "S*q"|"3s
>11B10B3*1-akr@
>12B11B10B2*1-akr@
>13B12B11B10B1-akr@
>14B13B12B11B1-akr@
>10B3*14B1-r0[10B2*14B13B1-akr0[10B14B13B12B1-akr]]@

Las primeras 5 líneas actúan como funciones para construir cada parte de la canción (donde la primera línea genera los 35 -para el espaciador usando el valor decimal de #para guardar 2 bytes 3X5+). La instrucción de retorno se encuentra al comienzo de la línea para asegurar que todas las IP que ingresen a una función también salgan después del mismo número de ciclos para evitar la fusión de IP (lo que da como resultado líneas de salida faltantes), ya que los programas son celdas rectangulares y vacías son implícitos

Las siguientes cuatro líneas son responsables de imprimir las primeras cuatro líneas de la salida.

La quinta línea imprime las últimas 3 líneas de salida. Debido a que las tres líneas necesitan comenzar con al menos un separador de estrofas, no es factible usar 3 IP separadas (ya que necesitarían retrasos para evitar la fusión). >, y, @, Y un coste de nueva línea más bytes (4) de 0[...](3 bytes) donde... es instrucciones arbitrarias (es decir. Otra línea de salida).

Por el contrario, reemplazar >y @usar una sola IP requiere más bytes.

Finalmente, la fusión de las cinco líneas de punto de entrada en la segunda línea ahorra 5 bytes de nuevas líneas. Solo tenemos que asegurarnos de que la instrucción de retorno de rancho se mueva primero al final de su línea, preservando la funcionalidad de la función.

Draco18s
fuente