ধরুন আমাদের একটি ক্রেডিট কার্ড নম্বর আছে। কার্ড নম্বরটি বৈধ কি না তা পরীক্ষা করতে হবে। কার্ড নম্বরের নির্দিষ্ট বৈশিষ্ট্য রয়েছে −
-
এটি 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