แนะนำ
2 × n . ':
เมทริกซ์บูลีนสามารถแสดงเป็นสตริงของสี่ตัวอักษร สตริงมี "แถวบน" และ "แถวล่าง" ที่มีจุดแทน 1s และช่องว่างว่างแทน 0s ตัวอย่างเช่นเมทริกซ์ 2x6
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, ทดสอบ regexp น้อยลงและง่ายขึ้น, บันทึก prev c เป็น q)