Introductions
Une matrice booléenne 2 × n peut être représentée par une chaîne de quatre caractères . ':
. La chaîne a une "rangée supérieure" et une "rangée inférieure", avec des points représentant les 1 et des espaces vides représentant les 0. Par exemple, la matrice 2 × 6
1 0 1 0 0 1
0 0 0 1 0 1
peut être représenté comme ' '. :
. Votre tâche consiste à prendre une matrice sous cette "forme comprimée" et à faire pivoter ses entrées d'un pas dans le sens des aiguilles d'une montre, à la manière d'un tapis roulant.
Contribution
Votre entrée est une chaîne unique sur les caractères . ':
. Sa longueur est garantie d'être d'au moins 2.
Sortie
Votre sortie doit être la chaîne d'entrée, mais avec chaque point tourné d'un pas dans le sens des aiguilles d'une montre. Plus explicitement, les points de la rangée supérieure se trouvent à un endroit à droite, sauf le plus à droite, qui se déplace vers le bas. Les points de la rangée inférieure se déplacent d'un pas vers la gauche, sauf le plus à gauche qui monte. En particulier, la chaîne de sortie doit avoir la même longueur que l'original et les espaces sont significatifs.
Exemple
Considérons la chaîne d'entrée :..:'.
, qui correspond à la matrice 2 × 6
1 0 0 1 1 0
1 1 1 1 0 1
La version tournée de cette matrice est
1 1 0 0 1 1
1 1 1 0 1 0
qui correspond à la chaîne ::. :'
.
Règles et notation
Vous pouvez écrire un programme complet ou une fonction. Le nombre d'octets le plus faible gagne et les failles standard sont interdites. Vous pouvez décider si l’entrée et la sortie sont entre guillemets, et une nouvelle ligne est également acceptable dans les deux cas.
Cas de test
Ces cas de test sont entre guillemets.
" " -> " "
" ." -> ". "
". " -> "' "
"' " -> " '"
" '" -> " ."
": " -> "''"
"''" -> " :"
":." -> ":'"
":.'" -> ":'."
"..." -> ":. "
": :" -> "':."
"':." -> ".:'"
".:'" -> ": :"
" " -> " "
"::::" -> "::::"
":..:'." -> "::. :'"
" : .:'" -> ". '.. :"
": ''. :" -> "'' :'.."
"........" -> ":...... "
":::: " -> ":::'' "
" ::::" -> " ..:::"
" : : : : " -> ". : : : '"
".'.'.'.'.'" -> "'.'.'.'.'."
".. :: '.' :." -> ": ..'' .' :.'"
".' '.:: :.'. . ::.' '. . .::' :.'." -> "' ' .:.''..'.'. ..:' ' .'. ...'''..'.'"
s=>s.replace(/./g,(c,i)=>" '.:"[(i?q>' '&q!=".":c>"'")+(q=c,s[++i]?s[i]>"'":c>' '&c!=".")*2])
(retourner 2 parties afin que je puisse augmenter je, moins regexp et plus simple test, enregistrer prev c dans q)