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