यह प्रोग्राम क्रेडिट कार्ड नंबर की वैधता जांचता है। वैध क्रेडिट कार्ड नंबर के निम्नलिखित नियम होते हैं:
वैधता नियम
- यह 4, 5, या 6 से शुरू होना चाहिए
- यह 16 अंकों का होना चाहिए
- इसमें केवल अंक होने चाहिए
- इसमें चार समूह हो सकते हैं जो '-' से अलग हों (जैसे 1234-5678-9012-3456)
- कोई अन्य विभाजक (स्पेस, अंडरस्कोर) अनुमत नहीं
- 4 या अधिक लगातार समान अंक नहीं होने चाहिए
एल्गोरिदम
- यदि नंबर में '-' है:
- '-' से विभाजित करें
- ठीक 4 समूह होने चाहिए, प्रत्येक 4 अंकों का
- अन्यथा:
- रेगेक्स से जांचें: 4/5/6 से शुरू, फिर 15 अंक
- सभी '-' हटाएं
- 4+ लगातार समान अंकों की जांच करें
- दोनों शर्तें पूरी हों तो वैध, अन्यथा अवैध
Python कार्यान्वयन
import re
def is_valid_credit_card(s):
"""क्रेडिट कार्ड नंबर की वैधता जांचें"""
# हाइफ़न वाले फॉर्मेट की जांच
if s.count("-") > 0:
parts = s.split("-")
# ठीक 4 भाग होने चाहिए
if len(parts) != 4:
return False
# प्रत्येक भाग 4 अंकों का होना चाहिए
for part in parts:
if len(part) != 4 or not part.isdigit():
return False
# हाइफ़न हटाकर आगे की जांच के लिए तैयार करें
s = s.replace("-", "")
else:
# हाइफ़न के बिना: 4/5/6 से शुरू, फिर 15 अंक
if not re.match(r'^[456]\d{15}$', s):
return False
# 4+ लगातार समान अंकों की जांच
if re.search(r'(\d)\1{3,}', s):
return False
return True
# परीक्षण
test_cases = [
"5423-2578-8632-6589", # वैध
"4253625879615786", # वैध (बिना हाइफ़न)
"5123-4567-8912-3456", # वैध
"5123-4567-8912-345", # अवैध: 15 अंक
"5123-4567-8912-34567", # अवैध: 17 अंक
"61234-567-8912-3456", # अवैध: गलत समूहन
"5123-4567-8912-345a", # अवैध: गैर-अंक
"4444-4444-4444-4444", # अवैध: 4+ लगातार समान अंक
"5123 - 4567 - 8912 - 3456" # अवैध: स्पेस विभाजक
]
for card in test_cases:
print(f"{card}: {'वैध' if is_valid_credit_card(card) else 'अवैध'}")
आउटपुट
5423-2578-8632-6589: वैध
4253625879615786: वैध
5123-4567-8912-3456: वैध
5123-4567-8912-345: अवैध
5123-4567-8912-34567: अवैध
61234-567-8912-3456: अवैध
5123-4567-8912-345a: अवैध
4444-4444-4444-4444: अवैध
5123 - 4567 - 8912 - 3456: अवैध
नोट
मूल उदाहरण में दिया गया आउटपुट False गलत प्रतीत होता है क्योंकि "5423-2578-8632-6589" सभी नियमों का पालन करता है। ऊपर दिया गया सही कार्यान्वयन इसे वैध मानता है।