Ряд, рядок, рядок човен


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 з моменту знаходження цього сайту я бачу виклики випадковим чином у своєму повсякденному житті і зберігаю невеликий блокнот для ідей, які я отримую, я буду намагатись зробити їх цікавими!
Чарівний восьминіг Урна

Відповіді:


12

05AB1E , 80 77 байт

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

Спробуйте в Інтернеті!

В роботі.


Я був дуже вражений словником, не маючи в ньому "05AB1E". Це зробило неможливим ефективно заспівати 05AB1E з днем ​​народження. Хоча крута відповідь, сподівався побачити відповідь на базі словника 05AB1E ха-ха. Також DJMcMayhem правильний, він так і робить.
Чарівна восьминога урна

Зачекайте, що таке ª? Беззаперечно, вирок укладений, блискучий.
Чарівна восьминога урна

@carusocomputing: Так, я недавно помітив, що він існує. Потрібні були кілька разів у минулому: Р
Емінья,

vyможна ʒзберегти байт.
Кевін Кройсейсен

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)

Спробуйте в Інтернеті!

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, але я не впевнений. Ми побачимо. Вони дуже схожі виклики (і обидва дуже цікаві: 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.
Чарівна восьминога урна

1
@carusocomputing Aww, чому б не надати йому (2 ^ 7) / 0 бонусних балів?
Меттью Ро

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. Зручно, я можу шість разів циклічити, а потім пройти через сьому ітерацію тіла циклу, що означає, що цитування, необхідне для виведення |s, не стає занадто обтяжливим, однак я повинен бути обережним, щоб врахувати ^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 різниці, тому що в Python 2 і те, gzipі base64в 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 зміни. Це, ймовірно, обіграє іншу реалізацію python. Думки для розгляду. Я не був той, хто до -1, не знаю, хто це зробив.
Чарівний восьминіг Урна

@carusocomputing True. Мене справді просто цікавило, наскільки добре працює стиснення відбійного верстата на такій надмірній задачі з фіксованим виходом. Я перетворив свою відповідь на більш коротку, менш тупу.
L3viathan

Чи можете ви також відредагувати стиснення? Я особисто вважав цей підхід також цікавим. А саме, наскільки низьке число байтів було отримано за допомогою простого gzip. Він повинен використовувати Хаффмана чи щось ... +1 незалежно від зусиль.
Чарівна восьминога урна

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.


Зважаючи на те, що ви вже $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)])

Зберегли кілька байт, запозичивши трюк з відповіді Арнальда


Спробуй це

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.
Ніл

На жаль, призначено оновити це до 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]);

Можна врятувати персонажа, знявши дужки з ехо (це не функція)
Роббі Аверилл

@RobbieAverill Я знаю, але в дужках є потрійний оператор, і я міг би його видалити тільки я
замінюю

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()прав? Або це не Python?
Чарівний восьминіг Урна

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

Це рядки, обернені назад (оскільки це друкується їх за рядком), при цьому "весело" вирізана частина повинна бути замінена в програмі.
Решта програми:

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

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

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)економить байт.
Ніл

О, і я забув згадати, що padEndце не в ES7, не кажучи вже про ES6.
Ніл

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.
Кудлатий

1
@Shaggy Ах так. Це, здається, найкращий варіант. Спасибі!
Арнольд

2

Сервер Microsoft 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 байт завдяки стельовій кішці!

#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 рядків, частина через макрос, щоб розподілити "весело" частину, потім рядки тире заповнюються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 150 байт


<-|>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. Xcoder для економії 65 байт!


1
Чудово бачити швидку відповідь!
сірка

1
Ви можете скоротити його, замінивши декларацію fна таке: var f=String.init(repeating:count:)що економить тонну байтів: 30
Містер Xcoder

1
Крім того, у пісочниці ви не повинні print(o()), вам слід просто зателефонувати, o()оскільки у вас є printзаява, яка дає а ()в кінці виводу
Містер Xcoder

1
Також видаліть зайвий пробіл. Це заощадить багато байтів. Я прокоментую покращену версію.
Містер Xcoder

1
Ось покращена версія, 309 байт. Це на 63 байти коротше, і я можу пограти в гольф
містер 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))

Розриви рядків на початку є частиною початкового рядка, перерви рядків у кінці призначені лише для відображення і не враховуються до загальної кількості байтів.

Натхненний значною мірою відповіддю Конрада СпарклПоні . Інша техніка, ніж відповідь Андрія Одегова на 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

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

Рунічні чари , 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 рядки виводу. Через всі три рядки, які потрібно починати хоча б з однієї строфи-розпірки, неможливо використовувати 3 окремі IP-адреси (оскільки вони потребують затримок, щоб уникнути злиття). >, y, @, І новий рядок коштувати більше байт (4) , ніж 0[...](3 байта) , де ...це довільні інструкції (тобто іншій лінії. Вихід).

І навпаки, для заміни >та @використання єдиного IP потрібно більше байтів.

Нарешті, об'єднання всіх п'яти ліній вхідної точки на другий рядок економить 5 байтів на новий рядок. Нам потрібно лише переконатися, що команда ranch-return спочатку рухається до кінця рядка, зберігаючи функціональність функції.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.