Little ruby algorithm puzzle…

I have a situation where i have an array of 12 items. If someone

chooses to have n of them (where n can be between 3 and 12) then i want

to always include the first and last, and then ‘spread’ the others out

as evenly as possible between the rest.

So, lets say for the sake of argument that the array holds the numbers 1

to 12.

arr = (1…12).to_a

=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

I would get results back like this

arr.spread(3)

=> [1,6,12] (or [1,7,12], either is fine)

arr.spread(4)

=> [1, 5, 9, 12] (or [1,4,8,12] or [1, 5, 8, 12])

It feels like there should be a simple solution for this but i can’t

think of a nice way. Anyone?

thanks

max