निम्नलिखित स्थिति मान लीजिए:
प्रारंभ में एक नोटपैड पर केवल एक वर्ण 'A' मौजूद है। हम प्रत्येक चरण के लिए इस नोटपैड पर दो ऑपरेशन कर सकते हैं:
- कॉपी ऑल - हम नोटपैड पर मौजूद सभी वर्णों को कॉपी कर सकते हैं (आंशिक कॉपी अनुमति नहीं है)।
- पेस्ट - हम उन वर्णों को पेस्ट कर सकते हैं जो पिछली बार कॉपी किए गए थे।
हमें एक JavaScript फ़ंक्शन लिखना है जो एक संख्या लेता है, आइए इसे num कहते हैं एकमात्र आर्गुमेंट के रूप में। हमारे फ़ंक्शन को न्यूनतम चरणों (कॉपी ऑल या पेस्ट) की संख्या की गणना करके लौटानी चाहिए जो 'A' को num बार प्रिंट करने के लिए आवश्यक हैं।
उदाहरण
यदि इनपुट संख्या है:
const num = 3;
तो आउटपुट होना चाहिए:
const output = 3;
क्योंकि, चरण हैं:
- कॉपी ऑल (परिणाम: 'A')
- पेस्ट ऑल (परिणाम: 'AA')
- पेस्ट ऑल (परिणाम: 'AAA')
उदाहरण
const num = 3;
const minimumSteps = (num = 1) => {
let [curr, copy, steps] = [1, 0, 0];
while(curr != num){
if((copy < curr) && ((num - curr) % curr) == 0) {
copy = curr;
}else{
curr += copy;
};
steps += 1;
};
return steps;
};
console.log(minimumSteps(num));
आउटपुट
3