Skip to content

Commit cc2c7f8

Browse files
authored
Merge pull request #1 from gamzeaksoy/gamzeaksoy-patch-1
added solution 1 for problem_92
2 parents a57809a + fc253a6 commit cc2c7f8

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

project_euler/problem_92/sol1.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/usr/bin/env python
2+
3+
def get_digits(n):
4+
return list(map(int, str(n)))
5+
6+
def classify(n):
7+
return ''.join(sorted(str(n)))
8+
9+
terminators = {}
10+
def chain(start):
11+
n = start
12+
prev = None
13+
sequence = []
14+
while prev != 1 and prev != 89:
15+
key = classify(n)
16+
sequence.append(key)
17+
try:
18+
if terminators[key]:
19+
for number in sequence:
20+
terminators[number] = True
21+
return True
22+
elif terminators[key] == False:
23+
for number in sequence:
24+
terminators[number] = False
25+
return False
26+
except Exception as e:
27+
pass
28+
29+
prev = n
30+
n = sum(d ** 2 for d in get_digits(n))
31+
32+
if prev == 89:
33+
for number in sequence:
34+
terminators[number] = True
35+
return True
36+
else:
37+
for number in sequence:
38+
terminators[number] = False
39+
return False
40+
41+
def main():
42+
print(len([x for x in map(chain, list(range(1, 10000000))) if x]))
43+
44+
if __name__ == "__main__":
45+
main()

0 commit comments

Comments
 (0)