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 FGHIestén al mismo nivel que los ABCDEresultados
     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 ramgPyMrodeberí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 0funcionarí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ó )
fuente

Respuestas:
Golfscript, N <- [5,7 ..]
Completamente desenrollado:
Explicación:
.(varias veces) - duplica la entrada]- recoger la pila en una sola matriz,- tomar su longitud9\-- restarlo de 9#- comentario de líneaEl espacio en blanco es un NOP, pero cualquier otro NOP habría funcionado igual de bien.
Completamente enrollado, utiliza nueve copias de la entrada (contenido ignorado) como pila; 9 - 9 = 0; No se ha desenrollado.
Cada desenrollado oculta un punto más (duplicado) detrás del comentario, reduciendo la pila una vez e incrementando la salida.
Completamente desenrollado, usa solo la entrada (contenido ignorado) como la pila; 9 - 1 = 8; Se ha desenrollado 8 veces.
El mismo enfoque funciona para cualquier N> 4: cambie
9al valor apropiado de 2 * N + 1, luego extienda el patrón de puntos (duplicado) usando el mismo patrón en espiral que garantiza que se desenrolle exactamente un punto durante cada desenrollado.fuente
GolfScript, N = 4
Este derecho rueda como especificaciones originales.
Aquí están los desenrollamientos:
Pruébalo aquí
fuente
.s y#s?~. ¿Tal vez pueda robarlo por N = 3?APL, N = 3
Desenrollado:
Pruébalo en línea.
Calcula el resto de ese número dividido entre 5. Solo se imprime el resultado de la última línea.
APL, N = 2
Desenrollado:
Pruébalo en línea.
≡devuelve la profundidad (que no debe confundirse con la dimensión o la longitud) de una matriz:0No es una matriz. Entonces la profundidad es 0.0∞es una matriz con dos elementos0y∞(infinito). Tiene profundidad 1.0∞⍬tiene otro elemento⍬, que es una matriz vacía con profundidad 1. También0∞⍬tiene profundidad 2.Estos dos programas también funcionan en el intérprete en línea. No estoy seguro si el último es sintácticamente correcto.
APL, para cualquier N> = 4
Para N = 4:
Completamente desenrollado:
Para N = 5:
Completamente desenrollado:
1↓elimina un elemento en la matriz. También devuelve la matriz vacía si el argumento es escalar.⍴obtiene la longitud de la matriz.fuente
()[]ya que aparecerán en algún lugar no deseado.