Это должно работать точно так же, как linspace (не обрабатывая случаи, когда num равно 0 или 1):
fun linspace(start: Int, stop: Int, num: Int) = (start..stop step (stop - start) / (num - 1)).toList()
Используется диапазон start..stop
(диапазон в котлине включительно) и функцияstep
позволяет нам определить, насколько далеко должны быть шаги в этих диапазонах.
РЕДАКТИРОВАТЬ
Как подсказывает @forpas в комментариях, шаг должен рассчитываться с использованием (stop - start)
, а нетолько stop
.Использование только stop
будет работать, только если start
было 0
.
@ Алексей Романов правильно сказал, что , если вам явно не нужен List в качестве возвращаемого типа, вы должны вернуть IntProgression
(он не содержит все элементы в памяти, как список), так какего также Iterable
.
Спасибо вам обоим за ваш вклад!