t | import itertools | t | import itertools |
| | | |
| def speed(path, stops, times): | | def speed(path, stops, times): |
| path_iter = iter(path) | | path_iter = iter(path) |
| stops_iter = itertools.cycle(stops) | | stops_iter = itertools.cycle(stops) |
| times_iter = iter(times) | | times_iter = iter(times) |
| while True: | | while True: |
| try: | | try: |
| N = next(stops_iter) | | N = next(stops_iter) |
| except StopIteration: | | except StopIteration: |
| break | | break |
| total_distance = 0 | | total_distance = 0 |
| for _ in range(N): | | for _ in range(N): |
| try: | | try: |
| distance = next(path_iter) | | distance = next(path_iter) |
| total_distance += distance | | total_distance += distance |
| except StopIteration: | | except StopIteration: |
| break | | break |
| if total_distance == 0: | | if total_distance == 0: |
| break | | break |
| try: | | try: |
| time = next(times_iter) | | time = next(times_iter) |
| except StopIteration: | | except StopIteration: |
| break | | break |
| average_speed = total_distance / time | | average_speed = total_distance / time |
| yield average_speed | | yield average_speed |