গণিতে, একটি সেটের সমস্ত সদস্যকে কিছু ক্রম বা ক্রমানুসারে সাজানো এবং সেটটি ইতিমধ্যেই অর্ডার করা থাকলে, এর উপাদানগুলিকে পুনর্বিন্যাস (পুনঃবিন্যাস) করাকে বলা হয় পারমুটেশন। আমরা বিভিন্ন কৌশল ব্যবহার করে পারমুটেশন তৈরি করতে পারি। নীচে তাদের কিছু,
পদ্ধতি 1
Python ইটারটুল নামক পারমুটেশন এবং কম্বিনেশনের জন্য ডেডিকেটেড মডিউল নিয়ে আসে।
প্রথমে মডিউল আমদানি করুন
>>> import itertools >>>
পারমুটেশন ফাংশন আমাদেরকে একটি তালিকার মধ্যে N মানের স্থানান্তর পেতে দেয়, যেখানে অর্ডার গুরুত্বপূর্ণ। উদাহরণ স্বরূপ, [1,2,3,4] সহ N =2 মান নির্বাচন এইভাবে করা হয় −
Permutation (order matters): >>> print(list(itertools.permutations([1,2,3,4],2))) [(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)]
কম্বিনেশন (অর্ডার কোন ব্যাপার না)
>>> print(list(itertools.combinations('1234', 2))) [('1', '2'), ('1', '3'), ('1', '4'), ('2', '3'), ('2', '4'), ('3', '4')]
পদ্ধতি 2
নীচে নতুন মধ্যবর্তী তালিকা তৈরি না করে একটি তালিকায় বাস্তবায়ন করা হয়েছে৷
def permute(xs, low=0): if low + 1 >= len(xs): yield xs else: for p in permute(xs, low + 1): yield p for i in range(low + 1, len(xs)): xs[low], xs[i] = xs[i], xs[low] for p in permute(xs, low + 1): yield p xs[low], xs[i] = xs[i], xs[low] for p in permute([1, 2, 3]): print (p)
আউটপুট
[1, 2, 3] [1, 3, 2] [2, 1, 3] [2, 3, 1] [3, 2, 1] [3, 1, 2]
পদ্ধতি 3 পুনরাবৃত্তি ব্যবহার করে
import copy def perm(prefix,rest): for e in rest: new_rest=copy.copy(rest) new_prefix=copy.copy(prefix) new_prefix.append(e) new_rest.remove(e) if len(new_rest) == 0: print (new_prefix + new_rest) continue perm(new_prefix,new_rest) perm([],[1, 2, 3])
আউটপুট
[1, 2, 3] [1, 3, 2] [2, 1, 3] [2, 3, 1] [3, 1, 2] [3, 2, 1]