diff --git a/interview.py b/interview.py new file mode 100644 index 0000000..c496032 --- /dev/null +++ b/interview.py @@ -0,0 +1,34 @@ +''' + +Problem: Creage averager with following behavior. + +>>> avg(10) +10.0 +>>> avg(11) +10.5 +>>> avg(12) +11.0 + +Lead to functional implementation, explaining closures. + +''' + +# Class-based implementation +class Averager(): + + def __init__(self): + self.series = [] + + def __call__(self, new_value): + self.series.append(new_value) + return sum(self.series) / len(self.series) + +# Functional implementation +def make_averager(): + series = [] + + def averager(new_value): + series.append(new_value) + return sum(series) / len(series) + + return averager