File tree 1 file changed +45
-0
lines changed 1 file changed +45
-0
lines changed Original file line number Diff line number Diff line change
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 ()
You can’t perform that action at this time.
0 commit comments