Implement solve(start, end, step) using a generator function that
yields numbers from start (inclusive) to end (exclusive) with the
given step.
The solve function must return the values collected into an array. Internally
it must use a function* generator (not a plain loop + push).
Bonus: Make the generator lazily evaluated — it should only compute the
next value when requested by the iterator protocol.
Sample tests