Cheo cheo cheo thuyên của bạn


26

Mọi người đều có thể quen thuộc với bài hát sau đây , đó là một vòng âm nhạc :

Bài hát.

Lý lịch

Ít người có thể nhớ lại việc cố gắng hát phiên bản 4 người này với một vài người bạn và thất bại. Bù đắp lời bài hát của một bài hát với các cao độ hài hòa khác nhau được gọi là hát một "vòng" và đó là những gì chúng ta ở đây để mô phỏng ngày hôm nay bằng cách sử dụng đầu ra tĩnh. Đây là một ví dụ về một người thực sự thực hiện tác phẩm (liên kết đến âm thanh / video, sẽ có âm thanh) .

Các thách thức

Thách thức này là xuất văn bản như sau chính xác như sau:

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.               

Quy tắc

  • Khoảng trắng lưu trữ được chấp nhận, nhưng không bắt buộc, điều này bao gồm các dòng mới.
  • Dấu gạch ngang và thanh là một phần của đầu ra cần thiết, vâng.
  • Dấu phẩy, dấu chấm, viết hoa và tất cả các yếu tố cú pháp liên quan đến ngữ pháp được yêu cầu.

Đây là , mã đếm byte thấp nhất mà không sử dụng sơ hở tiêu chuẩn là người chiến thắng.


2
Tôi chỉ muốn nói rằng, tôi rất thích những thử thách phức tạpnghệ thuật lớn của bạn! Cả cái này và bàn phím thật đều rất thú vị để viết giải pháp cho. :)
DJMcMayhem

2
@DJMcMayhem kể từ khi tìm thấy trang web này, tôi thấy những thách thức ngẫu nhiên trong cuộc sống hàng ngày của tôi và giữ một cuốn sổ ghi chú nhỏ cho những ý tưởng tôi nhận được, tôi sẽ tiếp tục cố gắng tạo ra những điều thú vị!
Bạch tuộc ma thuật Urn

Câu trả lời:


12

05AB1E , 80 77 byte

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

Hãy thử trực tuyến!

Công việc đang tiến triển.


Nhân tiện, tôi đã không bị ấn tượng bởi từ điển không có "05AB1E" trong đó. Nó làm cho gần như không thể hát chúc mừng sinh nhật 05AB1E một cách hiệu quả. Mặc dù vậy, câu trả lời tuyệt vời, hy vọng sẽ thấy một câu trả lời 05AB1E dựa trên từ điển haha. Ngoài ra DJMcMayhem là chính xác, nó không.
Bạch tuộc ma thuật Urn

Đợi đã, là ªgì? Nevermind, câu vỏ, rực rỡ.
Bạch tuộc ma thuật Urn

@carusocomputing: Vâng, gần đây tôi mới nhận thấy rằng nó tồn tại. Đã cần nó nhiều lần trong quá khứ: P
Emigna

vycó thể ʒđể lưu một byte.
Kevin Cruijssen

10

V , 139 , 128 byte

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

Một lót! (sắp xếp: P)

Hãy thử trực tuyến!

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|

Tôi có nhận được điểm thưởng khi hạ cánh chính xác 2^7không?

Điều này mất một thời gian để tìm ra. Tôi hy vọng tôi có thể chơi golf như câu trả lời nghệ thuật bàn phím ASCII của mình, nhưng tôi không chắc. Chúng ta sẽ thấy. Chúng là những thử thách rất giống nhau (và cả hai đều rất vui: D)

Ban đầu tôi đã thử cái này (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

Hãy thử trực tuyến!

Mà chèn cái này:

RDDD
GRDD
MGRD
LMGR
DLMG
DDLM
DDDL

và sau đó thay thế để mở rộng nó ra. Nhưng xây dựng nó theo phong cách thì ngắn hơn nhiều (và TBH vui hơn)


Bạn nhận được 0^(2^7)điểm thưởng khi hạ cánh trên 2^7haha. Thú vị nghĩ đầu tiên mặc dù trên phiên bản 180.
Bạch tuộc ma thuật Urn

1
@carusocomputing Aww, tại sao không cho anh ta (2 ^ 7) / 0 điểm thưởng?
Matthew Roh

6

Mẻ, 292 288 275 byte

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

Chỉnh sửa: Đã lưu 13 byte bằng cách viết lại mã để sử dụng phiên bản của thủ thuật chuỗi con tôi đã sử dụng trong câu trả lời Retina của mình. Thuận tiện Tôi có thể lặp sáu lần và sau đó rơi vào lần lặp thứ bảy của thân vòng lặp, điều đó có nghĩa là trích dẫn cần thiết để đầu ra |không quá khó chịu, tuy nhiên tôi phải cẩn thận khi tính đến ^s khi chọn chuỗi con .


6

Python 3, 252 235 208 206 205 byte

Được rồi được rồi. Đây là một câu trả lời ít nhàm chán hơn:

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

Câu trả lời cũ, 252 byte:

Câu trả lời nhàm chán và câu trả lời Python khác ngắn hơn, nhưng tôi nghĩ tôi sẽ thử nếu cách tiếp cận này ngắn hơn. Python 3 bất chấp sự tiết kiệm về byte / chuỗi 2-3 chênh lệch vì cả hai gzipbase64đều nhỏ hơn trong 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% chiều dài ban đầu, khá ấn tượng, nhưng bạn có thể thông minh hơn rất nhiều và chỉ nén lần lặp đầu tiên, chia nhỏ dòng mới và thực hiện 4 ca. Điều này có thể sẽ đánh bại việc thực hiện khác của trăn. Suy nghĩ để xem xét. Tôi không phải là người đến -1, không biết ai đã làm điều đó.
Bạch tuộc ma thuật Urn

@carusocomputing Đúng. Tôi thực sự chỉ quan tâm đến việc nén chạy tốt như thế nào đối với tác vụ đầu ra cố định rất dư thừa như vậy. Chuyển đổi câu trả lời của tôi thành một câu trả lời ngắn hơn, ít câm hơn.
L3viathan

Bạn cũng có thể chỉnh sửa lại trong nén? Tôi, cá nhân, thấy rằng cách tiếp cận cũng thú vị. Cụ thể là số lượng byte thấp thông qua gzip đơn giản. Nó phải sử dụng Huffman hoặc một cái gì đó ... +1 bất kể nỗ lực.
Bạch tuộc ma thuật Urn

1
@carusocomputing Tôi sẽ thêm nó ở phía dưới tôi đoán. Ngoài ra, tôi nghĩ rằng đó không phải là phần Huffman của sự xì hơi đang làm cho điều này tương đối tuyệt vời, mà là phần LZ.
L3viathan

1
@Jonathan ALLan Thật vậy, tôi đã bỏ lỡ điều đó. Đã sửa, mất một byte.
L3viathan

5

PowerShell , 224 207 202 byte

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

Hãy thử trực tuyến! (đầu ra được bọc nếu màn hình của bạn không đủ rộng)

Thật đau buồn, điều này tạo ra mảng là xấu, nhưng nó đã lưu 17 byte, vì vậy ...

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

Chúng tôi lặp từ 0đến 6. Mỗi lần lặp, chúng tôi lập chỉ mục thành một mảng (0,1,2,3,4,4,4). Việc lập chỉ mục dựa trên chữ số hiện tại +6, chữ số hiện tại -1, và sau đó -1 . Mỗi cái sau đó được cho ăn qua một vòng lặp nơi chúng ta modulo với %7. Ví dụ, nếu chúng ta đang ở trên 0của bên ngoài 0..6vòng lặp, sau đó những sẽ 0,6,5,4, sau đó mỗi %7, vì vậy 0,6,5,4. Đó là chỉ mục vào (0,1,2,3,4,4,4)mảng, vì vậy đầu ra là 0,4,4,4. Đối với đầu vào, 1chúng tôi nhận được 1,7,6,5sau 1,0,6,5đó sản lượng 1,0,4,4. Và như vậy. (mọi thứ sẽ dễ dàng hơn nhiều nếu chúng ta có một .clampchức năng)

Đó là những lần nhổ một lần vào một vòng lặp |%{}. Mỗi lần lặp lại, chúng tôi lập chỉ mục vào vị trí thích hợp trong mảng bài hát-lời bài hát và để lại chuỗi đó trên đường ống dẫn. Các chuỗi đó sau đó được -joined cùng với |để định dạng dòng đầu ra. Các chuỗi được để lại trên đường ống và đầu ra là ẩn.

Đã lưu một số byte nhờ vào Ink Ink.


Xem xét rằng bạn đã $alưu vào 11 khoảng trắng, bạn có thể thay đổi dòng thứ tư thành kết thúc bằng $a4 khoảng trắng thay vì $(' '*15)cho -3 byte, đúng không?
Mực giá trị

4

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

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

Đã lưu một vài byte bằng cách mượn một mẹo từ câu trả lời của Arnauld


Thử nó

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, .mapgiúp bạn tiết kiệm 10 byte. Ngoài ra, padEndkhông phải là một phần của ES6, hoặc thậm chí ES7.
Neil

Rất tiếc, có nghĩa là cập nhật nó lên ES8 - cảm ơn, @Neil. Và cảm ơn vì tiền boa, nhưng tôi đang trong quá trình thực hiện một giải pháp khác mà cuối cùng tôi đã tiết kiệm được 12 byte.
Xù xì

4

PHP, 191 byte

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

Hãy thử trực tuyến!

Mở rộng

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

Bạn có thể lưu một ký tự bằng cách xóa dấu ngoặc khỏi echo (đây không phải là chức năng)
Robbie Averill

@RobbieAverill Tôi biết nhưng dấu ngoặc bao gồm toán tử ternary và tôi chỉ có thể xóa nó. Tôi thay thế điểm thông qua dấu phẩy
Jörg Hülsermann

3

Python 2 , 199 byte

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

Hãy thử trực tuyến!


Cảm ơn @mathjunkie vì đã lưu 14 byte


'Merrily, merrily, merrily, merrily,'có thể ('merrily, '*4).capitalize()đúng không? Hay đó không phải là Python?
Bạch tuộc ma thuật Urn

2
Hoặc thậm chí ngắn hơn,'Merrily,'+' merrily,'*3
nghiện toán học

2

CJam , 128 122 byte

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

Hãy thử trực tuyến!

Giải trình

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

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

Phần 1 ┌׀0ρMVxDrž|⁷ΨB≈π93|↑D~Νķ‰¤t╤▼ΣΗ⁶⅔¾№⁷Ζ÷│²╥Ν9°‘là một chuỗi nén dẫn đến

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

Đây là những dòng bị đảo ngược (vì đây là in từng dòng một), với phần "vui vẻ" được cắt ra để được thay thế trong chương trình.
Phần còn lại của chương trình:

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

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

Hãy thử trực tuyến!

Đơn giản, sử dụng sự xuất hiện phổ biến như thay thế.


2

PHP, 179 byte:

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

vô dụng

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 byte

Đã lưu 3 byte nhờ 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>


Tôi nghĩ 'Merrily,'+' merrily,'.repeat(3)tiết kiệm một byte.
Neil

Ồ, và tôi đã quên đề cập đến điều đó padEndkhông có trong ES7, chứ đừng nói đến ES6.
Neil

1
M${s='errily, '}m${s}m${s}mthay vì M${s='errily,'} m${s} m${s} mtiết kiệm 2 byte
Luke

1
Bạn có thể lưu 3 byte với "Merrily,"+(s=" merrily,")+s+s.
Xù xì

1
@Shaggy À đúng rồi. Đó dường như là lựa chọn tốt nhất. Cảm ơn!
Arnauld

2

Máy chủ Microsoft Sql, 421 byte

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)

Kiểm tra trực tuyến


Tôi thích nó. Cơ sở dữ liệu là thông điệp của tôi!
Zahiro Mor

2

C (GCC), 231 230 byte

-1 byte nhờ trần nhà!

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

Khá đơn giản. Đầu tiên, nó xây dựng mảng chuỗi 7 dòng, một phần thông qua một macro để tạo ra phần "vui vẻ", sau đó các dòng dấu gạch ngang được điền vào a memset. Sau đó, các dòng được in với phần bù và dấu tách thích hợp.

Hãy thử trực tuyến!


@ceilingcat cảm ơn!
Quentin

1

MATLAB, 280 byte

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

Việc lập chỉ mục mảng ô khá tốn kém, có vẻ như là nơi dễ nhất để loại bỏ một số byte (nếu có thể).


Chào mừng đến với trang web!
DJMcMayhem

1

Võng mạc , 153 150 byte


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

Hãy thử trực tuyến!

Tôi đã thử mã hóa độ dài chạy tùy ý nhưng $1$*$2 không làm những gì tôi muốn và việc lặp lại chuỗi tỏ ra quá khó khăn. Chỉnh sửa: Đã lưu 2 byte bằng cách mã hóa errily,và 1 byte bằng cách loại bỏ một thứ không cần thiết ^.


1

Python 2, 225 byte

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

Hãy thử trực tuyến!


1

Perl 5 , 215 byte

$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

Hãy thử trực tuyến!


1

Swift , 416 406 405 380 372 307 byte

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

Bạn có thể thử nó ở đây .

Cảm ơn @Mr. Xcoder giúp tôi tiết kiệm 65 byte!


1
Tuyệt vời để xem một câu trả lời nhanh chóng!
vôi

1
Bạn có thể làm cho nó ngắn hơn bằng cách thay thế khai báo fthành như sau : var f=String.init(repeating:count:), giúp tiết kiệm hàng tấn byte: 30
Ông Xcoder

1
Ngoài ra, trong hộp cát bạn không nên print(o()), bạn chỉ nên gọi o()vì bạn có một printtuyên bố bên trong nó, đưa ra một ()kết thúc ở đầu ra
Ông Xcoder

1
Ngoài ra, loại bỏ khoảng trắng không cần thiết. Nó sẽ tiết kiệm rất nhiều byte. Tôi sẽ bình luận một phiên bản cải tiến.
Ông Xcoder

1
Đây là một phiên bản cải tiến, 309 byte. Nó ngắn hơn 63 byte và tôi có thể chơi gôn
Ông Xcoder

1

T-SQL, 296 277 276 byte

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

Ngắt dòng ở đầu là một phần của chuỗi gốc, ngắt dòng gần cuối chỉ dành cho mục đích hiển thị và không được tính vào tổng byte.

Lấy cảm hứng phần lớn bởi câu trả lời của Conrade SparklePony . Kỹ thuật khác với câu trả lời SQL của Andrei Odegov .

Thay thế đa hướng khá đơn giản, nhưng một số điều giúp tiết kiệm byte:

  • SQL cho phép ngắt dòng trong chuỗi gốc
  • Sử dụng chữ số thay vì ký tự cho phép tôi loại bỏ một loạt các dấu ngoặc đơn
  • Thay thế lồng nhau (5 và 6), tiết kiệm cho tôi nhiều byte hơn nữa (cảm ơn, @ t-clausen.dk)

Giá như tôi có thể REPLACEtất cả các REPLACEs với một cái gì đó ngắn hơn. Hừm ....


1
Nếu bạn thay thế không gian 11,12,15 bằng phương pháp của riêng bạn, bạn có thể lưu 1 byte
t-clausen.dk

1

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

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

Thử nó

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 byte

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 byte / 272 259 byte

với dòng mới cứ 4 cột (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();}}

Dùng thử trực tuyến

không có phiên bản mới (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]+'|');}
  • Ngưng 2 cho các vòng thành 1

Dùng thử trực tuyến


0

Japt , 158 157 byte

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

Hãy thử trực tuyến!




0

Bùa mê runic , 292 byte

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

Hãy thử trực tuyến!

Tôi thường không thực hiện thử thách , nhưng bố cục là thứ tôi có thể làm việc mà không gặp quá nhiều khó khăn. Runic không có cách tốt để nén các chuỗi tùy ý, vì vậy tất cả những gì chúng ta phải làm việc là các phần lặp đi lặp lại.

Giải trình:

Giải nén nhẹ:

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 dòng đầu tiên đóng vai trò là các hàm để xây dựng từng phần của bài hát (trong đó dòng đầu tiên tạo 35 -cho bộ đệm bằng cách sử dụng giá trị thập phân của #để lưu 2 byte qua 3X5+). Lệnh trả về nằm ở đầu dòng để đảm bảo rằng tất cả các IP nhập hàm cũng sẽ rời khỏi hàm sau cùng một số chu kỳ để tránh hợp nhất IP (dẫn đến thiếu các dòng đầu ra), vì các chương trình là các ô hình chữ nhật và trống là ngầm.

Bốn dòng tiếp theo chịu trách nhiệm in bốn dòng đầu tiên của đầu ra

Dòng thứ năm sau đó in 3 dòng đầu ra cuối cùng. Do cả ba dòng cần bắt đầu với ít nhất một stanza-spacer, không thể sử dụng 3 IP riêng biệt (vì chúng sẽ cần độ trễ để tránh sáp nhập). >, y, @, Và chi phí xuống dòng byte hơn (4) so với 0[...](3 byte), nơi... là hướng dẫn tùy ý (ví dụ. Một dòng đầu ra).

Ngược lại thay thế >@để sử dụng một IP duy nhất cần nhiều byte hơn.

Cuối cùng, việc hợp nhất tất cả năm dòng điểm vào dòng thứ 2 sẽ tiết kiệm được 5 byte giá trị của dòng mới. Chúng ta chỉ cần đảm bảo rằng lệnh ranch-return di chuyển đến cuối dòng trước, bảo toàn chức năng của hàm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.