def greeting(name):
    ''' str -> str

    Returns a greeting telling the provided name hello.
    '''
    raise NotImplementedError("Delete this line and put your code here")


def city_banner(city_name, banner_width):
    ''' (str, int) -> str

    Returns a welcome banner for the provided city.
    The message should be centered in banner_width characters.
    '''
    raise NotImplementedError("Delete this line and put your code here")


def how_long_is_my_name(name):
    ''' str -> str

    Returns a message telling the user how long their name is.
    '''
    raise NotImplementedError("Delete this line and put your code here")


def student_email(first_name, last_name):
    ''' (str, str) -> str

    Returns the email for a base camp student
    with the provided first and last name.
    '''
    raise NotImplementedError("Delete this line and put your code here")


def old_enough_to_vote(age):
    ''' number -> bool

    Returns True if the user old enough to vote (is at least 18 years old)
    '''
    raise NotImplementedError("Delete this line and put your code here")


def has_two_os(string):
    '''str -> bool

    Returns True if string at least two o's (upper or lower case)
    '''
    raise NotImplementedError("Delete this line and put your code here")


def has_more_e_than_a(string):
    '''str -> bool

    Returns True if string has more e's than a's (upper or lower case)
    '''
    raise NotImplementedError("Delete this line and put your code here")


def walk_or_drive(miles, is_nice_weather):
    '''(int, bool) -> str

    Returns 'walk' if the user should walk
    and 'drive' if the user should drive to their destination.

    The user should walk if it is nice weather
    and the distance is less than a quarter mile.
    '''
    raise NotImplementedError("Delete this line and put your code here")


def gold_stars(points):
    '''int -> str

    Return the appropriate number of stars for the users score.

    1 stars for scores less than 1000 points
    2 stars for scores less than 5000 points
    3 stars for scores less than 8000 points
    4 stars for scores less than 10000 points
    5 stars for anything 10000+
    '''
    raise NotImplementedError("Delete this line and put your code here")


def damage_dealt(attack_strength, defense_strength, is_blocking):
    '''(int, int, bool) -> number

    Returns the damage dealt to the defender. Normally, the damage dealt
    is the difference between the attack_strength and the defense strength
    (without healing the defender). If the defender is blocking, the final
    damage dealt is reduced by 75%.
    '''
    raise NotImplementedError("Delete this line and put your code here")


def how_many_points(scoring_action):
    '''(str) -> int

    Returns the number of points for the corresponding
    scoring action in American football.

    An extra point kick is worth 1 point.
    An extra point conversion is worth 2 points.
    A safety is worth 2 points.
    A field goal is worth 3 points.
    A touchdown is worth 6 points.
    '''
    raise NotImplementedError("Delete this line and put your code here")
