bead sort only works for sequences of nonnegative integers https en wikipedia orgwikibeadsort beadsort6 11 12 4 1 5 1 4 5 6 11 12 beadsort9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 beadsort5 0 4 3 0 3 4 5 beadsort8 2 1 1 2 8 beadsort1 9 0 0 0 1 9 traceback most recent call last typeerror sequence must be list of nonnegative integers beadsorthello world traceback most recent call last typeerror sequence must be list of nonnegative integers bead_sort 6 11 12 4 1 5 1 4 5 6 11 12 bead_sort 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 bead_sort 5 0 4 3 0 3 4 5 bead_sort 8 2 1 1 2 8 bead_sort 1 9 0 0 0 1 9 traceback most recent call last typeerror sequence must be list of non negative integers bead_sort hello world traceback most recent call last typeerror sequence must be list of non negative integers
def bead_sort(sequence: list) -> list:
    
    if any(not isinstance(x, int) or x < 0 for x in sequence):
        raise TypeError("Sequence must be list of non-negative integers")
    for _ in range(len(sequence)):
        for i, (rod_upper, rod_lower) in enumerate(zip(sequence, sequence[1:])):
            if rod_upper > rod_lower:
                sequence[i] -= rod_upper - rod_lower
                sequence[i + 1] += rod_upper - rod_lower
    return sequence


if __name__ == "__main__":
    assert bead_sort([5, 4, 3, 2, 1]) == [1, 2, 3, 4, 5]
    assert bead_sort([7, 9, 4, 3, 5]) == [3, 4, 5, 7, 9]