ধরুন আমাদের একটি ক্রেডিট কার্ড নম্বর আছে। কার্ড নম্বরটি বৈধ কি না তা পরীক্ষা করতে হবে। কার্ড নম্বরের নির্দিষ্ট বৈশিষ্ট্য রয়েছে −
-
এটি 4, 5 এবং 6
দিয়ে শুরু হবে -
এটি 16 সংখ্যার লম্বা হবে
-
সংখ্যায় শুধুমাত্র সংখ্যা থাকতে হবে
-
এতে '-'
দ্বারা বিভক্ত চারটি গ্রুপে সংখ্যা থাকতে পারে -
এটি অবশ্যই অন্য কোনো বিভাজক যেমন স্পেস বা আন্ডারস্কোর ব্যবহার করবে না
-
এটিতে অবশ্যই 4 বা তার বেশি পরপর একই সংখ্যা থাকবে না
সুতরাং, ইনপুট যদি s ="5423-2578-8632-6589" এর মত হয়, তাহলে আউটপুট হবে True
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- যদি s-এর '-' সংখ্যা 0-এর থেকে বেশি হয়, তাহলে
- a :="-" দ্বারা পৃথক করা অংশগুলির একটি তালিকা
- p:=1
- যদি a এর আকার 4 এর মত না হয়, তাহলে
- p:=শূন্য
- a:=ফাঁকা তালিকা
- a এর প্রতিটি b এর জন্য, do
- যদি b এর আকার 4 এর মত না হয়, তাহলে
- p:=শূন্য
- লুপ থেকে বেরিয়ে আসুন
- যদি b এর আকার 4 এর মত না হয়, তাহলে
- অন্যথায়,
- p :=একটি সাবস্ট্রিং অনুসন্ধান করুন যা 4 বা 5 বা 6 দিয়ে শুরু হয় এবং অবশিষ্ট সংখ্যাগুলি 15 সংখ্যার লম্বা হয়
- s :=s থেকে "-" সরান
- q :=সার্চ সাবস্ট্রিং যেখানে 4 বা তার বেশি পরপর অক্ষর একই
- যদি p শূন্য না হয় এবং q শূন্য হয়, তাহলে
- সত্য ফেরান
- অন্যথায়,
- মিথ্যে ফেরত দিন
উদাহরণ
আসুন আরও ভালভাবে বোঝার জন্য নিম্নলিখিত বাস্তবায়ন দেখি
import re def solve(s): if s.count("-")>0: a = s.split("-") p=1 if len(a)!=4: p=None a=[] for b in a: if len(b)!=4: p=None break else: p = re.search("[456][0-9]{15}",s) s = s.replace("-","") q = re.search(".*([0-9])\\1{3}.*",s) if p!=None and q==None: return True else: return False s = "5423-2578-8632-6589" print(solve(s))
ইনপুট
"5423-2578-8632-6589"
আউটপুট
False