เครดิตให้กับ@ 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
เกณฑ์การให้คะแนน
+++++--
เป็นทางเลือก แต่ฉันลบ++-++++
เพราะมันเทียบเท่า++++-++
) ฉันยังมีอีกกรณีที่ฉันต้องการเพิ่มในภายหลังในกรณีที่ทุกคนคิดวิธีแก้ปัญหาที่มีประสิทธิภาพถ้าฉันจัดการสร้างมันขึ้นมา
++-++++
ลบ นี่คือการแก้ไขของฉันไม่ใช่ของคุณ
+++++--
(หรือเท่ากัน--+++++
) ซึ่งเป็นสาเหตุที่ฉันรู้สึกว่าต้องแก้ไขตั้งแต่แรก