diff --git a/transform.py b/transform.py index 64819b7..f3950f9 100644 --- a/transform.py +++ b/transform.py @@ -5,39 +5,46 @@ # None of them are finished; this is your job! def maximum(data): - "Returns the largest number in data" - raise NotImplementedError + highest = data[0] + for number in data: + if number > highest: + highest = number + return highest def minimum(data): - "Returns the smallest number in data" - raise NotImplementedError + lowest = None + for number in data: + if lowest is None: + lowest = number + if number < lowest: + lowest = number + return lowest def bounds(data): - "Returns a list of the smallest and largest numbers in data" - raise NotImplementedError + return [minimum(data), maximum(data)] + def clamp(value, low, high): - """Clamps a value to a range from low to high. - Returns value if it is between low and high. - If value is lower than low, returns low. If value is higher than high, returns high. - """ - raise NotImplementedError + return max(low, min(value, high)) + def ratio(value, start, end): - """Returns a number from 0.0 to 1.0, representing how far along value is from start to end. - The return value is clamped to [0, 1], so even if value is lower than start, the return - value will not be lower than 0.0. - """ - raise NotImplementedError + r = (value - start)/(end - start) + return clamp(r,0,1) def scale(value, domain_min, domain_max, range_min, range_max): - "Given a value within a domain, returns the scaled equivalent within range." - raise NotImplementedError + r = ratio(value, domain_min, domain_max) + return range_min + r * (range_max - range_min) + def get_x_values(points): - "Returns the first value for each point in points." - raise NotImplementedError + x_values = [] + for x, y in points: + x_values.append(x) + return x_values def get_y_values(points): - "Returns the second value for each point in points." - raise NotImplementedError + y_values = [] + for x, y in points: + y_values.append(y) + return y_values \ No newline at end of file