Stripe interview question

# Your previous Plain Text content is preserved below: # Part 1 # In an HTTP request, the Accept-Language header describes the list of # languages that the requester would like content to be returned in. The header # takes the form of a comma-separated list of language tags. For example: # Accept-Language: en-US, fr-CA, fr-FR # means that the reader would accept: # 1. English as spoken in the United States (most preferred) # 2. French as spoken in Canada # 3. French as spoken in France (least preferred) # We're writing a server that needs to return content in an acceptable language # for the requester, and we want to make use of this header. Our server doesn't # support every possible language that might be requested (yet!), but there is a # set of languages that we do support. Write a function that receives two arguments: # an Accept-Language header value as a string and a set of supported languages, # and returns the list of language tags that will work for the request. The # language tags should be returned in descending order of preference (the # same order as they appeared in the header). # In addition to writing this function, you should use tests to demonstrate that it's # correct, either via an existing testing system or one you create. # Examples: # parse_accept_language( # "en-US, fr-CA, fr-FR", # the client's Accept-Language header, a string # ["fr-FR", "en-US"] # the server's supported languages, a set of strings # ) # returns: ["en-US", "fr-FR"] # parse_accept_language("fr-CA, fr-FR", ["en-US", "fr-FR"]) # returns: ["fr-FR"] # parse_accept_language("en-US", ["en-US", "fr-CA"]) # returns: ["en-US"]