Considera un blocco quadrato di testo, N caratteri larghi di N alto, per un numero intero dispari N maggiore di 1.
Ad esempio, lascia che N = 5 e il testo siano:
MLKJI
NWVUH
OXYTG
PQRSF
ABCDE
Si noti che questo è l'alfabeto (oltre a Z) ruotato a spirale in senso antiorario dall'angolo in basso a sinistra. È un po 'come un tappeto arrotolato.

"Srotolando" il testo di un quarto di giro in senso orario, si FGHItrovano allo stesso livello dei ABCDErisultati in:
PONM
QXWL
RYVK
STUJ
ABCDEFGHI
Questo srotolamento può essere effettuato altre 7 volte fino a quando il testo non è una riga singola:
SRQP
TYXO
UVWN
ABCDEFGHIJKLM
UTS
VYR
WXQ
ABCDEFGHIJKLMNOP
WVU
XYT
ABCDEFGHIJKLMNOPQRS
XW
YV
ABCDEFGHIJKLMNOPQRSTU
YX
ABCDEFGHIJKLMNOPQRSTUVW
Y
ABCDEFGHIJKLMNOPQRSTUVWX
ABCDEFGHIJKLMNOPQRSTUVWXY
Sfida
La sfida è quella di scrivere un programma che è un blocco di testo N × N che emette il numero di volte in cui si è "srotolato" di un quarto di giro quando viene riorganizzato nei modelli di srotolamento ed eseguito.
Ci sono davvero due contest qui: (speriamo che non sia troppo disordinato)
- Fallo con il N. più piccolo (fino a un limite di N = 3)
- Fallo con il più grande N. (nessun limite)
Non ci sarà una risposta accettata ma il vincitore in ciascuna di queste categorie riceverà da me almeno 50 rappresentanti di taglie. In caso di parità vince la risposta più vecchia.
Esempio
Se il tuo blocco di codice è
MyP
rog
ram
eseguendolo così com'è dovrebbe essere visualizzato 0.
In esecuzione
rM
oy
ramgP
dovrebbe produrre 1.
In esecuzione
or
ramgPyM
dovrebbe uscita 2.
In esecuzione
o
ramgPyMr
dovrebbe uscita 3.
Infine, l'esecuzione ramgPyMrodovrebbe generare 4.
Dettagli
- L'output deve essere stampato su stdout (o l'alternativa più vicina) da solo. Non ci sono input.
- Puoi usare solo ASCII stampabile (codici esadecimali da 20 a 7E, che include lo spazio) nel tuo codice.
- Gli spazi riempiono lo spazio vuoto nelle disposizioni di svolgimento. (A meno che non ti srotoli a sinistra.)
- Solo le disposizioni da completamente quadrate a completamente piatte devono avere un output valido. Non verranno eseguiti altri accordi.
- Non puoi leggere la tua fonte.
- Puoi usare commenti.
- N = 1 è escluso poiché in molte lingue il programma
0funzionerebbe. Se lo si desidera, è possibile srotolarsi a sinistra anziché a destra. Quindi ad es
MyP rog ramdiventa
Pg yo Mrrame così via. Non vengono aggiunti spazi extra quando si rotola in questo modo. Le linee sono appena finite
(Correlato: scrivere un programma rettangolare che emette il numero di volte in cui è stato ruotato )