1より大きい奇数の整数Nに対して、テキストの正方形のブロック、幅N文字、高さNを考えます。
例として、N = 5とし、テキストを次のようにします。
MLKJI
NWVUH
OXYTG
PQRSF
ABCDE
これは、左下隅から反時計回りに螺旋状になったアルファベット(Zを除く)であることに注意してください。まるで丸いカーペットのようなものです。
テキストを時計回りに4分の1回転だけ「展開」FGHI
すると、次のABCDE
結果と同じレベルになります。
PONM
QXWL
RYVK
STUJ
ABCDEFGHI
この展開は、テキストが1行になるまでさらに7回実行できます。
SRQP
TYXO
UVWN
ABCDEFGHIJKLM
UTS
VYR
WXQ
ABCDEFGHIJKLMNOP
WVU
XYT
ABCDEFGHIJKLMNOPQRS
XW
YV
ABCDEFGHIJKLMNOPQRSTU
YX
ABCDEFGHIJKLMNOPQRSTUVW
Y
ABCDEFGHIJKLMNOPQRSTUVWX
ABCDEFGHIJKLMNOPQRSTUVWXY
チャレンジ
課題は、展開パターンに再配置して実行したときに、1/4回転で「展開」した回数を出力するテキストのN×Nブロックであるプログラムを作成することです。
ここには本当に2つのコンテストがあります:(うまくいけば乱雑になりません)
- 最小のNでこれを行います(N = 3の制限まで)
- 最大のNでこれを行います(制限なし)
受け入れられる回答はありませんが、これらの各カテゴリの勝者には、少なくとも50の報奨金が返されます。同点の場合、最も古い回答が勝ちます。
例
コードブロックが
MyP
rog
ram
そのまま実行すると、0が出力されます。
ランニング
rM
oy
ramgP
1を出力するはずです。
ランニング
or
ramgPyM
出力されるはずです2。
ランニング
o
ramgPyMr
出力3。
最後に、実行ramgPyMro
すると4が出力されるはずです。
詳細
- 出力は、それ自体でstdout(または最も近い代替)に出力する必要があります。入力はありません。
- コードでは、印刷可能なASCII(スペースを含む16進コード20〜7E)のみを使用できます。
- 展開配置の空きスペースはスペースで埋められます。(左に展開しない限り。)
- 有効な出力が必要なのは、完全に正方形から完全にフラットまでの配置だけです。他の手配は実行されません。
- 独自のソースを読むことはできません。
- コメントを使用できます。
- 多くの言語でプログラム
0
が機能するため、N = 1は除外されます。 必要に応じて、右ではなく左に展開できます。例えば
MyP rog ram
になる
Pg yo Mrram
等々。このようにローリングしても、余分なスペースは追加されません。行が終わりました