Einführungen
Eine 2 × n-Boolesche Matrix kann als Zeichenfolge der vier Zeichen dargestellt werden . ':
. Die Zeichenfolge hat eine "obere Reihe" und eine "untere Reihe", wobei Punkte Einsen und Leerzeichen Nullen darstellen. Zum Beispiel die 2 × 6-Matrix
1 0 1 0 0 1
0 0 0 1 0 1
kann dargestellt werden als ' '. :
. Ihre Aufgabe ist es, eine Matrix in dieser "komprimierten Form" zu nehmen und ihre Einträge wie ein Förderband einen Schritt im Uhrzeigersinn zu drehen.
Eingang
Ihre Eingabe ist eine einzelne Zeichenfolge über den Zeichen . ':
. Ihre Länge beträgt garantiert mindestens 2.
Ausgabe
Ihre Ausgabe soll die Eingabezeichenfolge sein, wobei jedoch jeder Punkt um einen Schritt im Uhrzeigersinn gedreht wird. Genauer gesagt befinden sich die Punkte in der oberen Reihe weiter rechts, mit Ausnahme des am weitesten rechts stehenden Punkts, der sich nach unten bewegt. Die Punkte in der unteren Reihe bewegen sich einen Schritt nach links, mit Ausnahme des am weitesten links stehenden Punkts, der nach oben bewegt wird. Insbesondere muss die Ausgabezeichenfolge dieselbe Länge wie das Original haben, und Leerzeichen sind von Bedeutung.
Beispiel
Betrachten Sie die Eingabezeichenfolge :..:'.
, die der 2 × 6-Matrix entspricht
1 0 0 1 1 0
1 1 1 1 0 1
Die gedrehte Version dieser Matrix ist
1 1 0 0 1 1
1 1 1 0 1 0
das entspricht der Zeichenfolge ::. :'
.
Regeln und Wertung
Sie können ein vollständiges Programm oder eine Funktion schreiben. Die niedrigste Byteanzahl gewinnt, und Standardlücken sind nicht zulässig. Sie können entscheiden, ob die Eingabe und Ausgabe in Anführungszeichen gesetzt werden soll, und in beiden Fällen ist auch eine nachgestellte Zeile zulässig.
Testfälle
Diese Testfälle sind in doppelte Anführungszeichen eingeschlossen.
" " -> " "
" ." -> ". "
". " -> "' "
"' " -> " '"
" '" -> " ."
": " -> "''"
"''" -> " :"
":." -> ":'"
":.'" -> ":'."
"..." -> ":. "
": :" -> "':."
"':." -> ".:'"
".:'" -> ": :"
" " -> " "
"::::" -> "::::"
":..:'." -> "::. :'"
" : .:'" -> ". '.. :"
": ''. :" -> "'' :'.."
"........" -> ":...... "
":::: " -> ":::'' "
" ::::" -> " ..:::"
" : : : : " -> ". : : : '"
".'.'.'.'.'" -> "'.'.'.'.'."
".. :: '.' :." -> ": ..'' .' :.'"
".' '.:: :.'. . ::.' '. . .::' :.'." -> "' ' .:.''..'.'. ..:' ' .'. ...'''..'.'"
s=>s.replace(/./g,(c,i)=>" '.:"[(i?q>' '&q!=".":c>"'")+(q=c,s[++i]?s[i]>"'":c>' '&c!=".")*2])
(Flip 2 Teile, damit ich erhöhen kann, weniger Regexp und einfacher Test, speichern Sie prev c in q)