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 FGHI
trovano allo stesso livello dei ABCDE
risultati 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 ramgPyMro
dovrebbe 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
0
funzionerebbe. Se lo si desidera, è possibile srotolarsi a sinistra anziché a destra. Quindi ad es
MyP rog ram
diventa
Pg yo Mrram
e 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 )