Introduzioni
Una matrice booleana 2 × n può essere rappresentata come una stringa di quattro caratteri . ':
. La stringa ha una "riga superiore" e una "riga inferiore", con punti che rappresentano 1 e spazi vuoti che rappresentano 0. Ad esempio, la matrice 2 × 6
1 0 1 0 0 1
0 0 0 1 0 1
può essere rappresentato come ' '. :
. Il tuo compito è prendere una matrice in questa "forma compressa" e ruotare le sue entrate di un passo in senso orario, come un nastro trasportatore.
Ingresso
Il tuo input è una singola stringa sopra i caratteri . ':
. La sua lunghezza è garantita per essere almeno 2.
Produzione
L'output deve essere la stringa di input, ma con ogni punto ruotato di un passo in senso orario. Più esplicitamente, i punti sulla riga superiore più un posto a destra, tranne quello più a destra, che si sposta verso il basso. I punti sulla riga inferiore si spostano di un passo verso sinistra, tranne quello più a sinistra, che si sposta verso l'alto. In particolare, la stringa di output deve avere la stessa lunghezza dell'originale e gli spazi bianchi sono significativi.
Esempio
Considera la stringa di input :..:'.
, che corrisponde alla matrice 2 × 6
1 0 0 1 1 0
1 1 1 1 0 1
La versione ruotata di questa matrice è
1 1 0 0 1 1
1 1 1 0 1 0
che corrisponde alla stringa ::. :'
.
Regole e punteggio
È possibile scrivere un programma completo o una funzione. Vince il conteggio di byte più basso e non sono consentite scappatoie standard. Puoi decidere se l'input e l'output sono racchiusi tra virgolette e in entrambi è accettabile anche una riga finale.
Casi test
Questi casi di test sono racchiusi tra virgolette doppie.
" " -> " "
" ." -> ". "
". " -> "' "
"' " -> " '"
" '" -> " ."
": " -> "''"
"''" -> " :"
":." -> ":'"
":.'" -> ":'."
"..." -> ":. "
": :" -> "':."
"':." -> ".:'"
".:'" -> ": :"
" " -> " "
"::::" -> "::::"
":..:'." -> "::. :'"
" : .:'" -> ". '.. :"
": ''. :" -> "'' :'.."
"........" -> ":...... "
":::: " -> ":::'' "
" ::::" -> " ..:::"
" : : : : " -> ". : : : '"
".'.'.'.'.'" -> "'.'.'.'.'."
".. :: '.' :." -> ": ..'' .' :.'"
".' '.:: :.'. . ::.' '. . .::' :.'." -> "' ' .:.''..'.'. ..:' ' .'. ...'''..'.'"
s=>s.replace(/./g,(c,i)=>" '.:"[(i?q>' '&q!=".":c>"'")+(q=c,s[++i]?s[i]>"'":c>' '&c!=".")*2])
(capovolgere 2 parti in modo da poter aumentare i, meno regexp e test più semplice, salvare precedente in q)