เครดิตให้กับ@ Agawa001สำหรับการถามคำถามนี้
คำอธิบาย
ใหม่ของฉัน "keybore" มีเพียง 2 ปุ่มคือและ+-
0ตัวเลขที่อยู่ในหน่วยความจำเริ่มต้นที่
ติดต่อกันแต่ละกด+หรือ-จะเพิ่มขึ้น / ลดลงหน่วยความจำสำหรับว่ากี่ครั้งก็ถูกกดอย่างต่อเนื่อง
ดังนั้นหากคุณกด+4 ครั้งครั้งแรกที่มันเพิ่ม 1 ครั้งที่สองจะเพิ่ม 2 ครั้งที่สามเพิ่ม 3 ครั้งที่สี่เพิ่ม 4 ให้คุณ10(สิบ)
ทีนี้ถ้าคุณกด-3 ครั้งครั้งแรกที่มันลบ 1 ครั้งที่สอง 2 ครั้งที่สามครั้งที่ 3 ปล่อยคุณด้วย4(สี่)
TL; DR
รับสตริง + และ - ให้แบ่งแต่ละการเปลี่ยนแปลงของตัวละคร จากนั้นแต่ละสตริงผลลัพธ์ของ+สัญลักษณ์m จะเพิ่มหมายเลขสามเหลี่ยม m-th และแต่ละสตริงของ-สัญลักษณ์n จะลบหมายเลขสามเหลี่ยม n-th
เดินผ่าน
ตอนนี้ถ้าคุณยังไม่เข้าใจผมจะแสดงวิธีการสร้าง+++--+--1
Program   | Counter | Memory
----------------------------
          |  0      | 0
+         | +1      | 1
++        | +2      | 3
+++       | +3      | 6
+++-      | -1      | 5
+++--     | -2      | 3
+++--+    | +1      | 4
+++--+-   | -1      | 3
+++--+--  | -2      | 1
งาน
- คุณจะใช้จำนวนเต็มบวกเป็นอินพุตไม่ว่าจะเป็นอาร์กิวเมนต์การทำงานหรือจาก STDIN
 - จากนั้นคุณจะส่งออก / พิมพ์จำนวนขั้นต่ำของการกดแป้นที่จำเป็นในการสร้างหมายเลขนั้นโดยใช้วิธีการด้านบน
 
Testcases
เนื่องจากการจัดเรียง+หรือการ-รันใหม่ให้หมายเลขเท่ากันสำหรับแต่ละกลุ่มดังกล่าวจะมีการแสดงรายการลำดับต้นสุดของพจนานุกรมเท่านั้น
Input | Output | Possible corresponding sequences
-------------------------------------------------
    4 |      5 | -+++-
    6 |      3 | +++
    9 |      5 | ++++-
   11 |      7 | +++-+++
   12 |      7 | +++++--, ++++-++
   19 |      8 | -++++++-
   39 |     12 | +++++++++---
   40 |     13 | +++++++++---+, ++++++++-+++-
   45 |      9 | +++++++++
   97 |     20 | ++++++++++++++--+---, +++++++++++++-++++--, ++++++++++++-++++++-
  361 |     34 | ++++++++++++++++++++++++++-+++-+++
ทรัพยากรเพิ่มเติม
- พิสูจน์ได้ว่าสามารถใช้หมายเลขใด ๆ : โดยพื้นฐาน
++-แล้วคุณสามารถรับหมายเลขซ้ำได้ เพื่อให้ได้ตัวเลขคี่เพียงแค่ใส่+ท้าย - อีกวิธีทั่วไปในการรับหมายเลขใด ๆ ตัวอย่างเช่นในการสร้าง
50วิธีหนึ่งคือการกด+50 ครั้งแล้วกด-49 ครั้ง - คำตอบของ 50 หมายเลขแรก
 - บังคับ JSFiddle
 
เกณฑ์การให้คะแนน
+++++--เป็นทางเลือก แต่ฉันลบ++-++++เพราะมันเทียบเท่า++++-++) ฉันยังมีอีกกรณีที่ฉันต้องการเพิ่มในภายหลังในกรณีที่ทุกคนคิดวิธีแก้ปัญหาที่มีประสิทธิภาพถ้าฉันจัดการสร้างมันขึ้นมา
                ++-++++ลบ นี่คือการแก้ไขของฉันไม่ใช่ของคุณ
                +++++--(หรือเท่ากัน--+++++) ซึ่งเป็นสาเหตุที่ฉันรู้สึกว่าต้องแก้ไขตั้งแต่แรก