줄, 줄, 줄을


26

모든 사람은 다음과 가능성이 익숙한 노래 입니다, 뮤지컬 라운드 :

노래.

배경

소수의 친구들과 함께이 4 인용 버전을 부르려고했지만 실패한 사람은 거의 없을 것입니다. 서로 다른 음조의 피치로 노래 가사를 상쇄하는 것을 "라운드"라고 부르며 오늘날 정적 출력을 사용하여 시뮬레이션합니다. 다음의 예 사람이 실제로 조각 수행 (오디오 / 비디오 링크는 소리를해야합니다) .

도전

이 과제는 다음과 같이 정확하게 텍스트를 출력하는 것입니다.

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.               

규칙

  • 후행 공백은 허용되지만 필수는 아니지만 개행이 포함됩니다.
  • 하이픈과 막대는 필요한 출력의 일부입니다.
  • 문법과 관련된 쉼표, 마침표, 대문자 및 모든 구문 요소가 필요합니다.

이것은 루프이며 표준 허점을 사용하지 않는 가장 낮은 바이트 수 코드가 승리합니다.


2
난 그냥 크게 많은 즐길 말하고 싶은 콜 모고 로프 - 복잡성아스키 예술 도전! 이 키보드키보드 는 모두 솔루션을 작성하는 데 매우 재미있었습니다. :)
DJMcMayhem

2
@DJMcMayhem이 사이트를 찾은 이래로 나는 일상 생활에서 무작위로 도전 과제를보고, 아이디어를 얻기 위해 작은 메모장을 유지하고, 재미있는 것을 만들기 위해 계속 노력할 것입니다!
Magic Octopus Urn

답변:


12

05AB1E , 80 77 바이트

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

온라인으로 사용해보십시오!

진행중인 작업.


그건 그렇고, 그 사전에 "05AB1E"가없는 사전에 깊은 인상을 받았습니다. 05AB1E 생일 축하를 효율적으로 노래하는 것이 거의 불가능했습니다. 멋진 답변이지만 사전 기반 05AB1E 답변 haha를보고 싶었습니다. 또한 DJMcMayhem이 맞습니다.
Magic Octopus Urn

잠깐만 ª? 신경 쓰지 말고 선고하고 훌륭합니다.
Magic Octopus Urn

@ carusocomputing : 예, 최근에 만 존재한다는 것을 알았습니다. 과거에 여러 번 그것을 필요로했다 : P
Emigna

vyʒ바이트를 저장할 수 있습니다 .
케빈 크루이 ssen

10

V , 139 , 128 바이트

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

하나의 라이너! (정렬 : P)

온라인으로 사용해보십시오!

16 진 덤프 :

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|

정확히 착륙 할 경우 보너스 포인트가 2^7있습니까?

알아내는 데 시간이 걸렸습니다. 키보드 ASCII 아트 답변처럼 골프 톤을 낼 수 있기를 바라고 있지만 확실하지 않습니다. 우리는 볼 수 있습니다. 그들은 매우 비슷한 도전 (그리고 둘 다 재미 : D)

원래 나는 이것을 시도했다 (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

온라인으로 사용해보십시오!

어느 것이 이것을 삽입합니까?

RDDD
GRDD
MGRD
LMGR
DLMG
DDLM
DDDL

그런 다음 대체하여 확장합니다. 그러나 스타일을 만드는 것은 훨씬 짧습니다 (더 재미있는 TBH).


하하 0^(2^7)상륙 보너스 포인트를 얻습니다 2^7. 180 버전에 대한 재미있는 첫 생각.
Magic Octopus Urn

1
@carusocomputing Aww, 왜 (2 ^ 7) / 0 보너스 포인트를주지 않습니까?
Matthew Roh

6

배치, 292 288 275 바이트

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

편집 : Retina 답변에 사용한 하위 문자열 트릭 버전을 사용하도록 코드를 다시 작성하여 13 바이트를 절약했습니다. 편리하게 6 번 반복 한 다음 루프 본문의 7 번째 반복에 빠질 수 있습니다. 즉 |s 출력에 필요한 인용 이 너무 번거롭지 않지만 ^하위 문자열을 선택할 때 s를 고려해야합니다. .


6

파이썬 3 252 235 208 206 205 바이트

알았어 알았어. 덜 지루한 대답은 다음과 같습니다.

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

이전 답변, 252 바이트 :

지루한 답변과 다른 Python 답변은 더 짧지만이 접근법이 더 짧으면 시도 할 것이라고 생각했습니다. 파이썬 3는 바이트 / 문자열 절감 2-3 차이에도 불구하고 모두 있기 때문에 gzip그리고 base64파이썬 2 shittier 있습니다.

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 %, 꽤 인상적이지만, 훨씬 더 똑똑하고 첫 번째 반복 만 압축하고 줄 바꿈으로 분할하고 4 교대를 수행 할 수 있습니다. 이것은 다른 파이썬 구현을 능가 할 것입니다. 고려해야 할 생각. 나는 -1이 아니었다. 누가 그랬는지 모르겠다.
Magic Octopus Urn

@carusocomputing True입니다. 난 정말 고도로 중복 된 고정 출력 작업에서 방앗간 압축이 얼마나 잘 작동하는지 관심이있었습니다. 내 대답을 더 짧고 덜 바보 같은 것으로 변환했습니다.
L3viathan

압축 파일에서 다시 편집 할 수 있습니까? 나는 개인적으로 그 접근 방식도 흥미로웠다. 즉, 간단한 gzip을 통해 바이트 수를 얼마나 낮게 얻었습니까? 노력과 상관없이 허프만이나 +1을 사용해야합니다.
Magic Octopus Urn

1
@ carusocomputing 나는 그것을 하단에 추가 할 것입니다. 또한, 나는 이것이 상대적으로 큰 것을 만드는 것은 허프만 부분이 아니라 LZ 부분이라고 생각합니다.
L3viathan

1
@JonathanAllan 실제로, 나는 그것을 놓쳤다. 바이트가 손실되었습니다.
L3viathan

5

PowerShell을 , 224 (207) 202 바이트

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

온라인으로 사용해보십시오! (화면이 충분히 넓지 않으면 출력이 줄 바꿈됩니다)

슬픔,이 어레이 생성은 추악하지만 17 바이트를 절약 했으므로 ...

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

에서 0로 반복 합니다 6. 반복 할 때마다 배열로 색인을 생성합니다 (0,1,2,3,4,4,4). 인덱싱은 현재 자리, 현재 자리에 기초 +6하는, -1다음 것을 -1 . 각각의 사람들은 우리가 함께 모듈로 루프를 통해 공급된다 %7. 예를 들어 0외부 0..6루프를 사용하는 경우 0,6,5,4, 각각 %7, 이렇게 0,6,5,4됩니다. (0,1,2,3,4,4,4)배열에 색인되어 있으므로 출력은 0,4,4,4입니다. 입력의 경우 1우리가 얻을 1,7,6,51,0,6,5어떤 수율을 1,0,4,4. 등등. (기능이 있으면 훨씬 쉬울 것입니다 .clamp)

그것들은 한 번에 하나씩 루프에 뱉어집니다 |%{}. 반복 할 때마다 노래 가사 배열의 적절한 지점에 색인을 생성하고 해당 문자열을 파이프 라인에 둡니다. 그런 다음 이러한 문자열은 출력 라인을 형식화하기 위해 -join함께 |연결됩니다. 이러한 문자열은 파이프 라인에 남아 있으며 출력은 암시 적입니다.

Value Ink 덕분에 바이트를 절약했습니다.


이미 $a11 개의 공백 을 저장 했다는 것을 고려하면 -3 바이트 $a대신 4 번째 공백 으로 끝나도록 네 번째 줄을 변경할 수 있습니다 $(' '*15).
Value Ink

4

자바 스크립트 (ES8) 285 256 240 231 229 217 214 213 211 210 바이트

_=>"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)])

Arnauld의 답변 에서 트릭을 빌려 몇 바이트를 절약했습니다.


시도 해봐

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, .map10 바이트를 절약합니다. 또한 padEndES6 또는 ES7의 일부가 아닙니다.
Neil

죄송합니다. @Neil 님, ES8로 업데이트했습니다. 팁을 주셔서 감사하지만 12 바이트를 절약하는 다른 솔루션을 개발하는 중이었습니다.
Shaggy

4

PHP, 191 바이트

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

온라인으로 사용해보십시오!

넓히는

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

에코에서 괄호를 제거하여 문자를 저장할 수 있습니다 (기능이 아님).
Robbie Averill

@RobbieAverill 알고 있지만 대괄호에는 삼항 연산자가 포함되어 있으며 쉼표를 통해 포인트를 대체하는 것만 제거 할 수 있습니다.
Jörg Hülsermann

3

파이썬 2 , 199 바이트

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

온라인으로 사용해보십시오!


14 바이트를 절약 한 @mathjunkie에게 감사합니다


'Merrily, merrily, merrily, merrily,'맞을까 ('merrily, '*4).capitalize()? 아니면 파이썬이 아닙니까?
Magic Octopus Urn

2
더 짧은'Merrily,'+' merrily,'*3
수학 중독자

2

CJam , 128 122 바이트

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

온라인으로 사용해보십시오!

설명

"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 바이트

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

첫 번째 부분 ┌׀0ρMVxDrž|⁷ΨB≈π93|↑D~Νķ‰¤t╤▼ΣΗ⁶⅔¾№⁷Ζ÷│²╥Ν9°‘은 압축 문자열이며

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

이것들은 줄을 바꾸어 놓은 것입니다 (이것은 한 줄씩 인쇄하기 때문입니다).
프로그램의 나머지 부분 :

...‘                                        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 바이트

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

온라인으로 사용해보십시오!

단순하고 일반적인 항목을 대체물로 사용합니다.


2

PHP, 179 바이트 :

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

언 골프

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

자바 스크립트 (ECMAScript를 2,017), 191 (187) 182 바이트

Shaggy 덕분에 3 바이트 절약

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>


'Merrily,'+' merrily,'.repeat(3)바이트를 절약 한다고 생각 합니다.
Neil

그리고 padEndES6은 물론 ES7에는없는 것을 언급하는 것을 잊었습니다 .
Neil

1
M${s='errily, '}m${s}m${s}m대신 M${s='errily,'} m${s} m${s} m2 바이트 를 절약
Luke

1
을 사용하여 3 바이트를 저장할 수 있습니다 "Merrily,"+(s=" merrily,")+s+s.
Shaggy

1
@Shaggy Ah 예. 그게 최선의 선택 인 것 같습니다. 감사!
Arnauld

2

Microsoft SQL Server, 421 바이트

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)

온라인 확인


나는 그것을 좋아한다. 데이터베이스는 나의 메시지입니다!
Zahiro Mor

2

C (GCC), 231230 바이트

ceilingcat 덕분에 -1 바이트!

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

꽤 직설적 인. 먼저 매크로를 통해 7 개의 문자열 배열을 만들어 "merrily"부분을 분해 한 다음 대시 줄은memset . 그런 다음 라인에 적절한 오프셋과 구분 기호가 인쇄됩니다.

온라인으로 사용해보십시오!


@ceilingcat 감사합니다!
Quentin

1

MATLAB, 280 바이트

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

셀 배열 인덱싱은 비용이 많이 들기 때문에 (가능한 경우) 일부 바이트를 버리는 가장 쉬운 곳처럼 보입니다.


사이트에 오신 것을 환영합니다!
DJMcMayhem

1

망막 , 153150 바이트


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

온라인으로 사용해보십시오!

임의의 실행 길이 인코딩을 시도했지만 $1$*$2원하는 것을 수행하지 않고 문자열을 반복하는 것이 너무 까다로 웠습니다. 편집 : 인코딩으로 2 바이트를 저장 errily,하고 불필요한을 제거하여 1 바이트를 저장했습니다 ^.


1

파이썬 2, 225 바이트

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

온라인으로 사용해보십시오!



1

스위프트 , 416 406 405 380 372 307 바이트

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

여기서 시도해 볼 수 있습니다 .

@Mr에게 감사합니다. 65 바이트 절약 해주는 Xcoder!


1
빠른 답변을 볼 수있어서 좋습니다!
유황

1
f다음 의 선언을 다음과 같이 바꾸면 더 짧아 질 수 있습니다 : var f=String.init(repeating:count:). 이것은 많은 바이트를 절약합니다 : 30
Mr. Xcoder

1
또한 샌드 박스 print(o())에서는 내부 o()print명령문 이 있기 때문에 호출하면 안됩니다 (). 출력의 끝에
. Mr. Xcoder

1
또한 불필요한 공백을 제거하십시오. 많은 바이트를 절약 할 수 있습니다. 개선 된 버전에 대해 언급하겠습니다.
Mr. Xcoder

1
다음 은 개선 된 버전 인 309 바이트입니다. 이것은 63 바이트 더 짧고 골프를 칠 수 있다고 믿습니다
Mr. Xcoder

1

T-SQL, 296 277276 바이트

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

시작 부분의 줄 바꿈은 원래 문자열의 일부이며 끝 부분의 줄 바꿈은 표시 목적으로 만 사용되며 총 바이트 수에 포함되지 않습니다.

Conrade SparklePony의 답변에서 크게 영감을 얻었습니다 . Andrei Odegov의 SQL 답변과 다른 기술 .

매우 간단한 다중 교체이지만 바이트 절약에 도움이되는 몇 가지 사항 :

  • SQL은 원래 문자열에서 줄 바꿈을 허용합니다
  • 문자 대신 숫자를 사용하면 작은 따옴표를 모두 제거 할 수 있습니다
  • 중첩 된 대체 (5 및 6), 더 많은 바이트를 절약하십시오 (감사합니다, @ t-clausen.dk)

내가 REPLACE모든 REPLACE것을 더 짧은 것으로 할 수 있다면 . 흠 ...


1
고유 한 방법으로 11,12,15 공간을 교체하면 1 바이트를 절약 할 수 있습니다
t-clausen.dk

1

Japt -R , 99 95 94 92 90 89 87 바이트

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

시도 해봐

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

루비, 162 바이트

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

자바, 295 바이트 / 272 259 바이트

4 열마다 줄 바꿈 (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();}}

온라인으로 사용해보십시오

개행 버전 없음 (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 개의 루프를 1로 압축

온라인으로 사용해보십시오





0

룬 마법 , 292 바이트

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

온라인으로 사용해보십시오!

나는 일반적으로 과제를하지 않지만 레이아웃은 너무 많은 어려움없이 사용할 수있는 레이아웃이었습니다. Runic은 임의의 문자열을 압축하는 좋은 방법이 없으므로 작업해야 할 부분은 반복되는 부분입니다.

설명:

약간 압축 해제 :

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

처음 5 줄은 노래의 각 부분을 구성하는 함수 역할을합니다 (첫 번째 줄 -은 10 진수 값을 사용하여 스페이서에 대해 35 를 생성하여 #2 바이트를 초과합니다 3X5+). 반환 명령은 줄의 시작 부분에 있으며 함수에 들어가는 모든 IP도 떠나지 않습니다. 프로그램 직사각형 빈 셀과 마찬가지로, 사이클의 동일한 수 (출력 라인 누락 결과) 병합 된 IP 않도록 후에 함수 암시 적입니다.

다음 네 줄은 출력의 첫 네 줄을 인쇄합니다.

다섯 번째 줄은 마지막 3 줄의 출력을 인쇄합니다. 3 개 라인 모두 하나 이상의 스탠자 스페이서로 시작해야하므로 3 개의 개별 IP를 사용하는 것은 불가능합니다 (병합을 피하기 위해 지연이 필요하므로). >, y, @및 개행 비용 이상 (4) 바이트 0[...]여기서 (3 바이트)... 임의의 명령 (예. 출력의 또 다른 선)이다.

반대로 교체 >@하나의 IP가 더 바이트를 필요로 사용할 수 있습니다.

마지막으로 5 개의 진입 점 줄을 두 번째 줄에 병합하면 5 바이트 분량의 줄 바꿈이 절약됩니다. 우리는 보험에 가입해야 그 함수의 기능을 보존하는 첫 번째 제품 라인의 끝에 목장 복귀 명령 이동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.