CJam、31 27バイト
CJamはこのチャレンジよりもはるかに新しいため、この回答は受け入れられません。しかし、これはきちんとした土曜日の夕方の挑戦でした。;)
8S*9,:)+9*9/2%{_W%1>+z}2*N*
ここでテストしてください。
アイデアは、最初に左上の象限を形成することです。仕組みは次のとおりです。
まず、" 123456789"
を使用して文字列を形成します8S*9,:)+
。この文字列の長さは17文字です。ここで、文字列を9回繰り返してから、で長さ9の部分文字列に分割し9/
ます。9と17の間の不一致は、1文字おきに1文字左にオフセットします。各部分文字列を独自の行に印刷すると、次のようになります。
1
23456789
12
3456789
123
456789
1234
56789
12345
6789
123456
789
1234567
89
12345678
9
123456789
したがって、1行おきにドロップするだけで(これはを実行すると便利になります2%
)、必要に応じて1つの象限を取得します。
1
12
123
1234
12345
123456
1234567
12345678
123456789
最後に、これを2回ミラーリングし、2つのミラーリング操作が異なる軸に沿って進むようにグリッドを入れ替えます。ミラーリング自体は
_ "Duplicate all rows.";
W% "Reverse their order.";
1> "Discard the first row (the centre row).";
+ "Add the other rows.";
最後に、すべての行を改行で結合しN*
ます。