day1/exercise/find_pow_2.py
author Prabhu Ramachandran <prabhu@aero.iitb.ac.in>
Tue, 22 Jun 2010 00:06:31 -0400
branchscipy2010
changeset 420 5e408de16a14
parent 64 333092b68926
permissions -rw-r--r--
Minor edits.

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