सुंदर व्यवस्था:
मान लीजिए हमारे पास 1 से num तक num पूर्णांक हैं। हम एक सुंदर व्यवस्था को एक सरणी के रूप में परिभाषित करते हैं जो इन num संख्याओं द्वारा सफलतापूर्वक निर्मित होती है यदि इस सरणी में ith स्थिति (1 ≤ i ≤ N) के लिए निम्न में से एक सत्य है:
ith स्थिति पर संख्या i से विभाज्य है।
i, ith स्थिति पर संख्या से विभाज्य है।
समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो एक संख्या num लेता है और num के लिए हम कितनी सुंदर व्यवस्थाएं बना सकते हैं, इसकी गिनती वापस करता है।
उदाहरण
यदि फ़ंक्शन का इनपुट है:
const input = 2
तो आउटपुट होना चाहिए:
const output = 2
आउटपुट व्याख्या
पहली सुंदर व्यवस्था है [1,2]:
दूसरी सुंदर व्यवस्था है [2,1]:
कोड
const num = 4; const countArrangements = (num = 1) => { let ans = 0 const recur = (curr, vis) => { if (curr === 1){ ans++; }else{ for (let i = num; i; i--) { let possible = (i % curr === 0 || curr % i === 0); let visited = vis & 1 << i; if (possible && !visited){ recur(curr-1, vis | 1 << i); } } } }; recur(num, 0); return ans; }; console.log(countArrangements(num));कोड व्याख्या:
हम एक परिणाम वेरिएबल (ans) परिभाषित करते हैं और फिर एक रीकर्सिव फ़ंक्शन बनाते हैं जो कई शाखा संभावनाओं को नेविगेट करता है। यह रीकर्सिव फ़ंक्शन केवल दो आर्ग्युमेंट्स की आवश्यकता होगी: हम वर्तमान में किस संख्या को रखना चाहते हैं (curr) और कौन से स्पॉट पहले ही विज़िट किए जा चुके हैं (vis)।
आउटपुट
कंसोल में आउटपुट होगा:
8