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- 等々。このようにローリングしても、余分なスペースは追加されません。行が終わりました