কম্পিউটার টিউটোরিয়াল

পাইথনে অ্যারে শাফল করা


মনে করুন আমাদের একটি অ্যারে A আছে, আমাদের ডুপ্লিকেট ছাড়া সংখ্যাগুলো শাফল করতে হবে। ইনপুট যদি [1,2,3] হয়, তবে শাফলিং এর পর হতে পারে [1,3,2], রিসেট করার পর আবার শাফল করলে [2,3,1]।

এটি সমাধান করতে আমরা নিচের ধাপগুলো ফলো করব (ফিশার-ইয়েটস শাফল / random.shuffle):

  • বিভিন্ন মেথড থাকবে: __init__(), reset(), shuffle()।

  • __init__:

    • original := দেওয়া অ্যারের কপি

    • temp := nums

    • indices := 0 থেকে len(nums)-1 পর্যন্ত সংখ্যার লিস্ট

  • reset() অরিজিনাল অ্যারে রিটার্ন করবে।

  • shuffle():

    • যদি len(temp) == 0, তবে খালি অ্যারে রিটার্ন করুন।

    • i := random.choice(indices), j := random.choice(indices)

    • temp[i], temp[j] = temp[j], temp[i] (সোয়াপ)

    • return temp

  • getAllPermutation(nums, i=0) মেথড (অতিরিক্ত):

    • curr := i

    • যদি i == len(nums), তবে nums-এর কপি all-এ ইনসার্ট করুন, রিটার্ন।

    • for j := curr to len(nums):

      • swap nums[j], nums[curr]

      • getAllPermutation(nums, curr+1)

      • swap nums[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())

ইনপুট

[1,2,3] দিয়ে ইনিশিয়ালাইজ করুন, তারপর shuffle(), reset() এবং shuffle() কল করুন

আউটপুট

[2, 1, 3]
[1, 2, 3]
[2, 3, 1]

  1. পাইথনে সোর্টেড অ্যারে মার্জ (Merge Sorted Array)

  2. পাইথনে ইনহেরিটেন্স (Inheritance)

  3. পাইথনে ডাইনামিক অ্যারে বাস্তবায়ন (Implementation of Dynamic Array)

  4. পাইথনে কংক্রিট এক্সসেপশন (Concrete Exceptions)