ボートをRowいで


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
私はあなたの大きなコルモゴロフの複雑さアスキーアートの挑戦を大いに楽しんでいます!この1つと非常にリアルなキーボードの両方は、ソリューションを書くのが非常に楽しいです。:)
DJMcMayhem

2
@DJMcMayhemこのサイトを見つけて以来、私は日々の生活でランダムに課題を見つけており、私が得たアイデアのために小さなメモ帳を保持しています。
魔法のタコUr

回答:


12

05AB1E80 77バイト

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

オンラインでお試しください!

進行中の作業。


ちなみに、辞書に "05AB1E"が含まれていないことに感銘を受けました。05AB1Eお誕生日おめでとうを効率的に歌うことはほぼ不可能になりました。しかし、クールな答えは、辞書ベースの05AB1Eの回答が見られることを望んでいました(笑)。また、DJMcMayhemは正しいです。
魔法のタコUr

待って、何ªですか?ネバーマインド、判決、素晴らしい。
魔法のタコUr

@carusocomputing:ええ、私は最近それが存在することに気づきました。過去に数回それを必要としていた:P
Emigna

vyʒバイトを保存することができます。
ケビンクルーッセン

10

V139、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バージョンについては興味深い最初の考えがあります。
魔法のタコUr

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%

編集:Retinaアンサーで使用したサブストリングトリックのバージョンを使用するようにコードを書き換えて、13バイトを保存しました。便利なことに、6回ループしてからループ本体の7回目の反復に|進むことができます。つまり、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の答えは短いですが、このアプローチが短い場合は試してみると思いました。バイト/文字列2-3差の節約にもかかわらず、Pythonの3の両方のためgzipbase64はPython 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シフトを実行できます。これはおそらく、Pythonの他の実装を打ち負かすでしょう。考慮すべきこと。私は-1ではありませんでした。誰がそれをしたのか分かりません。
魔法のタコUr

@carusocomputing True。このような非常に冗長な固定出力タスクで、すぐに実行可能な圧縮がどの程度うまく機能するかだけに興味がありました。私の答えをより短く、より愚かなものに変えました。
L3viathan

圧縮されたものを編集することもできますか?個人的には、このアプローチも興味深いと感じました。つまり、単純なgzipでバイト数がどれだけ少なくなったか。ハフマンか何かを使用する必要があります...努力に関係なく+1。
魔法のタコUr

1
@carusocomputing一番下に追加します。また、これを比較的大きくしているのは、デフレートのハフマン部分ではなく、LZ部分です。
L3viathan

1
@JonathanAllan確かに、私はそれを見逃した。修正、1バイト失われました。
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'|'}

オンラインでお試しください! (画面の幅が十分でない場合、出力はラップされます)

良い悲しみ、この配列生成はugいですが、17バイトを節約したので...

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

から0にループし6ます。反復ごとに、配列にインデックスを付けています(0,1,2,3,4,4,4)。インデックスは、現在の数字、現在の数字+6、that -1、およびthat に基づいて -1ます。それぞれのものは、我々はとモジュロループを介して供給されます%7。たとえば0、外側の0..6ループにいる場合、これらは0,6,5,4、それぞれeachの%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機能があればもっと簡単になります)

これらは一度に1つずつループに吐き出されます|%{}。反復ごとに、song-lyrics-arrayの適切な場所にインデックスを付け、その文字列をパイプラインに残します。これらの文字列は-join一緒に編集され|て、出力行をフォーマットします。これらの文字列はパイプラインに残り、出力は暗黙的です。

Value Inkのおかげで数バイト節約できました。


すでに$a11個のスペースに保存していることを考慮すると、4 バイト目を-3バイトの$a代わりにプラス4スペースで終了するように変更でき$(' '*15)ますか?
バリューインク

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.map10バイト節約します。また、padEndES6、またはES7の一部でもありません。
ニール

おっと、それをES8に更新するつもりだった-ありがとう、@ Neil。そして、先端に感謝しますが、私は12バイトを節約することになった別のソリューションに取り組んでいた。
シャギー

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
イェルクHü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)))

オンラインでお試しください!


14バイトを節約してくれた@mathjunkieに感謝


'Merrily, merrily, merrily, merrily,'かもしれません('merrily, '*4).capitalize()よね?それともPythonではありませんか?
魔法のタコUr

2
またはさらに短く、'Merrily,'+' merrily,'*3
数学中毒

2

CJam128 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

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バイト節約

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)バイトを節約できると思います。
ニール

ああ、padEndES6にはもちろんES7にはないことを忘れていました。
ニール

1
M${s='errily, '}m${s}m${s}mM${s='errily,'} m${s} m${s} m2バイトを保存する代わりに
ルーク

1
で3バイト節約できます"Merrily,"+(s=" merrily,")+s+s
シャギー

1
@Shaggy Ahはい。それが最良の選択肢のようです。ありがとう!
アーナルド

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)

オンラインで確認する


大好きです。データベースは私のメッセージです!
ザヒロモル

2

C(GCC)、231 230バイト

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行の文字列配列を作成し、マクロを介して「陽気な」部分を分解します。次に、ダッシュの行に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

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

Python 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

SWIFT416の 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:)
大量の

1
また、あなたはいけないサンドボックスでprint(o())、あなただけ呼び出す必要がありo()、あなたが持っているので、printその中に声明を与える、()出力の最後に
氏Xcoder

1
また、不要な空白を削除します。それは多くのバイトを節約します。改良版についてコメントします。
ミスターXcoder

1
以下は、309バイトの改良バージョンです。これは63バイト短く、ゴルフができます。
ミスターXcoder

1

T-SQL、296277276バイト

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 answerとは異なるテクニック。

かなり単純な複数置換ですが、バイトを節約するのに役立ついくつかのことがあります:

  • SQLは元の文字列で改行を許可します
  • 文字の代わりに数字を使用すると、単一引用符の束をすべて削除できます
  • 入れ子になった置換(5および6)、さらに多くのバイトを節約します(ありがとう、@ t-clausen.dk)

短いものでREPLACEすべてのREPLACEs ができたとしたら。うーん...


1
独自の方法を使用してスペース11,12,15を置き換える場合、1バイトを節約できます
t-clausen.dk

1

Japt -R99 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バイト/ 272259バイト

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つのforループを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のマージ(出力行の欠落)を回避します。暗黙的です。

次の4行は、出力の最初の4行を印刷します。

5行目は、出力の最後の3行を印刷します。3行すべてが少なくとも1つのスタンザスペーサーで開始する必要があるため、3つの個別のIPを使用することはできません(マージを回避するために遅延が必要になるため)。 >y@、および改行コスト以上(4)バイト0[...]ここで(3バイト)...任意の命令(すなわち、出力の別の行)です。

逆に交換する>@、単一のIPを使用することが多くのバイトを必要とします。

最後に、5つすべてのエントリポイント行を2行目にマージすると、5バイトの改行が節約されます。関数の機能を維持しながら、ランチリターン命令が最初にその行の最後に移動することを保証する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.