'''
Created on Nov 6, 2011

@author: rodger
'''
# Problem: Given a list of numbers, add up the even ones

def SumUpEvens(data):
    # data is a list of integers
    total = 0
    for num in data:
        if num%2==0:
            total += num
    return total

def SumUpEvensRec(data,index):
    # data is a list of integers
    # notice no loop here
    total = 0    
    if index >= len(data):
        return 0
    num = data[index]
    if num%2==0:
        total += num 
    total += SumUpEvensRec(data,index+1)
    return total
 
def PrintOnePerLine(data):
    for num in data:
        print num
        
def PrintOnePerLineRec(data, index): 
    if index < len(data):
        print data[index]
        PrintOnePerLineRec(data,index+1)
        
def PrintOnePerLineRec2(data, index): 
    # swap the two lines in the if, what happens?
    if index < len(data):        
        PrintOnePerLineRec2(data,index+1)
        print data[index]
        
def PrintDuke(num):
    if num <= 0:
        return
    else:
        print "We all make Duke what it is"
        PrintDuke(num-1)
        
    
def Mystery(num):
    if num > 0:
        return 1 + Mystery(num/2)
    else:
        return 2 + num
        
def testing():
    data = [5, 6, 9, 1, 3, 7, 8, 2] 
    print "SumUpEvens is ", SumUpEvens(data)
    print "SumUpEvensRec is ", SumUpEvensRec(data,0)
    print "PrintOnePerLine"
    PrintOnePerLine(data)
    print "PrintOnePerLineRec"
    PrintOnePerLineRec(data,0)
    print "PrintOnePerLineRec2"
    PrintOnePerLineRec2(data,0)
    print "Mystery(9)", Mystery(9)
    print "Mystery(3)", Mystery(3)
    print "Mystery(18)", Mystery(18)  
    print  "Print Duke 6 times"
    PrintDuke(6)  
            
if __name__ == "__main__":
    testing()