diff options
author | Santosh G. Vattam | 2009-10-08 22:48:59 +0530 |
---|---|---|
committer | Santosh G. Vattam | 2009-10-08 22:48:59 +0530 |
commit | 01824f31456fb6e6068ca72163421fca19d6f9ce (patch) | |
tree | 44f6ad4ad4a23246ff176d73ecbf19ca1aa02ab9 /day1/exercise/find_pow_2.py | |
parent | 1c50afc1e22012a9bdb3d2b67f8d369ce2fea6f4 (diff) | |
parent | 9936d8647f15e656351fc2551b08bfb91b38590f (diff) | |
download | workshops-more-scipy-01824f31456fb6e6068ca72163421fca19d6f9ce.tar.gz workshops-more-scipy-01824f31456fb6e6068ca72163421fca19d6f9ce.tar.bz2 workshops-more-scipy-01824f31456fb6e6068ca72163421fca19d6f9ce.zip |
Branches merged.
Diffstat (limited to 'day1/exercise/find_pow_2.py')
-rw-r--r-- | day1/exercise/find_pow_2.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/day1/exercise/find_pow_2.py b/day1/exercise/find_pow_2.py new file mode 100644 index 0000000..937ab41 --- /dev/null +++ b/day1/exercise/find_pow_2.py @@ -0,0 +1,29 @@ +def is_pow_2(n): + bin_count = 0 + while n > 0: + if n % 2 == 1: + bin_count += 1 + if bin_count > 1: + return False + n /= 2 + + return bin_count == 1 + +def collatz_pow_2(n): + if n == 1: return 4 + if n == 2: return 4 + collatz_pow_2 = [] + while n > 2: + print n, + if is_pow_2(n): + collatz_pow_2.append(n) + + if n % 2: + n = n * 3 - 1 + else: + n /= 2 + + return max(collatz_pow_2) + +import sys +collatz_pow_2(int(sys.argv[1])) |