# hw03.py
# Use only range(), len() functions from python
# use the in operator as needed

# create and return the product of all elements in the list
# Examples:
# [] -> 1
# [1,2,3] -> 6
# [0,1,2] -> 0
# [2,4,6,8] -> 384
def mul(A):
    return None

# return a new list that contains the unique items in the given list
# [] -> []
# [1,2,3] -> [1,2,3]
# [1,1,1,1,1,1] -> [1]
# [1,2,2,3,3,3] -> [1,2,3]
# [1,1,1,2,2,3] -> [1,2,3]
# Hint: use the in operator
def unique(A):
    return None

# count the number of values in A between b and c inclusive
# ([],b,c) -> 0
# [6, 10, 4, 9, 8, 3, 4, 2, 7, 4] -> 10
# ([24, 18, 5, 25, 17, 11, 21, 12, 21, 22], 5, 20) -> 5
# ([22, 23, 21, 13, 17, 7, 10, 2, 3, 14], 5, 20) -> 5
# ([10, 1, 9, 11, 19, 8, 11, 18, 16, 10], 5, 20) -> 9
# ([4, 7, 10, 25, 12, 13, 1, 23, 3, 21], 5, 20) -> 4
# ([3, 22, 8, 19, 1, 12, 8, 20, 10, 7], 5, 20) -> 7
# ([1, 1, 2, 5, 1, 2, 4, 2, 2, 4], 5, 20) -> 1
# ([6, 7, 4, 5, 8, 8, 5, 10, 1, 7], 5, 20) -> 8
# ([8, 17, 20, 20, 16, 7, 5, 17, 19, 21], 5, 20) -> 9
# ([10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 1, 5) -> 0
# ([10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 1, 10) -> 1
# ([10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 21, 25) -> 0
def countValues(A, b, c):
    return None

# returns True if the sequence is strictly increasing, False otherwise
# it is False if the sequence has 0 or 1 item
# [] -> False
# [1] -> False
# [1,2] -> True
# [1,2,2] -> False
# [3,2,1] -> False
# [1,2,3,4,5] -> True
def isIncreasing(A):
    return None

# return a new list that has unique elements in common with both lists
# this is similar to set intersection
# [3, 6, 7, 7, 10] [3, 9, 2, 3, 1] -> [3]
# [5, 5, 9, 7, 6] [6, 5, 1, 8, 6] -> [5, 6]
# [] [] -> []
# [1, 2, 3] [1, 2, 3] -> [1, 2, 3]
# [1, 2, 3] [4, 5, 6, 7, 8] -> []
# [1, 2, 3, 4, 5] [4, 5, 6, 7, 8, 9, 10] -> [4, 5]
# Hint: use you unique function
def common(A, B):
    return None
    

def main():
    print("mul")
    print(mul([])) # 1
    print(mul([1,2,3])) # 6
    print(mul([0,1,2])) # 6
    print(mul([2,4,6,8])) # 384
    print()
    
    print("unique")
    print(unique([])) # []
    print(unique([1,2,3])) # [1,2,3]
    print(unique([1,1,1,1,1,1])) # [1]
    print(unique([1,2,2,3,3,3])) # [1,2,3]
    print(unique([1,1,1,2,2,3])) # [1,2,3]
    print()
    
    print("count values")
    print(countValues([], 1, 2)) # 0
    print(countValues([6, 10, 4, 9, 8, 3, 4, 2, 7, 4], 1, 10)) # 10
    print(countValues([24, 18, 5, 25, 17, 11, 21, 12, 21, 22], 5, 20)) # 5
    print(countValues([22, 23, 21, 13, 17, 7, 10, 2, 3, 14], 5, 20)) # 5
    print(countValues([10, 1, 9, 11, 19, 8, 11, 18, 16, 10], 5, 20)) # 9
    print(countValues([4, 7, 10, 25, 12, 13, 1, 23, 3, 21], 5, 20)) # 4
    print(countValues([3, 22, 8, 19, 1, 12, 8, 20, 10, 7], 5, 20)) # 7
    print(countValues([1, 1, 2, 5, 1, 2, 4, 2, 2, 4], 5, 20)) # 1
    print(countValues([6, 7, 4, 5, 8, 8, 5, 10, 1, 7], 5, 20)) # 8
    print(countValues([8, 17, 20, 20, 16, 7, 5, 17, 19, 21], 5, 20)) # 9
    print(countValues([10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 1, 5)) # 0
    print(countValues([10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 1, 10)) # 1
    print(countValues([10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 21, 25)) # 0
    print()

    print("isIncreasing")
    L = []
    print(L, isIncreasing(L)) # False
    L = [1]
    print(L, isIncreasing(L)) # False
    L = [1,2]
    print(L, isIncreasing(L)) # True
    L = [2,1]
    print(L, isIncreasing(L)) # False
    L = [1,2,3]
    print(L, isIncreasing(L)) # True
    L = [i for i in range(5)]
    print(L, isIncreasing(L)) # True
    L = [i*i for i in range(5)]
    print(L, isIncreasing(L)) # True
    L = [1]*5
    print(L, isIncreasing(L)) # False
    L = [i for i in range(5,0,-1)]
    print(L, isIncreasing(L)) # False
    L = [i//2 for i in range(10)]
    print(L, isIncreasing(L)) # False
    L = [i for i in range(5)] + [i for i in range(5,0,-1)]
    print(L, isIncreasing(L)) # False
    print()

    print("common")
    L1 = [3, 6, 7, 7, 10]
    L2 = [3, 9, 2, 3, 1]
    print(L1, L2, common(L1, L2)) # [3]
    L1 = [5, 5, 9, 7, 6]
    L2 = [6, 5, 1, 8, 6]
    print(L1, L2, common(L1, L2)) # [5, 6]
    L1 = [10, 7, 4, 9, 5]
    L2 = [2, 4, 3, 4, 8]
    print(L1, L2, common(L1, L2)) # [4]
    L1 = [4, 3, 10, 8, 2]
    L2 = [9, 9, 7, 2, 7]
    print(L1, L2, common(L1, L2)) # [2]
    L1 = [3, 2, 1, 10, 6]
    L2 = [10, 6, 10, 6, 9]
    print(L1, L2, common(L1, L2)) # [10, 6]
    L1 = []
    L2 = []
    print(L1, L2, common(L1, L2)) # []
    L1 = [1,2,3]
    L2 = [1,2,3]
    print(L1, L2, common(L1, L2)) # [1,2,3]
    L1 = [1,2,3]
    L2 = [4,5,6,7,8]
    print(L1, L2, common(L1, L2)) # []
    L1 = [1,2,3,4,5]
    L2 = [4,5,6,7,8,9,10]
    print(L1, L2, common(L1, L2)) # [4,5]
    
main()
