The singledispatch countdown challenge
Level: Advanced (score: 4)
We are stoked and grateful to have Martin have you practice functools.singledispatch (new in Python 3.4).
PEP 443 defines generic programming / a single-dispatch generic function as:
A generic function is composed of multiple functions implementing the same operation for different types. Which implementation should be used during a call is determined by the dispatch algorithm. When the implementation is chosen based on the type of a single argument, this is known as single dispatch.
Let's write one ... Martin:
Your challenge today is to have count_down
print any given input in the following manner:
1234 123 12 1
Your solution should be able to handle any of these data types and still get the same results:
[int]: 1234 [str]: '1234' [list]: [1, 2, 3, 4] or ['1', '2', '3', '4'] [tuple]: (1, 2, 3, 4) or ('1', '2', '3', '4') [set]: {1, 2, 3, 4} or set([1, 2, 3, 4]) [dict]: {1: 'one', 2: 'two', 3:'three', 4:'four'} or {'1': 'one', '2': 'two', '3':'three', '4':'four'}
Don't forget to support a float! Example for 12.34 it should work as:
12.34 12.3 12. 12 1
If a data type is not supported (datetime
, itertools.compress
or re.compile
for example), it should raise a ValueError
.
Good luck, and have fun!