কখনও কখনও আমাদের যাচাই করতে হয় একটি নির্দিষ্ট স্ট্রিং লিস্টে থাকা একাধিক স্ট্রিংকে जोড়ে তৈরি করা সম্ভব কিনা। স্ট্রিংগুলির ক্রম مهم নয়।
permutations ব্যবহার করে
itertools-এর permutations ফাংশন লিস্টের স্ট্রিংগুলির সব সম্ভাব্য কোম্বিনেশন তৈরি করে। যেভাবেই কোনো একটি কোম্বিনেশন লক্ষ্য স্ট্রিংয়ের সাথে মিলে যায়, আমরা নিশ্চিত হয় স্ট্রিংটি তৈরি করা সম্ভব।
উদাহরণ
from itertools import permutations
chk_str = 'balloon'
Alist = ['fly', 'on', 'o', 'hot', 'ball', 'air']
def findstring(strchk, biglist):
for i in range(2, len(biglist) + 1):
for perm in permutations(biglist, i):
if ''.join(perm) == strchk:
return True
return False
if findstring(chk_str, Alist):
print("String can be formed.")
else:
print("String can not be formed.")
আউটপুট
String can be formed.
রেগুলার এক্সপ্রেশন ব্যবহার করে
re মডিউলের compile ফাংশন রেগুলার এক্সপ্রেশন প্যাটার্ন ব্যবহার করে সম্ভাব্য স্ট্রিং তৈরি করে। তারপর লক্ষ্য স্ট্রিংয়ের সাথে তুলনা করে। ফলাফল None না হলে স্ট্রিংটি তৈরি করা সম্ভব।
উদাহরণ
import re
chk_str = 'balloon'
Alist = ['fly', 'on', 'o', 'hot', 'ball', 'air']
def findstring(strchk, biglist):
r = re.compile("(?:|".join(biglist) + ")*$")
if r.match(strchk) is not None:
return True
return False
if findstring(chk_str, Alist):
print("String can be formed.")
else:
print("String can not be formed.")
আউটপুট
String can be formed.