# Arup Guha
# 6/1/2024
# Solution to SI@UCF List/Function Homework Problem C: Direction Changes.
def numChanges(vals):

    # Easy case.
    if len(vals) < 3:
        return 0

    # Keeps track of the current direction.
    curdir = 0

    # Accumulator for direction changes.
    dirchange = 0

    for i in range(1, len(vals)):

        # Skip over this.
        if vals[i-1] == vals[i]:
            continue

        # Default is up here.
        newchange = 1
        if vals[i-1] > vals[i]:
            newchange = -1

        # We have a direction now.
        if curdir == 0:
            curdir = newchange

        # Here is a direction change.
        if newchange != curdir:
            curdir = newchange
            dirchange += 1

    return dirchange
        
    
# Some tests.
def testNumChanges():
    print(numChanges([3,12,6,5,5,5,2,2,2,8,8,9]))
    print(numChanges([100, 99, 98, 97]))
    print(numChanges([30,30,40,50,55,59,20]))
    print(numChanges([36,16,25,24,36,23,23,40,32]))
    print(numChanges([2]))
    print(numChanges([3,3,3,3,3,3,3,3,3,3,3]))
    print(numChanges([3,3,3,3,3,3,3,3,3,3,3,4]))
    print(numChanges([3,4,3]))
    print(numChanges([3,3,3,3,3,3,4,4,4,3,3,3,3,3,3,3]))
    
# Run it.
testNumChanges()

