Considere un bloque de texto cuadrado, N caracteres de ancho por N de alto, para algún número entero impar N mayor que 1.
Como ejemplo, dejemos que N = 5 y el texto sea:
MLKJI
NWVUH
OXYTG
PQRSF
ABCDE
Observe que este es el alfabeto (además de Z) en espiral en sentido antihorario desde la esquina inferior izquierda. Es como una alfombra enrollada.
"Desenrollando" el texto un cuarto de vuelta en el sentido de las agujas del reloj para que FGHI
estén al mismo nivel que los ABCDE
resultados
PONM
QXWL
RYVK
STUJ
ABCDEFGHI
Este desenrollado se puede hacer 7 veces más hasta que el texto sea una sola línea:
SRQP
TYXO
UVWN
ABCDEFGHIJKLM
UTS
VYR
WXQ
ABCDEFGHIJKLMNOP
WVU
XYT
ABCDEFGHIJKLMNOPQRS
XW
YV
ABCDEFGHIJKLMNOPQRSTU
YX
ABCDEFGHIJKLMNOPQRSTUVW
Y
ABCDEFGHIJKLMNOPQRSTUVWX
ABCDEFGHIJKLMNOPQRSTUVWXY
Reto
El desafío es escribir un programa que sea un bloque de texto N × N que genere el número de veces que se ha "desenrollado" un cuarto de vuelta cuando se reorganiza en los patrones de desenrollado y se ejecuta.
Realmente hay dos concursos aquí: (con suerte no será demasiado complicado)
- Haga esto con el N. más pequeño (hasta un límite de N = 3)
- Haga esto con el N. más grande (sin límite)
No habrá una respuesta aceptada, pero el ganador en cada una de estas categorías recibirá al menos 50 representantes de recompensas de mi parte. En caso de empate, las respuestas más antiguas ganan.
Ejemplo
Si su bloque de código es
MyP
rog
ram
ejecutarlo como está debería generar 0.
Corriendo
rM
oy
ramgP
debería dar salida 1.
Corriendo
or
ramgPyM
debería dar salida 2.
Corriendo
o
ramgPyMr
debería dar salida 3.
Finalmente, la ejecución ramgPyMro
debería generar 4.
Detalles
- El resultado debe imprimirse en stdout (o la alternativa más cercana) por sí mismo. No hay entrada
- Solo puede usar ASCII imprimible (códigos hexadecimales 20 a 7E, que incluye espacio) en su código.
- Los espacios llenan el espacio vacío en los arreglos de desenrollado. (A menos que te estés desenrollando a la izquierda).
- Solo los arreglos de completamente cuadrado a completamente plano deben tener una salida válida. No se ejecutarán otros arreglos.
- No puede leer su propia fuente.
- Puedes usar comentarios.
- N = 1 está excluido ya que en muchos idiomas el programa
0
funcionaría. Si lo desea, puede desenrollar a la izquierda en lugar de a la derecha. Entonces eg
MyP rog ram
se convierte
Pg yo Mrram
y así. No se agregan espacios adicionales al rodar de esta manera. Las lineas acaban de terminar
(Relacionado: escriba un programa rectangular que genere la cantidad de veces que se giró )