Optimize the number finder
This commit is contained in:
parent
bb067ceffe
commit
717912cada
|
@ -2,6 +2,13 @@
|
|||
|
||||
import collections
|
||||
|
||||
def prime(number):
|
||||
for factor in range(2, number):
|
||||
if number % factor == 0:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def shatter(number):
|
||||
digits = collections.deque()
|
||||
|
||||
|
@ -13,29 +20,15 @@ def shatter(number):
|
|||
|
||||
def numbers(min=1, max=1000):
|
||||
for number in range(min, max + 1):
|
||||
yield number, shatter(number)
|
||||
|
||||
def prime(number):
|
||||
for factor in range(2, number):
|
||||
if number % factor == 0:
|
||||
return False
|
||||
|
||||
return True
|
||||
if number > 9 and prime(number):
|
||||
yield number, shatter(number)
|
||||
|
||||
for number, digits in numbers():
|
||||
if len(digits) < 2:
|
||||
if digits[-1] != len(digits) or (digits[0] + digits[1]) % 2 == 0:
|
||||
continue
|
||||
elif not prime(number):
|
||||
elif sum(digits) > 10 or digits[-2] % 2 != 0 or digits[-2] < 2:
|
||||
continue
|
||||
elif len([digit for digit in digits if digit == 1 or digit == 7]) > 0:
|
||||
continue
|
||||
elif sum(digits) > 10:
|
||||
continue
|
||||
elif (digits[0] + digits[1]) % 2 == 0:
|
||||
continue
|
||||
elif digits[-2] < 2 or digits[-2] % 2 != 0:
|
||||
continue
|
||||
elif digits[-1] != len(digits):
|
||||
elif len([digit for digit in digits if digit in [1, 7]]) > 0:
|
||||
continue
|
||||
|
||||
print(number)
|
||||
|
|
Loading…
Reference in New Issue