줄, 줄, 줄을


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,5후 1,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 바이트 분량의 줄 바꿈이 절약됩니다. 우리는 보험에 가입해야 그 B͍함수의 기능을 보존하는 첫 번째 제품 라인의 끝에 목장 복귀 명령 이동합니다.

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