Reme reme reme seu barco


26

Todo mundo provavelmente está familiarizado com a seguinte música , que é uma rodada musical :

A música.

fundo

Menos pessoas podem se lembrar de tentar cantar a versão em 4 pessoas com alguns amigos e falhar. Deslocar a letra de uma música com diferentes tons harmoniosos é conhecido como cantar uma "rodada" e é isso que estamos aqui para simular hoje usando saída estática. Aqui está um exemplo de alguém que realmente está realizando a peça (link para áudio / vídeo, terá som) .

O desafio

Esse desafio é gerar o texto da seguinte maneira exatamente da seguinte maneira:

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.               

Regras

  • O espaço em branco à direita é aceitável, mas não obrigatório, isso inclui novas linhas.
  • Hífens e barras fazem parte da saída necessária, sim.
  • Vírgulas, pontos, letras maiúsculas e todos os elementos sintáticos relacionados à gramática são necessários.

Este é o , o código de contagem de bytes mais baixo sem usar brechas padrão é o vencedor.


2
Eu só quero dizer que gosto muito dos seus grandes desafios de complexidade kolmogorov e ascii-art ! Tanto este como um teclado tão real foram extremamente divertidos de se escrever soluções. :)
— DJMcMayhem

2
@DJMcMayhem Desde que encontrei este site, vejo desafios aleatoriamente no meu dia a dia e mantenho um pequeno bloco de notas para as idéias que recebo, continuarei tentando tirar sarro!
— Urna Mágica do Polvo

Respostas:


12

05AB1E , 80 bytes

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

Experimente online!

Trabalho em progresso.


Fiquei bastante impressionado com o dicionário não ter "05AB1E" nele, a propósito. Tornou quase impossível cantar eficientemente feliz aniversário de 05AB1E. Resposta legal, porém, esperava ver uma resposta 05AB1E com base em dicionário haha. Também DJMcMayhem está correto, ele faz.
— Urna Mágica do Polvo

Espera, o que é ª? Deixa pra lá, sentença escrita, brilhante.
— Magic Octopus Urn

@carusocomputing: Sim, só recentemente notei que ele existe. Já precisou várias vezes no passado: P
— Emigna 21/04

vypode ser ʒpara salvar um byte.
— Kevin Cruijssen 06/06

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|

Um one-liner! (tipo: P)

Experimente online!

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|

Recebo pontos de bônus por pousar exatamente 2^7?

Demorou um pouco para descobrir. Espero poder jogar toneladas como a resposta artística do teclado ASCII, mas não tenho certeza. Veremos. São desafios muito semelhantes (e ambos muito divertidos: D)

Originalmente eu tentei isso (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

Experimente online!

O que insere isso:

RDDD
GRDD
MGRD
LMGR
DLMG
DDLM
DDDL

e então substitui para expandi-lo. Mas construí-lo estilo é muito mais curto (e mais divertido, TBH)


Você ganha 0^(2^7)pontos de bônus por pousar no 2^7haha. Interessante primeiro pensamento, embora na versão 180.
— Magic Octopus Urn

1
@carusocomputing Aww, por que não dar a ele (2 ^ 7) / 0 pontos de bônus?
— 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: salvou 13 bytes reescrevendo o código para usar uma versão do truque de substring que usei na minha resposta Retina. Convenientemente, posso repetir seis vezes e depois fazer uma sétima iteração do corpo do loop, o que significa que a citação necessária para a saída |s não fica muito onerosa, no entanto, tenho que ter cuidado para levar ^em conta os s ao selecionar a substring .


6

Python 3, 252 235 208 206 205 bytes

Tudo bem, tudo bem. Aqui está uma resposta menos chata:

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='|')

Resposta antiga, 252 bytes:

Resposta chata, e a outra resposta Python é mais curta, mas pensei em tentar se essa abordagem for mais curta. Python 3, apesar da economia de byte / string 2-3 diferença porque ambos gzipe base64são shittier em 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())

25% do comprimento original, bastante impressionante, mas você pode ser muito mais inteligente e compactar apenas a primeira iteração, dividir em novas linhas e realizar 4 turnos. Isso provavelmente superaria a outra implementação do python. Pensamentos a considerar. Eu não fui o único a -1, não sei quem fez isso.
— Magic Octopus Urn

@carusocomputing True. Eu estava realmente interessado no quão bem a compactação run-off-the-mill funciona em uma tarefa de saída fixa tão altamente redundante. Converti minha resposta para uma mais curta e menos burra.
— precisa saber é o seguinte

Você também pode editar novamente na compressão? Eu, pessoalmente, achei essa abordagem interessante também. Ou seja, quão baixo o número de bytes ficou por meio do gzip simples. Ele deve usar Huffman ou algo assim ... +1 independentemente do esforço.
— Magic Octopus Urn

1
@carusocomputing Vou adicioná-lo na parte inferior, eu acho. Além disso, acho que não é a parte de desinflação de Huffman que está fazendo isso relativamente grande, mas a parte de LZ.
— precisa saber é o seguinte

1
@ JonathanAllan Na verdade, eu senti falta disso. Corrigido, perdeu um 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'|'}

Experimente online! (a saída é quebrada se sua tela não for larga o suficiente)

Nossa, essa coisa de geração de array é feia, mas salvou 17 bytes, então ...

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

Passamos de 0para 6. A cada iteração, estamos indexando em uma matriz (0,1,2,3,4,4,4). A indexação é baseada no dígito atual, o dígito atual +6, aquele -1e depois aquele -1 . Cada um deles é então alimentado através de um loop no qual modulamos %7. Por exemplo, se estivermos no loop 0externo 0..6, esses seriam 0,6,5,4, então cada %7um 0,6,5,4. Isso é indexado na (0,1,2,3,4,4,4)matriz, então a saída é 0,4,4,4. Para entrada 1, obtemos 1,7,6,5então o 1,0,6,5que produz 1,0,4,4. E assim por diante. (as coisas seriam muito mais fáceis se tivéssemos uma .clampfunção)

Esses são cuspir um de cada vez em um loop |%{}. A cada iteração, indexamos no local apropriado no conjunto de letras de músicas e deixamos essa sequência no pipeline. Essas strings são -joineditadas juntamente com |para formatar a linha de saída. Essas strings são deixadas no pipeline e a saída é implícita.

Economizou alguns bytes graças ao Value Ink.


Considerando que você já $asalvou em 11 espaços, você pode alterar a quarta linha para terminar em $amais 4 espaços em vez de $(' '*15)-3 bytes, sim?
— Valor Ink

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

Economizou alguns bytes emprestando um truque da resposta de Arnauld


Tente

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>


1
'0444,1044,2104,3210,4321,4432,4443'.split, .mapVocê economiza 10 bytes. Além disso, padEndnão faz parte do ES6 ou mesmo do ES7.
— 21417 Neil

Ops, o objetivo era atualizar isso para o ES8 - obrigado, @Neil. E obrigado pela dica, mas eu estava trabalhando em outra solução que acabou me poupando 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]);

Experimente online!

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

Você poderia salvar um personagem, removendo os suportes de echo (não é uma função)
— Robbie Averill

@RobbieAverill eu sei, mas os suportes incluem um operador ternário e eu poderia removê-lo só que eu substituir o ponto através de uma vírgula
— 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)))

Experimente online!


Obrigado a @mathjunkie por salvar 14 bytes


'Merrily, merrily, merrily, merrily,'poderia estar ('merrily, '*4).capitalize()certo? Ou isso não é Python?
— Magic Octopus Urn

2
Ou ainda mais curto,'Merrily,'+' merrily,'*3
— viciado em matemática

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*

Experimente online!

Explicação

"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.

2

SOGL , 83 bytes

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

A 1ª parte ┌׀0ρMVxDrž|⁷ΨB≈π93|↑D~Ν퉤t╤▼ΣΗ⁶⅔¾№⁷Ζ÷│²╥Ν9°‘é uma string compactada que resulta em

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

Essas são as linhas invertidas (uma vez que são impressas linha por linha), com a parte "alegre" cortada para ser substituída no programa.
O restante do 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

2

/// , 200 bytes

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

Experimente online!

Simples, usa ocorrências comuns como substituições.


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

destroçado

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

2

JavaScript (ECMAScript 2017), 191 187 182 bytes

Economizou 3 bytes graças 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>


Eu acho que 'Merrily,'+' merrily,'.repeat(3)salva um byte.
— Neil

Ah, e eu esqueci de mencionar que padEndnão está no ES7, muito menos no ES6.
— Neil

1
M${s='errily, '}m${s}m${s}mem vez de M${s='errily,'} m${s} m${s} msalvar 2 bytes
— Lucas

1
Você pode salvar 3 bytes com "Merrily,"+(s=" merrily,")+s+s.
— Shaggy

1
@ Shagy Ah sim. Essa parece ser a melhor opção. Obrigado!
— Arnauld

2

Microsoft Sql Server, 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)

Verifique Online


Eu amo isso. Banco de dados é a minha mensagem!
— Zahiro Mor

2

C (GCC), 231 230 bytes

-1 byte graças ao 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]);}

Bem direto. Primeiro, ele cria a matriz de cadeias de 7 linhas, parte através de uma macro para fatorar a parte "alegre", depois as linhas de traços são preenchidas com a memset. Em seguida, as linhas são impressas com o deslocamento e separadores adequados.

Experimente online!


@ceilingcat thanks!
— 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

A indexação da matriz de células é bastante cara, que parece ser o lugar mais fácil para descartar alguns bytes (se possível).


Bem vindo ao site!
— 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}

Experimente online!

Tentei a codificação arbitrária no comprimento da execução, mas $1$*$2não faz o que quero, e a repetição de strings se mostrou muito complicada. Editar: salvou 2 bytes por codificação errily,e 1 byte removendo um desnecessário ^.


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

Experimente online!


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

Experimente online!


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:"|"))}}

Você pode tentar aqui .

Graças a @Mr. Xcoder por me salvar 65 bytes!


1
Ótimo ver uma resposta rápida!
— enxofre

1
Você pode torná-lo mais curto, substituindo a declaração de fque o seguinte: var f=String.init(repeating:count:), o que economiza uma tonelada de bytes: 30
— Mr. Xcoder

1
Além disso, na caixa de areia você não deve print(o()), você deve apenas chamar o()porque você tem uma printdeclaração em seu interior, o que dá uma ()no final da saída
— Mr. Xcoder

1
Além disso, remova o espaço em branco desnecessário. Isso economizará muitos bytes. Vou comentar uma versão melhorada.
— Mr. Xcoder

1
Aqui está uma versão aprimorada, 309 bytes. Esta é de 63 bytes mais curto e pode ser golfed, acredito
— Mr. 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))

As quebras de linha no início fazem parte da sequência original, as quebras de linha próximas ao final são apenas para fins de exibição e não são contadas no total de bytes.

Inspirado em grande parte pela resposta de Conrade SparklePony . Técnica diferente da resposta SQL de Andrei Odegov .

Substituição bastante direta, mas algumas coisas que ajudam a economizar bytes:

  • SQL permite quebras de linha na string original
  • O uso de numerais em vez de caracteres permite eliminar um monte de aspas simples
  • Substituições aninhadas (5 e 6), economize ainda mais bytes (obrigado, @ t-clausen.dk)

Se eu pudesse REPLACEtodos os REPLACEs com algo mais curto. Hmm....


1
Se você substituir o espaço 11,12,15 usando seu próprio método, poderá salvar 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|

Tente

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

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)}*?|}

0

Java, 295 bytes / 272 259 bytes

com novas linhas a cada 4 colunas (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();}}

Experimente Online

nenhuma versão de nova linha (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]+'|');}
  • 2 condensado para loops em 1

Experimente Online


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

Experimente online!



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

Experimente online!


0

Encantos 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

Experimente online!

Eu geralmente não faço , mas o layout era um com o qual eu poderia trabalhar sem muitos problemas. O Runic não tem boas maneiras de comprimir seqüências de caracteres arbitrárias; portanto, só precisamos trabalhar com partes repetitivas.

Explicação:

Descompactando um pouco:

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

As 5 primeiras linhas atuam como funções para criar cada parte da música (onde a primeira linha gera 35 -para o espaçador, usando o valor decimal de #para salvar 2 bytes 3X5+). A instrução de retorno está no início da linha para garantir que todos os IPs que entram em uma função também deixem a função após o mesmo número de ciclos para evitar a mesclagem de IPs (resultando em linhas de saída ausentes), pois os programas são células retangulares e vazias estão implícitos.

As próximas quatro linhas são responsáveis ​​por imprimir as quatro primeiras linhas da saída

A quinta linha imprime as últimas 3 linhas de saída. Como as três linhas precisam começar com pelo menos um espaçador de estrofes, não é possível usar três IPs separados (pois eles precisariam de atrasos para evitar a mesclagem). >, y, @, E um custo mais bytes de nova linha (4) do que 0[...](3 bytes) onde ...é instruções arbitrárias (isto é. Uma outra linha de saída).

Substituindo >e substituindo@ usar um único IP requer mais bytes.

Finalmente, mesclar todas as cinco linhas de ponto de entrada na segunda linha economiza 5 bytes de novas linhas. Apenas precisamos garantir que a B͍instrução de retorno ao rancho se mova primeiro para o final de sua linha, preservando a funcionalidade da função.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.