# Angles

rev_deg = 360

compass_dir_headings = {'N': 0, 'E': 90, 'S': 180, 'W': 270}

def compass2heading(compass):
    heading = None
    for dir_ in reversed(compass):
        dir_heading = compass_dir_headings[dir_]
        if heading == None: heading = dir_heading
        else:
            sum_ = dir_heading + heading
            if abs(dir_heading - heading) > rev_deg/2: sum_ += rev_deg
            heading = sum_/2. % rev_deg
    return heading
