Login and get codingMany gourmets struggle to find the perfect pairing of wines and cheeses. A number of considerations are relevant, each of which creates a unique combination. Finding the perfect match is a life long pursuit.
For the purposes of this bite, you will pair cheese and wines by the similarities of their names. We've helpfully provided a name similarity function, defined as:
sum of values of intersection of char counters of names similarity = ――――――――――――――――――――――――――――――――――――――――――――――――――――――― 1 + square of length difference of both words
Upper and lower case letters are ignored in the summing process.
Space " ", dash "-", and apostrophe "'" are considered valid characters.
Examples:
Example 1
'house' 'mouse' -> {'e': 1, 'o': 1, 's': 1, 'u': 1} -> 4 / (1 + pow(5 - 5),2)) = 4 'parapraxis' 'explanation' -> {'a': 2, 'i': 1, 'p': 1, 'x': 1} -> 5 / (1 + pow(10 - 11),2) = 2.5 'parapraxis' 'parallax' -> {'a': 3, 'p': 1, 'r': 1, 'x': 1} -> 6 / (1 + (10 - 8)**2 ) = 1.2 'roosters-do-sound' 'cocka-doodle-doo' -> {'-': 2, 'd': 2, 'e': 1, 'o': 4} -> 9 / (1 + pow(17-16),2) = 4.5 'Cabernet sauvignon' 'Dorset Blue Vinney' -> {'e': 2, 'n': 2, 'o': 1, 'r': 1, 's': 1, 't': 1, ' ': 1, 'b': 1, 'u': 1, 'v': 1, 'i': 1} -> 13 / (1 + pow(18 - 18),2) = 13Three wine lists are provided; red, white, sparkling.
Pair the wine with the forty-three cheeses mentioned in the Monty Python's Flying Circus sketch "Cheese Shop".
Tasks
Complete the function
best_match_per_wine()
which returns the best scored wine-cheese pair. Matching can be for a certain wine type (i.e. red, white, sparkling) or for all types. Raise ValueError for wines that do not appear in the lists of known wines.
Complete the function
match_wine_5cheeses()
which returns a sorted list of wines, where for each wine are listed 5 best matching cheeses.All types of wines (red, white, and sparkling) are included.
Lists of cheeses are sorted by descending similarity score and then ascending alphabetical order.
Output example:
[('Barbera', ['Cheddar', 'Gruyère', 'Boursin', 'Parmesan', 'Liptauer']), .. ('Zinfandel', ['Caithness', 'Bel Paese', 'Ilchester', 'Limburger', 'Lancashire'])]
102 out of 104 users completed this Bite.
Will you be the 103rd person to crack this Bite?
Resolution time: ~106 min. (avg. submissions of 5-240 min.)
Our community rates this Bite 7.5 on a 1-10 difficulty scale.
» Up for a challenge? 💪