घेराबंदी।
दुश्मन के सामने आत्मसमर्पण करने से इनकार करते हुए, उन्होंने इसके बजाय सामूहिक आत्महत्या का विकल्प चुना, एक मोड़ के साथ - उन्होंने एक घेरा बनाया और हर तीन में एक आदमी को मारने के लिए आगे बढ़े, जब तक कि एक आखिरी आदमी नहीं बचा (और यह कि इस अधिनियम को समाप्त करने के लिए खुद को मारना चाहिए था) )।
जोसेफस और एक अन्य व्यक्ति अंतिम दो थे और, जैसा कि अब हम कहानी के हर विवरण को जानते हैं, आपने सही अनुमान लगाया होगा कि उन्होंने मूल विचार का बिल्कुल पालन नहीं किया था।
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो जोसीफस क्रमपरिवर्तन लौटाता है।
पैरामीटर के रूप में वस्तुओं की प्रारंभिक सरणी/सूची को क्रमबद्ध करने के लिए जैसे कि वे एक सर्कल में थे और प्रत्येक के स्थानों को तब तक गिना जाता है जब तक कोई भी नहीं रहता।
उदाहरण के लिए, 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 ]