इस सवाल के साथ आने के लिए @ Agawa001 को श्रेय ।
व्याख्या
मेरे नए "कीबोर" में केवल 2 बटन हैं, अर्थात् +और -।
मेमोरी में नंबर शुरू होता है 0।
प्रत्येक लगातार दबाने +या -मेमोरी को बढ़ाने या घटाने के लिए स्मृति कितनी बार इसे लगातार दबाया गया है।
इसलिए, यदि आप +4 बार दबाते हैं, तो पहली बार यह 1 जोड़ता है, दूसरी बार यह 2 जोड़ता है, तीसरी बार यह 3 जोड़ता है, चौथी बार यह 4 जोड़ता है, आपको 10(दस) देता है।
अब, यदि आप -3 बार दबाते हैं , तो पहली बार यह 1 घटाता है, दूसरी बार 2, तीसरी बार 3, आपको 4(चार) छोड़कर ।
टी एल; डॉ
+ और - की एक स्ट्रिंग को देखते हुए, इसे चरित्र के प्रत्येक परिवर्तन पर विभाजित करें। तब एम +प्रतीकों के प्रत्येक परिणामी स्ट्रिंग को एम-वें त्रिकोण संख्या कहते हैं, और एन -प्रतीकों के प्रत्येक स्ट्रिंग एन-वें त्रिकोण संख्या को घटाते हैं।
वाल्क-के माध्यम से
अब, यदि आप अभी भी नहीं समझे हैं, तो मैं आपको दिखाऊंगा कि कैसे +++--+--निर्माण होता है 1।
Program | Counter | Memory
----------------------------
| 0 | 0
+ | +1 | 1
++ | +2 | 3
+++ | +3 | 6
+++- | -1 | 5
+++-- | -2 | 3
+++--+ | +1 | 4
+++--+- | -1 | 3
+++--+-- | -2 | 1
कार्य
- आप इनपुट के रूप में एक सकारात्मक पूर्णांक लेंगे, या तो कार्यात्मक तर्क के रूप में या एसटीडीआईएन से।
- फिर, आप उपरोक्त विधि का उपयोग करके उस संख्या को बनाने के लिए आवश्यक कीस्ट्रोक्स की न्यूनतम संख्या को आउटपुट / प्रिंट करेंगे।
परीक्षण के मामलों
चूंकि पुनर्संरचना +या -रन एक ही नंबर देता है, ऐसे प्रत्येक समूह के लिए केवल लेक्सिकोग्राफिक रूप से प्रारंभिक अनुक्रम सूचीबद्ध है।
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 नंबर का हल ।
- ऑब्जर्बेटरी जेएसफिल्ड ।
स्कोरिंग
यह कोड-गोल्फ है । बाइट्स जीत में सबसे कम समाधान।
+++++--यह भी एक विकल्प है, लेकिन मैंने ++-++++तब से हटा दिया है जब से यह बराबर है ++++-++)। मुझे अभी भी एक और मामला मिला है, मैं बाद में जोड़ना चाहूंगा यदि कोई व्यक्ति एक कुशल समाधान के साथ आता है, अगर मैं इसे उत्पन्न करता हूं।
++-++++हटाया नहीं चाहता था। इसके अलावा, यह मेरा संपादन था, आपका नहीं।
+++++--(या, समतुल्य रूप से --+++++), यही कारण है कि मुझे पहली जगह में संपादित करने की आवश्यकता महसूस हुई।