Mine is written in C++ so I didn't see it fit to put it here. Besides, as I mentioned my implementation is the straightforward one, so it's not really interesting.
The algorithm is:
- Find how many elements to return in subrange. This is simply the abs() of the difference between the requested range's indices.
- Find out from which element of the original vector to start copying. This is the hairy one: 4 cases (array ascending & subrange descending, array descending & subrange ascending, etc.) In each case assert on range compatibility.
- Copy - a simple substring copy from the array to the returned array, starting with element from (1), the amount of chars from (2)