对于一个大于1的奇数整数N,考虑一个正方形的文本块,N个字符,宽N个字符。
例如,让N = 5,文本为:
MLKJI
NWVUH
OXYTG
PQRSF
ABCDE
请注意,这是从左下角逆时针旋转的字母(Z以外)。有点像卷起的地毯。
将文本“展开”顺时针旋转四分之一圈,因此FGHI
与以下ABCDE
结果处于同一水平:
PONM
QXWL
RYVK
STUJ
ABCDEFGHI
展开操作可以再进行7次,直到文本变为一行:
SRQP
TYXO
UVWN
ABCDEFGHIJKLM
UTS
VYR
WXQ
ABCDEFGHIJKLMNOP
WVU
XYT
ABCDEFGHIJKLMNOPQRS
XW
YV
ABCDEFGHIJKLMNOPQRSTU
YX
ABCDEFGHIJKLMNOPQRSTUVW
Y
ABCDEFGHIJKLMNOPQRSTUVWX
ABCDEFGHIJKLMNOPQRSTUVWXY
挑战
面临的挑战是编写一个N×N文本块的程序,该程序在重新排列为展开模式并运行时输出其“展开”四分之一圈的次数。
这里确实有两个比赛:(希望不会太凌乱)
- 用最小的N进行此操作(下降到N = 3的限制)
- 用最大N来执行此操作(无限制)
不会有一个可接受的答案,但是这些类别中的每个类别的获胜者都会收到我的至少50笔赏金。如果是平局,则最早的答案将获胜。
例
如果您的代码块是
MyP
rog
ram
按原样运行它应输出0。
跑步
rM
oy
ramgP
应该输出1。
跑步
or
ramgPyM
应该输出2。
跑步
o
ramgPyMr
应该输出3。
最后,运行ramgPyMro
应该输出4。
细节
- 输出应自行打印到标准输出(或最接近的替代输出)。没有输入。
- 您只能在代码中使用可打印的ASCII(十六进制代码20至7E,包括空格)。
- 在展开布置中,空间填充了空白空间。(除非您向左展开。)
- 只有从完全正方形到完全平坦的布置才需要有效输出。没有其他安排。
- 您可能没有阅读自己的资源。
- 您可以使用注释。
- N = 1被排除在外,因为该程序
0
可以在许多语言中运行。 如果需要,您可以向左展开而不是向右展开。所以例如
MyP rog ram
变成
Pg yo Mrram
等等。以这种方式滚动时,不会添加额外的空格。线刚结束
(相关:编写一个矩形程序,输出该程序旋转的次数)