ढूँढें मान लें कि मेरे पास आवर्ती पैटर्न के साथ एक संख्या है, यानी संख्याओं की एक स्ट्रिंग मौजूद है जो प्रश्न में संख्या बनाने के लिए स्वयं को दोहराती है। उदाहरण के लिए, 1234123412341234
हो सकता है, जो 1234
अंकों को दोहराकर बनाया गया है।
मैं जो करना चाहता हूं, वह पैटर्न ढूंढें जो संख्या बनाने के लिए खुद को दोहराता है।पुनरावर्ती पैटर्न
def findPattern(num):
num = str(num)
for i in range(len(num)):
patt = num[:i]
if (len(num)/len(patt))%1:
continue
if pat*(len(num)//len(patt)):
return patt, len(num)//len(patt)
हालांकि, इस: इसलिए, 1234123412341234
को देखते हुए, मैं 1234
गणना करने के लिए (और शायद 4
, संकेत मिलता है कि 1234
1234123412341234
बनाने के लिए 4 बार दोहराया है)
मैं जानता हूँ कि मैं यह कर सकता है कि चाहते हैं थोड़ा बहुत हैकी लगता है।
In [25]: c1 = itertools.cycle(list(range(4)))
In [26]: c2 = itertools.cycle(list(range(4)))
In [27]: c1==c2
Out[27]: False
इस गणना करने के लिए एक बेहतर तरीका है: मैं मैं itertools.cycle
इस्तेमाल कर सकते हैं समानता के लिए दो चक्रों, जो वास्तव में बाहर पैन नहीं है की तुलना करने लगा? (मैं एक regex के लिए खुला होगा, लेकिन मैं पता नहीं कैसे वहाँ इसे लागू करने के लिए है, जिसके कारण मैं अपने प्रयास में शामिल नहीं किया था)
संपादित:
- मैं डॉन यह जरूरी नहीं है कि संख्या में दोहराव पैटर्न है, इसलिए यदि कोई नहीं है तो मुझे
None
वापस करना होगा। - अभी, मैं केवल संख्याओं/तारों का पता लगाने से चिंतित हूं जो पूरी तरह से दोहराने वाले पैटर्न से बने होते हैं। के रूप में
magic_function (78961234123412341234)
1234
पैटर्न के रूप में वापसी होगी, 4
: हालांकि, बाद में, मैं होने की संभावना भी पैटर्न है कि कुछ पात्रों के बाद शुरू ढूँढने में दिलचस्पी हो जाएगा समय की संख्या में यह दोहराया है, और 4
इनपुट में पहली सूचकांक जहां पैटर्न पहले ही
'771177117711' जैसे कुछ के बारे में क्या? यह बहुत मुश्किल है। –
@AlexThornton: यह '7711', 3 बार, या' 1177' का एक पैटर्न है, दो बार (अग्रणी और पिछला शोर के साथ) – inspectorG4dget
नियमित अभिव्यक्ति उस के लिए असफल हो जाती है। मैं देखूंगा कि मैं कुछ भी सोच सकता हूं। –