Perkenalan
Matriks Boolean 2 × n dapat direpresentasikan sebagai string dari empat karakter . ':
. String memiliki "baris atas" dan "baris bawah", dengan titik-titik mewakili 1s dan spasi kosong mewakili 0s. Misalnya, matriks 2 × 6
1 0 1 0 0 1
0 0 0 1 0 1
dapat direpresentasikan sebagai ' '. :
. Tugas Anda adalah mengambil matriks dalam "bentuk terkompresi" ini, dan memutar isinya satu langkah searah jarum jam, seperti sabuk konveyor.
Memasukkan
Input Anda adalah string tunggal di atas karakter . ':
. Panjangnya dijamin minimal 2.
Keluaran
Output Anda akan menjadi string input, tetapi dengan setiap titik diputar satu langkah ke arah searah jarum jam. Lebih eksplisit, titik-titik di baris atas lebih banyak tempat ke kanan, kecuali yang paling kanan, yang bergerak ke bawah. Titik-titik pada baris bawah bergerak satu langkah ke kiri, kecuali yang paling kiri, yang bergerak ke atas. Secara khusus, string output harus memiliki panjang yang sama dengan aslinya, dan spasi putih signifikan.
Contoh
Pertimbangkan string input :..:'.
, yang sesuai dengan matriks 2 × 6
1 0 0 1 1 0
1 1 1 1 0 1
Versi rotasi dari matriks ini adalah
1 1 0 0 1 1
1 1 1 0 1 0
yang sesuai dengan string ::. :'
.
Aturan dan penilaian
Anda dapat menulis program atau fungsi lengkap. Hitungan byte terendah menang, dan celah standar tidak diizinkan. Anda dapat memutuskan apakah input dan output dilampirkan dalam tanda kutip, dan satu baris tambahan juga dapat diterima di keduanya.
Uji kasus
Kasing uji ini dilampirkan dalam tanda kutip ganda.
" " -> " "
" ." -> ". "
". " -> "' "
"' " -> " '"
" '" -> " ."
": " -> "''"
"''" -> " :"
":." -> ":'"
":.'" -> ":'."
"..." -> ":. "
": :" -> "':."
"':." -> ".:'"
".:'" -> ": :"
" " -> " "
"::::" -> "::::"
":..:'." -> "::. :'"
" : .:'" -> ". '.. :"
": ''. :" -> "'' :'.."
"........" -> ":...... "
":::: " -> ":::'' "
" ::::" -> " ..:::"
" : : : : " -> ". : : : '"
".'.'.'.'.'" -> "'.'.'.'.'."
".. :: '.' :." -> ": ..'' .' :.'"
".' '.:: :.'. . ::.' '. . .::' :.'." -> "' ' .:.''..'.'. ..:' ' .'. ...'''..'.'"
s=>s.replace(/./g,(c,i)=>" '.:"[(i?q>' '&q!=".":c>"'")+(q=c,s[++i]?s[i]>"'":c>' '&c!=".")*2])
(balik 2 bagian sehingga saya dapat meningkatkan i, lebih sedikit regexp dan tes yang lebih sederhana, simpan prev c in q)