소개
2xn 부울 행렬은 4 개의 문자로 구성된 문자열로 표현 될 수 있습니다 . ':
. 문자열에는 "상단 행"과 "하단 행"이 있으며 점은 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를 증가시키고 정규 표현식을 줄이고 더 간단한 테스트를 수행하고 q에 prev c를 저장하십시오)