मान लीजिए हमारे पास एक संख्या है जो या तो अष्टाधारी या दशमलव रूप में है। अगर यह अष्टाधारी रूप में है तो जांच लें कि यह पैलिंड्रोम है या नहीं। यदि दशमलव में संख्या है, तो इसे अष्टाधारी में परिवर्तित करें फिर जांचें कि यह पैलिंड्रोम है या नहीं।
इसलिए, यदि इनपुट संख्या =178 की तरह है, तो आउटपुट सही होगा क्योंकि संख्या ऑक्टल रूप में नहीं है (8 ऑक्टल में मान्य प्रतीक नहीं है लेकिन दशमलव में मान्य है), फिर इसे ऑक्टल में परिवर्तित करें जो कि 262 है और यह है पैलिंड्रोम।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- आधार:=8 जब अंक के सभी अंक 8 से कम हों, अन्यथा 10
- अक्टूबर_सूची :=एक नई सूची
- जबकि संख्या 0 नहीं है, करें
- oct_list के अंत में (संख्या मॉड बेस) डालें
- संख्या:=(संख्या / आधार) का भागफल
- j :=oct_list का आकार - 1
- k :=0
- जबकि k <=j, do
- यदि oct_list[j] oct_list[k] के समान नहीं है, तो
- झूठी वापसी
- j :=j-1, k :=k + 1
- यदि oct_list[j] oct_list[k] के समान नहीं है, तो
- सही लौटें
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def is_all_under_8(num): while num: if (num % 10) >= 8: return False else: num = int(num / 10) return True def solve(num): base = 8 if(is_all_under_8(num) == False) else 10 oct_list = [] while num != 0: oct_list.append(num % base) num = int(num / base) j = len(oct_list)-1 k = 0 while k <= j: if oct_list[j] != oct_list[k]: return False j-=1 k+=1 return True num = 178 print(solve(num))
इनपुट
178
आउटपुट
True