引言
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,减少正则表达式,并简化测试,将prev c保存在q中)