Przedstawienia
Matryca logiczna 2 × n może być reprezentowana jako ciąg czterech znaków . ':
. Ciąg ma „górny rząd” i „dolny rząd”, z kropkami reprezentującymi 1s i pustymi spacjami reprezentującymi 0s. Na przykład macierz 2 × 6
1 0 1 0 0 1
0 0 0 1 0 1
może być reprezentowany jako ' '. :
. Twoim zadaniem jest pobranie matrycy w tej „skompresowanej formie” i obrócenie jej wpisów o jeden krok zgodnie z ruchem wskazówek zegara, jak taśma przenośnika.
Wejście
Twój tekst jest pojedynczym ciągiem znaków . ':
. Jego długość wynosi co najmniej 2.
Wynik
Twój wynik będzie ciągiem wejściowym, ale z każdą kropką obróconą o jeden krok w kierunku zgodnym z ruchem wskazówek zegara. Mówiąc dokładniej, kropki w górnym rzędzie znajdują się o jedno miejsce po prawej stronie, z wyjątkiem skrajnie prawej, która przesuwa się w dół. Kropki w dolnym rzędzie przesuwają się o jeden krok w lewo, z wyjątkiem skrajnego lewego, który przesuwa się w górę. W szczególności ciąg wyjściowy musi mieć tę samą długość co oryginał, a spacje są znaczące.
Przykład
Rozważ ciąg wejściowy :..:'.
, który odpowiada macierzy 2 × 6
1 0 0 1 1 0
1 1 1 1 0 1
Obrócona wersja tej matrycy to
1 1 0 0 1 1
1 1 1 0 1 0
co odpowiada ciągowi ::. :'
.
Zasady i punktacja
Możesz napisać pełny program lub funkcję. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone. Możesz zdecydować, czy dane wejściowe i wyjściowe są ujęte w cudzysłowy, a jeden końcowy znak nowej linii jest również dopuszczalny w obu.
Przypadki testowe
Te przypadki testowe są ujęte w podwójne cudzysłowy.
" " -> " "
" ." -> ". "
". " -> "' "
"' " -> " '"
" '" -> " ."
": " -> "''"
"''" -> " :"
":." -> ":'"
":.'" -> ":'."
"..." -> ":. "
": :" -> "':."
"':." -> ".:'"
".:'" -> ": :"
" " -> " "
"::::" -> "::::"
":..:'." -> "::. :'"
" : .:'" -> ". '.. :"
": ''. :" -> "'' :'.."
"........" -> ":...... "
":::: " -> ":::'' "
" ::::" -> " ..:::"
" : : : : " -> ". : : : '"
".'.'.'.'.'" -> "'.'.'.'.'."
".. :: '.' :." -> ": ..'' .' :.'"
".' '.:: :.'. . ::.' '. . .::' :.'." -> "' ' .:.''..'.'. ..:' ' .'. ...'''..'.'"
s=>s.replace(/./g,(c,i)=>" '.:"[(i?q>' '&q!=".":c>"'")+(q=c,s[++i]?s[i]>"'":c>' '&c!=".")*2])
(odwróć 2 części, abym mógł zwiększyć i, mniej wyrażeń regularnych i prostszy test, zapisz poprzednie cw q)