แถวแถวแถวเรือของคุณ


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
ผมแค่อยากจะบอกว่าผมเป็นอย่างมากสนุกกับการที่มีขนาดใหญ่ของคุณKolmogorov ซับซ้อนและASCII ศิลปะความท้าทาย! ทั้งตัวนี้และคีย์บอร์ดตัวจริงช่างสนุกกับการเขียนวิธีแก้ปัญหา :)
DJMcMayhem

2
@DJMcMayhem นับตั้งแต่พบเว็บไซต์นี้ฉันเห็นความท้าทายแบบสุ่มในชีวิตประจำวันของฉันและเก็บแผ่นจดบันทึกเล็ก ๆ สำหรับความคิดที่ฉันได้รับฉันจะพยายามทำสิ่งที่สนุก!
Magic Octopus Urn

คำตอบ:


12

05AB1E , 80 77 ไบต์

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

ลองออนไลน์!

กำลังดำเนินการ


ฉันค่อนข้างประทับใจกับพจนานุกรมที่ไม่มี "05AB1E" อยู่ในนั้น มันทำให้เป็นไปไม่ได้เลยที่จะร้องเพลง 05AB1E สุขสันต์วันเกิดอย่างมีประสิทธิภาพ คำตอบที่ยอดเยี่ยม แต่หวังว่าจะเห็นคำตอบที่เป็นพจนานุกรม 05AB1E อยู่ฮ่าฮ่า นอกจากนี้ DJMcMayhem นั้นถูกต้องเช่นกัน
Magic Octopus Urn

เดี๋ยวก่อนคือªอะไร ไม่เป็นไรประโยคประโยคนี้ดูยอดเยี่ยม
Magic Octopus Urn

@carusocomputing: ใช่ฉันเพิ่งสังเกตเห็นว่ามันมีอยู่ จำเป็นต้องใช้หลายครั้งในอดีต: P
Emigna

vyสามารถʒบันทึกไบต์
Kevin Cruijssen

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|

หนึ่งซับ! (sortof: P)

ลองออนไลน์!

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|

ฉันจะได้รับคะแนนโบนัสสำหรับการลงจอดได้2^7หรือไม่

การดำเนินการนี้ใช้เวลาสักครู่ ฉันหวังว่าฉันจะตีกอล์ฟได้เยอะเหมือนแป้นพิมพ์ ASCII art แต่ฉันไม่แน่ใจ เราจะเห็น พวกเขาเป็นความท้าทายที่คล้ายกันมาก (และทั้งสนุกมาก: 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%

แก้ไข: บันทึกไว้ 13 ไบต์โดยเขียนรหัสใหม่เพื่อใช้เคล็ดลับซับสตริงที่ฉันใช้ในคำตอบ Retina ของฉัน สะดวกฉันสามารถวนรอบหกครั้งแล้วหล่นผ่านสำหรับวนซ้ำที่เจ็ดของร่างกายวนซึ่งหมายความว่า quoting ที่จำเป็นในการส่งออก|s ไม่ได้รับภาระมากเกินไป แต่ฉันต้องระวังที่จะคำนึง^ถึงเมื่อเลือกสตริงย่อย .


6

Python 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 อื่นนั้นสั้นกว่านี้ แต่ฉันคิดว่าฉันจะลองถ้าวิธีนี้สั้นกว่านี้ Python 3 ทั้งๆที่มีการประหยัดในไบต์ / สตริงที่แตกต่างกัน 2-3 เนื่องจากทั้งสองgzipและbase64มี shittier ใน 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% ของความยาวดั้งเดิมนั้นค่อนข้างน่าประทับใจ แต่คุณอาจฉลาดกว่าและบีบอัดแค่การวนซ้ำครั้งแรก นี่น่าจะชนะการติดตั้ง python อื่น ๆ ความคิดที่จะต้องพิจารณา ฉันไม่ใช่คนต่อ -1 ไม่รู้ว่าใครทำอย่างนั้น
Magic Octopus Urn

@carusocomputing True ฉันแค่สนใจจริง ๆ ว่าการบีบอัดแบบวิ่งออกจากโรงสีทำงานได้ดีกับงานเอาท์พุทคงที่ที่ซ้ำซ้อนสูงได้อย่างไร เปลี่ยนคำตอบของฉันให้สั้นลงและเป็นใบ้น้อยลง
L3viathan

คุณสามารถแก้ไขกลับในการบีบอัดได้หรือไม่ ฉันเองพบว่าวิธีการที่น่าสนใจเช่นกัน นับได้ว่า byte-count ต่ำเพียงใดผ่าน gzip ง่าย ๆ มันต้องใช้ Huffman หรืออะไรบางอย่าง ... +1 โดยไม่คำนึงถึงความพยายาม
Magic Octopus Urn

1
@carusocomputing ฉันจะเพิ่มที่ด้านล่างฉันเดา นอกจากนี้ฉันคิดว่ามันไม่ใช่ส่วนของ Huffman ของภาวะเงินฝืดที่ทำให้สิ่งนี้ค่อนข้างดี แต่เป็นส่วน LZ
L3viathan

1
@JanathanAllan แน่นอนฉันพลาดไป คงที่หายไปหนึ่งไบต์
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


เมื่อพิจารณาว่าคุณ$aบันทึกไปแล้ว 11 ช่องว่างคุณสามารถเปลี่ยนบรรทัดที่สี่เป็นจุดสิ้นสุดใน$aบวก 4 ช่องว่างแทนที่จะ$(' '*15)เป็น -3 ไบต์ใช่หรือไม่
หมึกมูลค่า

4

JavaScript (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, .mapช่วยให้คุณประหยัด 10 ไบต์ นอกจากนี้ยังpadEndไม่ได้เป็นส่วนหนึ่งของ ES6 หรือแม้แต่ ES7
Neil

โอ๊ะโอต้องการอัปเดตเป็น ES8 - ขอบคุณ @Neil และขอบคุณสำหรับเคล็ดลับ แต่ฉันอยู่ในขั้นตอนการทำงานกับโซลูชันอื่นที่จบลงด้วยการประหยัดฉัน 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örgHülsermann

3

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

ลองออนไลน์!


ขอบคุณ @mathjunkie สำหรับการบันทึก 14 ไบต์


'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

ส่วนที่ 1 ┌׀0ρMVxDrž|⁷ΨB≈π93|↑D~Νķ‰¤t╤▼ΣΗ⁶⅔¾№⁷Ζ÷│²╥Ν9°‘เป็นสตริงที่บีบอัดที่เกิดขึ้น

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

นี่คือเส้นที่กลับด้าน (เนื่องจากเป็นการพิมพ์บรรทัดต่อบรรทัด) โดยมีการตัดส่วน "merrily" เพื่อแทนที่ในโปรแกรม
ส่วนที่เหลือของโปรแกรม:

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

ungolfed

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 ไบต์

บันทึกแล้ว 3 ไบต์ขอบคุณ 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>


ฉันคิดว่า'Merrily,'+' merrily,'.repeat(3)บันทึกเป็นไบต์
Neil

โอ้และฉันลืมที่จะพูดถึงว่าpadEndมันไม่ได้อยู่ใน ES7 เลย ES6
Neil

1
M${s='errily, '}m${s}m${s}mแทนการM${s='errily,'} m${s} m${s} mบันทึก 2 ไบต์
ลุค

1
คุณสามารถบันทึก 3 "Merrily,"+(s=" merrily,")+s+sไบต์ด้วย
Shaggy

1
@Shaggy Ah ใช่ นั่นดูเหมือนจะเป็นตัวเลือกที่ดีที่สุด ขอบคุณ!
Arnauld

2

เซิร์ฟเวอร์ SQL Sql, 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), 231 230 ไบต์

-1 ไบต์ขอบคุณไปที่ catcat!

#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 เส้นอาร์เรย์สตริงส่วนหนึ่งผ่านทางแมโครเพื่อ factorise ออก "สนุกสนาน" memsetส่วนหนึ่งแล้วเส้นขีดกลางที่เต็มไปด้วย จากนั้นเส้นจะถูกพิมพ์ด้วยออฟเซ็ตและตัวคั่นที่เพียงพอ

ลองออนไลน์!


@ceilingcat ขอบคุณ!
เควนติน

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

เรติน่า153 153ไบต์


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

สวิฟต์ , 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 Xcoder สำหรับการบันทึกฉัน 65 ไบต์!


1
ยอดเยี่ยมในการดูคำตอบที่รวดเร็ว!
กำมะถัน

1
คุณสามารถทำให้มันสั้นลงโดยแทนที่การประกาศของfต่อไปนี้: var f=String.init(repeating:count:)ซึ่งช่วยบันทึกเป็นตัน: 30
Mr. Xcoder

1
นอกจากนี้ใน sandbox ที่คุณไม่ควรprint(o())คุณควรจะโทรo()เพราะคุณมีprintคำสั่งอยู่ข้างในซึ่งจะให้()ในตอนท้ายของการส่งออก
นาย Xcoder

1
นอกจากนี้ให้ลบช่องว่างที่ไม่จำเป็นออก มันจะประหยัดจำนวนไบต์ ฉันจะแสดงความคิดเห็นรุ่นปรับปรุง
นาย Xcoder

1
นี่คือรุ่นปรับปรุง 309 ไบต์ นี่สั้นกว่า 63 ไบต์และสามารถเล่นกอล์ฟได้ฉันเชื่อว่า
Mr. Xcoder

1

T-SQL, 296 277 276 ไบต์

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 ของ เทคนิคที่แตกต่างกว่าอังเดร Odegov คำตอบของ

การเปลี่ยนหลายตัวแบบตรงไปตรงมาค่อนข้างสวย แต่มีบางสิ่งที่ช่วยประหยัดไบต์:

  • 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

Java, 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

Runic Enchantmentsขนาด 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 บรรทัดแรกทำหน้าที่เป็นฟังก์ชั่นในการสร้างแต่ละส่วนของเพลง (โดยที่บรรทัดแรกสร้าง 35 -สำหรับตัวเว้นวรรคโดยใช้ค่าทศนิยมของ#เพื่อบันทึก 2 ไบต์มากกว่า3X5+) คำสั่งการคืนสินค้าอยู่ที่จุดเริ่มต้นของบรรทัดเพื่อประกันว่า IP ทั้งหมดที่ป้อนฟังก์ชันจะออกจากฟังก์ชันหลังจากรอบจำนวนเดียวกันเพื่อหลีกเลี่ยงการรวม IP (ทำให้เกิดบรรทัดที่หายไป) เนื่องจากโปรแกรมเป็นเซลล์รูปสี่เหลี่ยมผืนผ้าและเซลล์ว่าง เป็นนัย

สี่บรรทัดถัดไปมีหน้าที่พิมพ์สี่บรรทัดแรกของเอาต์พุต

บรรทัดที่ห้าจากนั้นพิมพ์ผลลัพธ์ 3 บรรทัดสุดท้าย เนื่องจากทั้งสามบรรทัดจำเป็นต้องเริ่มต้นด้วย stanza-spacer อย่างน้อยหนึ่งตัวจึงไม่สามารถใช้ IP แยก 3 ตัวได้ (เนื่องจากต้องการความล่าช้าเพื่อหลีกเลี่ยงการรวมกัน) >, y, @และค่าใช้จ่ายมากขึ้นบรรทัดใหม่ไบต์ (4) กว่า0[...](3 bytes) ที่...เป็นคำแนะนำโดยพลการ (เช่น. บรรทัดของการส่งออกอื่น)

ในทางกลับกันการแทนที่>และ@การใช้ IP เดียวต้องใช้ไบต์มากกว่า

สุดท้ายการรวมจุดเข้าทั้งห้าเข้ากับบรรทัดที่ 2 จะช่วยประหยัดการขึ้นบรรทัดใหม่ 5 ไบต์ เราเพียงแค่ต้องมั่นใจว่าคำสั่ง ranch-return ย้ายไปยังจุดสิ้นสุดของบรรทัดแรกโดยรักษาฟังก์ชันการทำงานของฟังก์ชันไว้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.