मान लीजिए हमारे पास एक संख्या है जो या तो ऑक्टल या दशमलव रूप में है। यदि यह ऑक्टल रूप में है तो जांचें कि यह पालिंड्रोम है या नहीं। यदि संख्या दशमलव में है, तो इसे ऑक्टल में बदलें फिर जांचें कि यह पालिंड्रोम है या नहीं।
तो, यदि इनपुट num = 178 है, तो आउटपुट True होगा क्योंकि संख्या ऑक्टल रूप में नहीं है (8 ऑक्टल में वैध प्रतीक नहीं है लेकिन दशमलव में वैध है), फिर इसे ऑक्टल में बदलें जो 262 है और यह पालिंड्रोम है।
हल करने के चरण
- base := 8 जब num के सभी अंक 8 से नीचे हों, अन्यथा 10
- oct_list := एक नई सूची
- जब तक num 0 नहीं है, तब तक:
- (num mod base) को oct_list के अंत में डालें
- num := (num / base) का भागफल
- j := oct_list का आकार - 1
- k := 0
- जब तक k <= j, तब तक:
- यदि oct_list[j], oct_list[k] के समान नहीं है, तो:
- False लौटाएं
- j := j - 1, k := k + 1
- यदि oct_list[j], oct_list[k] के समान नहीं है, तो:
- True लौटाएं
उदाहरण
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