เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ในสตริงเท่านั้นที่มีตัวอักษร^
และv
(คุณสามารถสมมติว่าจะไม่มีตัวละครอื่น ๆ ) อ่านจากซ้ายไปขวาสตริงนี้แสดงลำดับของการคลิกเมาส์ของผู้ใช้คนเดียวในขณะที่ดูคำถามหรือคำตอบของExchange Exchangeเป็นครั้งแรก
ทุกคน^
แสดงให้เห็นถึงการคลิกปุ่มupvoteและทุกคนv
แสดงให้เห็นถึงการคลิกปุ่มdownvote (สำหรับตัวอย่างการทำงานให้มองไปทางซ้ายเล็กน้อย)
สมมติว่าไม่มีข้อ จำกัด การลงคะแนนมีผลบังคับใช้ดังนั้นการคลิกทั้งหมดจะได้รับการลงทะเบียนอย่างถูกต้อง
พิมพ์หรือส่งคืน:
1
หรือ+1
ถ้าโพสต์ท้ายจะถูก upvoted0
หากโพสต์ท้ายไม่ได้รับการโหวต (-0
และ+0
ไม่ถูกต้อง)-1
หากโพสต์ท้ายถูก downvote
โพสต์เริ่มต้นด้วยศูนย์โหวตสุทธิจากผู้ใช้และปุ่มเปลี่ยนคะแนนโหวตสุทธิดังนี้:
Net Votes Before Button Pressed Net Votes After
1 ^ 0
1 v -1
0 ^ 1
0 v -1
-1 ^ 1
-1 v 0
รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
กรณีทดสอบ:
[empty string] -> 0
^^ -> 0
^v -> -1
^ -> 1
v -> -1
v^ -> 1
vv -> 0
^^^ -> 1
vvv -> -1
^^^^ -> 0
vvvv -> 0
^^^^^ -> 1
vvvvv -> -1
^^^^^^ -> 0
vvvvvv -> 0
^^v -> -1
^v^ -> 1
^vv -> 0
vv^ -> 1
v^v -> -1
v^^ -> 0
^vvv^^vv^vv^v^ -> 1
^vvv^^vv^vv^v^^ -> 0
^vvv^^vv^vv^v^^^ -> 1
^vvv^^vv^vv^v^^v -> -1
^vvv^^vv^vv^v^^vv -> 0
^vvv^^vv^vv^v^^vvv -> -1
^vvvvvvvvvvvv -> 0
^^vvvvvvvvvvvv -> 0
^^^vvvvvvvvvvvv -> 0
vvv^^^^^^^^^^^^ -> 0
vv^^^^^^^^^^^^ -> 0
v^^^^^^^^^^^^ -> 0
^
ตัวละครสามารถทำให้คะแนนเปลี่ยนเป็น -1, +1 หรือ +2 ได้หรือไม่ ฉันหนาแน่นที่ไหน เกิดอะไรขึ้น?