project-euler/055_lychrel_nums.py

40 lines
704 B
Python

#!/usr/bin/env python3
def lychrel(x):
ly=[]
i=1
while i<x:
num=i
count=0
while count<50:
num=num+analogize(digitize(num)[::-1])
if pal_check(num):
break
count+=1
else:
ly.append(i)
i+=1
return ly
def analogize(x):
i=0
num=0
while i<len(x):
num+=x[i]*(10**i)
i+=1
return num
def pal_check(x):
d=digitize(x)
if d==d[::-1]:
return True
return False
def digitize(x):
if x<10:
return [x]
return [x%10]+digitize(x//10)
if __name__ == '__main__':
print(len(lychrel(10**4)))