summaryrefslogtreecommitdiff
path: root/day1/exercise/find_pow_2.py
diff options
context:
space:
mode:
authorMadhusudan.C.S2009-10-08 18:59:47 +0530
committerMadhusudan.C.S2009-10-08 18:59:47 +0530
commit9ca9d7ca7b91848630b9ab4224323422b75b4833 (patch)
tree95544a2a9d87119b12090a95a6f92d082a23caaa /day1/exercise/find_pow_2.py
parent678a4787cd71924efa823ef8bf86607f84e48173 (diff)
downloadworkshops-9ca9d7ca7b91848630b9ab4224323422b75b4833.tar.gz
workshops-9ca9d7ca7b91848630b9ab4224323422b75b4833.tar.bz2
workshops-9ca9d7ca7b91848630b9ab4224323422b75b4833.zip
Added quiz tex file and all exercise problems Madhu worked out.
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]))