day1/exercise/find_pow_2.py
author Prabhu Ramachandran <prabhu@aero.iitb.ac.in>
Sat, 19 Jun 2010 01:27:20 -0400
branchscipy2010
changeset 409 4442da6bf693
parent 64 333092b68926
permissions -rw-r--r--
ENH: Minor cleanup. Also added slide to introduce IPython's %timeit and %time.

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]))