summaryrefslogtreecommitdiff
path: root/day1/exercise/find_pow_2.py
diff options
context:
space:
mode:
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]))