हमें n एंट्री का एक एरे दिया गया है, जिसमें से केवल 2 नंबर हैं, बाकी सभी एंट्री null हैं। कुछ इस तरह -
const arr = [null, null, -1, null, null, null, -3, null, null, null];
हमें एक फ़ंक्शन लिखना है जो इस एरे को लेता है और उस अंकगणितीय श्रृंखला को पूरा करता है जिसके ये दो नंबर हिस्सा हैं। इस समस्या को और स्पष्ट रूप से समझने के लिए, हम इन null मानों को खाली स्थान के रूप में सोच सकते हैं जहां हमें नंबर भरने हैं ताकि पूरा एरे एक अंकगणितीय प्रगति बनाए।
अंकगणितीय प्रगति के बारे में
नंबरों की एक श्रृंखला/एरे को अंकगणितीय प्रगति कहा जाता है यदि एरे से कोई भी मनमाना संख्या n, (n-1)वीं संख्या में एक स्थिरांक d जोड़कर बनती है।
उदाहरण -
1, 2, 3, 4, 5, 6, 7, 8
यहां, प्रत्येक अगली संख्या पिछली संख्या में एक स्थिरांक (इस मामले में 1) जोड़कर प्राप्त की जाती है।
अन्य उदाहरण -
1, 1, 1, 1, 1, 1, 1, 1, 1 10, 8, 6, 4, 2, 0, -2
ऐसी श्रृंखला के पहले तत्व को पारंपरिक रूप से a से दर्शाया जाता है और प्रत्येक संख्या में स्थिर प्रगति, सामान्य अंतर, को d से दर्शाया जाता है।
इसलिए, यदि हम ऐसी किसी श्रृंखला के nवें तत्व को Tn से दर्शाते हैं, तो
Tn = a + (n -1)d
जहां, n उस संख्या का 1-आधारित इंडेक्स है।
इन बातों को स्पष्ट करने के बाद, आइए हमने जिस समस्या का वर्णन किया है उसके लिए कोड लिखते हैं। हम पहले एरे के लिए पहला तत्व (a) और सामान्य अंतर (d) खोजने की कोशिश करेंगे। एक बार ये मिल जाने पर, हम मूल एरे पर लूप चलाकर श्रृंखला उत्पन्न करेंगे।
उदाहरण
const arr = [null, null, -1, null, null, null, -3, null, null, null]; const arr2 = [null, null, -1, null, null, null, 12, null, null, null, null, null, null]; const constructSeries = (arr) => { const map = { first: undefined, last: undefined }; arr.forEach((el, ind) => { if(el !== null){ if(map['first']){ map['last'] = [el, ind]; }else{ map['first'] = [el, ind]; } }; }); const { first, last } = map; const commonDifference = (last[0] - first[0])/(last[1] - first[1]); const firstElement = (first[0]) - ((first[1])*commonDifference); return arr.map((item, index) => { return firstElement + (index * commonDifference); }); }; console.log(constructSeries(arr)); console.log(constructSeries(arr2));आउटपुट
कंसोल में आउटपुट होगा -
[ 0, -0.5, -1, -1.5, -2, -2.5, -3, -3.5, -4, -4.5 ] [ -7.5, -4.25, -1, 2.25, 5.5, 8.75, 12, 15.25, 18.5, 21.75, 25, 28.25, 31.5 ]