Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Javascript

जावास्क्रिप्ट में कुशलतापूर्वक जोसेफस क्रमपरिवर्तन की गणना करना


घेराबंदी।

दुश्मन के सामने आत्मसमर्पण करने से इनकार करते हुए, उन्होंने इसके बजाय सामूहिक आत्महत्या का विकल्प चुना, एक मोड़ के साथ - उन्होंने एक घेरा बनाया और हर तीन में एक आदमी को मारने के लिए आगे बढ़े, जब तक कि एक आखिरी आदमी नहीं बचा (और यह कि इस अधिनियम को समाप्त करने के लिए खुद को मारना चाहिए था) )।

जोसेफस और एक अन्य व्यक्ति अंतिम दो थे और, जैसा कि अब हम कहानी के हर विवरण को जानते हैं, आपने सही अनुमान लगाया होगा कि उन्होंने मूल विचार का बिल्कुल पालन नहीं किया था।

हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो जोसीफस क्रमपरिवर्तन लौटाता है।

पैरामीटर के रूप में वस्तुओं की प्रारंभिक सरणी/सूची को क्रमबद्ध करने के लिए जैसे कि वे एक सर्कल में थे और प्रत्येक के स्थानों को तब तक गिना जाता है जब तक कोई भी नहीं रहता।

उदाहरण के लिए, n=7 और k=3 जोसफस (7,3) के साथ इस तरह से कार्य करना चाहिए।

[1,2,3,4,5,6,7] − initial sequence
[1,2,4,5,6,7] => 3 is counted out and goes into the result [3]
[1,2,4,5,7] => 6 is counted out and goes into the result [3,6]
[1,4,5,7] => 2 is counted out and goes into the result [3,6,2]
[1,4,5] => 7 is counted out and goes into the result [3,6,2,7]
[1,4] => 5 is counted out and goes into the result [3,6,2,7,5]
[4] => 1 is counted out and goes into the result [3,6,2,7,5,1]
[] => 4 is counted out and goes into the result [3,6,2,7,5,1,4]

इसलिए, हमारा अंतिम परिणाम है -

josephus([1,2,3,4,5,6,7],3)==[3,6,2,7,5,1,4];

उदाहरण

इसके लिए कोड होगा -

const arr = [1, 2, 3, 4, 5, 6, 7];
const num = 3;
const helper = (n, k, i, map) => {
   if (map.hasOwnProperty([n, k, i]))
   return map[[n, k, i]];
   if (i === 1)
   return map[[n, k, i]] = (k − 1) % n;
   return map[[n, k, i]] =
   (k + helper(n − 1, k, i − 1, map)) % n;
}
const josephus = (arr, k) => {
   let n = arr.length;
   let result = new Array(n);
   let map = {};
   for (let i=1; i<=n; i++)
   result[i − 1] = arr[ helper(n, k, i, map) ];
   return result;
};
console.log(josephus(arr, num));

आउटपुट

और कंसोल में आउटपुट होगा -

[
   3, 6, 2, 7,
   5, 1, 4
]

  1. जावास्क्रिप्ट एवीएल ट्री में बैलेंस फैक्टर की गणना करना

    AVL ट्री बाएँ और दाएँ उप-वृक्षों की ऊँचाई की जाँच करता है और आश्वासन देता है कि अंतर 1 से अधिक नहीं है। इस अंतर को बैलेंस फैक्टर कहा जाता है। उदाहरण के लिए, निम्नलिखित पेड़ों में पहला पेड़ संतुलित है और अगले दो पेड़ संतुलित नहीं हैं - दूसरे पेड़ में, सी के बाएं उपट्री की ऊंचाई 2 है और दाएं उपट्

  1. जावास्क्रिप्ट में किसी सरणी के माध्यिका की गणना करना

    जावास्क्रिप्ट में किसी सरणी के माध्यिका की गणना के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title&

  1. जावास्क्रिप्ट में एक सरणी के औसत की गणना करना

    जावास्क्रिप्ट में एक सरणी के औसत की गणना के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Docu