समस्या
गणित में, लुक-एंड-से अनुक्रम पूर्णांकों का अनुक्रम है जो इस प्रकार शुरू होता है:
1, 11, 21, 1211, 111221, 312211, …
अनुक्रम के एक सदस्य को पिछले सदस्य से उत्पन्न करने के लिए, हम पिछले सदस्य के अंकों को पढ़ते हैं, समान अंक के समूहों में अंकों की संख्या गिनते हैं।
उदाहरण के लिए, 1211 के बाद की संख्या है:
111221
क्योंकि यदि हम 1211 के अंक को जोर से पढ़ें तो यह होगा:
एक एक, एक दो, दो एक जो हमें 111221 देता है
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो एक संख्या n लेता है और लुक-एंड-से अनुक्रम के पहले n पद लौटाता है।
उदाहरण
निम्न कोड देखें:
const num = 12; const generateSequence = (num = 1) => { const lookAndSay = (val) => { let res = ''; let chars = (val + ' ').split(''); let last = chars[0]; let count = 0; chars.forEach(c => { if(c === last){ count++; }else{ res += (count + '') + last; last = c; count = 1; }; }); return res; } let start = 1; const res = []; for(let i = 0; i < num; i++){ res.push(String(start)); start = lookAndSay(start); }; return res; }; console.log(generateSequence(num));आउटपुट
निम्न कंसोल आउटपुट है:
[ '1', '11', '21', '1211', '111221', '312211', '13112221', '1113213211', '31131211131221', '13211311123113112211', '11131221133112132113212221', '3113112221232112111312211312113211' ]