किसी धनात्मक पूर्णांक के अंकों के मूल को उसके सभी अंकों के योग के रूप में परिभाषित किया जाता है। हमें पूर्णांकों की एक सरणी दी गई है। हमें इसे इस प्रकार क्रमबद्ध करना है कि यदि a, b से पहले आता है, यदि a का अंक मूल, b के अंकों के मूल से कम या बराबर है। यदि दो संख्याओं का अंक मूल समान है, तो छोटी संख्या (नियमित अर्थ में) पहले आना चाहिए। उदाहरण के लिए, 4 और 13 के अंकों का मूल समान है, हालांकि 4 <13 इस प्रकार 4 किसी भी डिजिट रूट छँटाई में 13 से पहले आता है जहाँ दोनों मौजूद हैं।
उदाहरण के लिए,
for a = [13, 20, 7, 4], the output should be [20, 4, 13, 7].
आइए इस समस्या के लिए कोड लिखें -
हम इसे दो कार्यों में विभाजित करेंगे, एक पुनरावर्ती फ़ंक्शन जो किसी संख्या के अंकों के योग की गणना करता है, और फिर एक सॉर्टिंग फ़ंक्शन जो अंकों के योग के आधार पर तत्व को क्रमित करता है।
इसके लिए कोड होगा -
उदाहरण
const arr = [54, 23, 8, 89, 26]; const recursiveCount = (num, count = 0) => { if(num){ return recursiveCount(Math.floor(num/10), count+num%10); }; return count; }; const sorter = (a, b) => { const countDifference = recursiveCount(a) - recursiveCount(b); return countDifference || a - b; }; arr.sort(sorter); console.log(arr);
आउटपुट
कंसोल में आउटपुट होगा -
[ 23, 8, 26, 54, 89 ]