summaryrefslogtreecommitdiff
path: root/day1/exercise/find_pow_2.py
diff options
context:
space:
mode:
authorSantosh G. Vattam2009-10-08 22:48:59 +0530
committerSantosh G. Vattam2009-10-08 22:48:59 +0530
commit01824f31456fb6e6068ca72163421fca19d6f9ce (patch)
tree44f6ad4ad4a23246ff176d73ecbf19ca1aa02ab9 /day1/exercise/find_pow_2.py
parent1c50afc1e22012a9bdb3d2b67f8d369ce2fea6f4 (diff)
parent9936d8647f15e656351fc2551b08bfb91b38590f (diff)
downloadworkshops-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.py29
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]))