Введения
Булева матрица 2 × n может быть представлена в виде строки из четырех символов . ':
. Строка имеет «верхний ряд» и «нижний ряд», где точки представляют 1 и пустые пробелы представляют 0. Например, матрица 2 × 6
1 0 1 0 0 1
0 0 0 1 0 1
может быть представлен как ' '. :
. Ваша задача - взять матрицу в этой «сжатой форме» и вращать ее элементы на один шаг по часовой стрелке, как конвейерная лента.
вход
Ваш ввод представляет собой одну строку над символами . ':
. Его длина гарантированно будет не менее 2.
Выход
Ваш вывод должен быть входной строкой, но с каждой точкой, повернутой на один шаг по часовой стрелке. Точнее говоря, точки в верхнем ряду больше на одно место справа, кроме самой правой, которая движется вниз. Точки в нижнем ряду перемещаются на один шаг влево, кроме самой левой, которая перемещается вверх. В частности, выходная строка должна иметь ту же длину, что и оригинал, и пробел является значительным.
пример
Рассмотрим входную строку :..:'.
, которая соответствует матрице 2 × 6
1 0 0 1 1 0
1 1 1 1 0 1
Повернутая версия этой матрицы
1 1 0 0 1 1
1 1 1 0 1 0
что соответствует строке ::. :'
.
Правила и оценки
Вы можете написать полную программу или функцию. Побеждает меньшее количество байтов, и стандартные лазейки запрещены. Вы можете решить, будут ли входные и выходные данные заключены в кавычки, и в обоих также допустим один завершающий символ новой строки.
Контрольные примеры
Эти контрольные примеры заключены в двойные кавычки.
" " -> " "
" ." -> ". "
". " -> "' "
"' " -> " '"
" '" -> " ."
": " -> "''"
"''" -> " :"
":." -> ":'"
":.'" -> ":'."
"..." -> ":. "
": :" -> "':."
"':." -> ".:'"
".:'" -> ": :"
" " -> " "
"::::" -> "::::"
":..:'." -> "::. :'"
" : .:'" -> ". '.. :"
": ''. :" -> "'' :'.."
"........" -> ":...... "
":::: " -> ":::'' "
" ::::" -> " ..:::"
" : : : : " -> ". : : : '"
".'.'.'.'.'" -> "'.'.'.'.'."
".. :: '.' :." -> ": ..'' .' :.'"
".' '.:: :.'. . ::.' '. . .::' :.'." -> "' ' .:.''..'.'. ..:' ' .'. ...'''..'.'"
s=>s.replace(/./g,(c,i)=>" '.:"[(i?q>' '&q!=".":c>"'")+(q=c,s[++i]?s[i]>"'":c>' '&c!=".")*2])
(переверните 2 части, чтобы я мог увеличить i, меньше регулярных выражений и более простой тест, сохраните предыдущий c в q)