ধরুন আমাদের একটি অ্যারে A আছে, আমাদের ডুপ্লিকেট ছাড়াই সংখ্যার সেট এলোমেলো করতে হবে। সুতরাং যদি ইনপুটটি [1,2,3] এর মতো হয়, তবে শাফলিং এর জন্য, এটি হবে [1,3,2], রিসেট করার পরে, যদি আমরা আবার এলোমেলো করি, এটি হবে [2,3,1]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
বিভিন্ন পদ্ধতি থাকবে। এগুলো হল init(), reset(), shuffle()। এগুলো নিচের মত কাজ করবে -
-
init হবে −
এর মত -
মূল :=প্রদত্ত অ্যারের একটি অনুলিপি
-
তাপমাত্রা :=সংখ্যা
-
সূচক :=0 থেকে সংখ্যার দৈর্ঘ্যের সংখ্যার তালিকা – 1
-
reset() আসল অ্যারে ফেরত দেবে
-
shuffle() হবে −
এর মত -
যদি তাপমাত্রার দৈর্ঘ্য 0 হয়, তাহলে খালি অ্যারে ফেরত দিন
-
i :=সূচক অ্যারে থেকে এলোমেলোভাবে একটি সূচক পছন্দ করুন, j :=সূচক অ্যারে থেকে এলোমেলোভাবে অন্য একটি সূচক চয়ন করুন
-
ইনডেক্স i এবং j
-এ উপস্থিত উপাদানগুলিকে অদলবদল করুন -
রিটার্ন টেম্প
-
getAllPermutation() নামক আরেকটি পদ্ধতিতে সংখ্যা লাগবে, i, প্রাথমিকভাবে i =0, এর মত হবে −
-
curr :=i
-
যদি i =সংখ্যার দৈর্ঘ্য, তাহলে
-
অল
নামক অন্য অ্যারেতে nums অ্যারের একটি অনুলিপি সন্নিবেশ করান -
ফেরত
-
-
j এর জন্য :=curr থেকে সংখ্যার দৈর্ঘ্য
-
সূচক j এবং nums থেকে curr এ উপাদানগুলি অদলবদল করুন
-
কল getAllPermutation(সংখ্যা, curr + 1)
-
সূচক j এবং nums থেকে curr এ উপাদানগুলি অদলবদল করুন
-
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
import random class Solution(object): def __init__(self, nums): self.original = [x for x in nums] self.temp = nums self.indices = [x for x in range(len(nums))] def reset(self): return self.original def shuffle(self): if not len(self.temp): return [] i = random.choice(self.indices) j = random.choice(self.indices) self.temp[i], self.temp[j] = self.temp[j], self.temp[i] return self.temp ob = Solution([1,2,3]) print(ob.shuffle()) print(ob.reset()) print(ob.shuffle())
ইনপুট
Initialize with [1,2,3] , then call shuffle(), reset() and shuffle()
আউটপুট
[2, 1, 3] [1, 2, 3] [2, 3, 1]