f | def seesaw(sequence): | f | def seesaw(sequence): |
| evens = [] | | evens = [] |
| odds = [] | | odds = [] |
| for number in sequence: | | for number in sequence: |
| if number % 2 == 0: | | if number % 2 == 0: |
| evens.append(number) | | evens.append(number) |
| else: | | else: |
| odds.append(number) | | odds.append(number) |
t | even_idx, odd_idx = (0, 0) | t | i, j = (0, 0) |
| while even_idx < len(evens) or odd_idx < len(odds): | | while i < len(evens) or j < len(odds): |
| if even_idx < len(evens): | | if i < len(evens): |
| yield evens[even_idx] | | yield evens[i] |
| even_idx += 1 | | |
| if odd_idx < len(odds): | | |
| yield odds[odd_idx] | | |
| odd_idx += 1 | | i += 1 |
| | | if j < len(odds): |
| | | yield odds[j] |
| | | j += 1 |