An example: I have a list [1,2,3,4,5,6,7,8] and I need to “stretch” it to lenght 20, with existing values distributed as evenly as possible,”missing” values replaced with None and the resulting list has to start with 1 and end with 8.
There are 8-1 spaces between the values in the original list and and 20-8 None values to distribute, so we can put a single None to every “space”.
[1, None, 2, None, 3, None, 4, None, 5, None, 6, None, 7, None, 8]
Now we still have 12-7 None values to distribute and we can distribute 4 of those on every other space:
[1, None, None, 2, None, 3, None, None, 4, None, 5, None,None 6, None, 7, None,
None, 8]
Now we have one left that we can assign randomly:
[1, None, None, 2, None, 3, None, None, 4, None, 5, None, None, 6, None, None 7,
None, None, 8]
Is there an algorithm that lets you fullfill a task like this? An implementation maybe?
Basic idea: just linearly interpolate the new positions from the old positions. For simplicity, we use floor division, but you could get clever and use rounding division for a slightly more even distribution.
Sample: