Intereting Posts

Есть ли какой-нибудь метод в Kotlin, который позволяет мне перевести значение из диапазона в другой диапазон?

У меня есть значение внутри диапазона чисел (например, 0..100 ), который я хочу перевести в другой диапазон (например, до 0..9 ). Таким образом, результат будет следующим:

50 -> 4 или 100 -> 9 , …

Есть ли какой-нибудь метод в Котлине, который помогает мне в этом отношении?

Solutions Collecting From Web of "Есть ли какой-нибудь метод в Kotlin, который позволяет мне перевести значение из диапазона в другой диапазон?"

Вычислите отношение числа в пределах исходного диапазона. Умножьте его на второй диапазон.

 fun convert(number: Int, original: IntRange, target: IntRange): Int { val ratio = number.toFloat() / (original.endInclusive - original.start) return (ratio * (target.endInclusive - target.start)).toInt() } 

В качестве функции расширения

 fun IntRange.convert(number: Int, target: IntRange): Int { val ratio = number.toFloat() / (endInclusive - start) return (ratio * (target.endInclusive - target.start)).toInt() } val result = (0..100).convert(50, 0..9) 
 val r2 = IntRange(0, 100).filter { it %10 ==0 }.map { it /10 } 

Я думаю, что это должно сработать,

 val original = 0..100 val new = original.step((original.endInclusive - original.start) / 9).map{it /10}.forEach{ println(it)} 

вывод,

 0 1 2 3 4 5 6 7 8 9