Skip to content

Instantly share code, notes, and snippets.

@prdoyle
Last active March 24, 2021 12:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save prdoyle/e6c88f6c25e6c965b4633401d85f7c50 to your computer and use it in GitHub Desktop.
Save prdoyle/e6c88f6c25e6c965b4633401d85f7c50 to your computer and use it in GitHub Desktop.
#! /usr/bin/python
from math import prod
def compute_digits( n ):
if n <= 9:
return [ n ]
else:
return compute_digits( n // 10 ) + [ n % 10 ]
def is_robust( value ):
digits = compute_digits( value )
s = sum( digits )
if s % len( digits ) != 0:
return False
avg = s / len( digits )
lo = min( digits )
hi = max( digits )
if lo == 0 or lo == hi:
return False
things_to_try = digits + [ avg, lo, hi, hi-lo, len( digits ), s, prod( digits ) ]
badness = [ True for denominator in things_to_try if value % denominator != 0 ]
return not badness
for n in range( 1, 9999999 ):
if is_robust( n ):
print( n )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment