Python में प्रत्येक संख्या को दो भागों में विभाजित करके समान अंक वाले टपल्स (equidigit tuples) बनाए जा सकते हैं। यदि अंकों की संख्या विषम है, तो पहला भाग बड़ा होता है।
एल्गोरिदम
- संख्या को स्ट्रिंग में बदलें
- मध्य इंडेक्स खोजें:
len(str(num)) // 2 - स्ट्रिंग स्लाइसिंग से दो भाग बनाएं
- दोनों भागों को पूर्णांक में बदलकर टपल बनाएं
उदाहरण
my_list = [5613, 1223, 966143, 890, 65, 10221]
print("मूल सूची:", my_list)
my_result = []
for num in my_list:
num_str = str(num)
mid_index = len(num_str) // 2
# पहला भाग: शुरुआत से मध्य तक
part1 = num_str[:mid_index]
# दूसरा भाग: मध्य से अंत तक
part2 = num_str[mid_index:]
# पूर्णांक में बदलकर टपल बनाएं
my_result.append((int(part1), int(part2)))
print("परिणामी टपल्स:", my_result)
आउटपुट
मूल सूची: [5613, 1223, 966143, 890, 65, 10221]
परिणामी टपल्स: [(56, 13), (12, 23), (966, 143), (8, 90), (6, 5), (10, 221)]
व्याख्या
| संख्या | स्ट्रिंग | लंबाई | मध्य | भाग 1 | भाग 2 | टपल |
|---|---|---|---|---|---|---|
| 5613 | "5613" | 4 | 2 | "56" | "13" | (56, 13) |
| 1223 | "1223" | 4 | 2 | "12" | "23" | (12, 23) |
| 966143 | "966143" | 6 | 3 | "966" | "143" | (966, 143) |
| 890 | "890" | 3 | 1 | "8" | "90" | (8, 90) |
| 65 | "65" | 2 | 1 | "6" | "5" | (6, 5) |
| 10221 | "10221" | 5 | 2 | "10" | "221" | (10, 221) |
संक्षिप्त संस्करण (List Comprehension)
my_list = [5613, 1223, 966143, 890, 65, 10221]
result = [
(int(str(num)[:len(str(num))//2]), int(str(num)[len(str(num))//2:]))
for num in my_list
]
print(result) # [(56, 13), (12, 23), (966, 143), (8, 90), (6, 5), (10, 221)]
फंक्शन के रूप में
def create_equidigit_tuples(numbers):
"""संख्याओं की सूची से समान अंक वाले टपल्स बनाएं"""
result = []
for num in numbers:
s = str(num)
mid = len(s) // 2
result.append((int(s[:mid]), int(s[mid:])))
return result
# उपयोग
numbers = [5613, 1223, 966143, 890, 65, 10221]
print(create_equidigit_tuples(numbers))
विविधताएं
1. स्ट्रिंग के रूप में रखें (पूर्णांक में न बदलें)
result_str = [(str(num)[:len(str(num))//2], str(num)[len(str(num))//2:]) for num in my_list]
print(result_str) # [('56', '13'), ('12', '23'), ...]
2. विषम लंबाई के लिए अलग नियम (पहला भाग छोटा)
def split_balanced(num):
s = str(num)
mid = (len(s) + 1) // 2 # सीलिंग डिवीजन
return (int(s[:mid]), int(s[mid:]))
print([split_balanced(n) for n in [123, 1234, 12345]]) # [(12, 3), (12, 34), (123, 45)]
3. पैडिंग के साथ (समान लंबाई के लिए)
def split_padded(num, width=4):
s = str(num).zfill(width) # बाईं ओर शून्य पैडिंग
mid = width // 2
return (int(s[:mid]), int(s[mid:]))
print([split_padded(n, 4) for n in [12, 123, 1234]]) # [(0, 12), (0, 123), (12, 34)]