def redistribute(banks):
index, count = max(enumerate(banks), key=lambda iv: (iv[1], -iv[0]))
banks[index] = 0
for i in range(count):
target = (i + index + 1) % len(banks)
banks[target] += 1
test = [0, 2, 7, 0]
redistribute(test)
assert test == [2, 4, 1, 2]
redistribute(test)
assert test == [3, 1, 2, 3]
redistribute(test)
assert test == [0, 2, 3, 4]
redistribute(test)
assert test == [1, 3, 4, 1]
redistribute(test)
assert test == [2, 4, 1, 2]
def find_circle(banks):
seen = set()
while tuple(banks) not in seen:
seen.add(tuple(banks))
redistribute(banks)
return len(seen)
assert find_circle([0, 2, 7, 0]) == 5
print("Part 1:", find_circle(banks))