Skip to content
This repository was archived by the owner on Sep 6, 2018. It is now read-only.
Prev Previous commit
Next Next commit
squareSequenceDigit() and fibSequenceDigit() with higher-order functi…
…on sequenceDigit()
  • Loading branch information
Stupidman00 committed Oct 1, 2016
commit 1cd51e0a92ee64d4eb885b7490e768e45c9baf35
18 changes: 5 additions & 13 deletions src/lesson3/task1/Loop.kt
Original file line number Diff line number Diff line change
Expand Up @@ -246,33 +246,25 @@ fun hasDifferentDigits(n: Int): Boolean {
* 149162536496481100121144...
* Например, 2-я цифра равна 4, 7-я 5, 12-я 6.
*/
fun squareSequenceDigit(n: Int): Int {
fun sequenceDigit(n: Int, sequence: (Int) -> Int): Int {
var count: Int = 0
var number: Int = 1
var temp: Int = 0
while (n > count) {
temp = sqr(number.toDouble()).toInt()
temp = sequence(number)
count += digitNumber(temp)
number++
}
return takeDigit(temp, count - n + 1)
}

fun squareSequenceDigit(n: Int): Int = sequenceDigit(n, {it*it})

/**
* Сложная
*
* Найти n-ю цифру последовательности из чисел Фибоначчи (см. функцию fib выше):
* 1123581321345589144...
* Например, 2-я цифра равна 1, 9-я 2, 14-я 5.
*/
fun fibSequenceDigit(n: Int): Int {
var count: Int = 0
var number: Int = 1
var temp: Int = 0
while (n > count) {
temp = fib(number)
count += digitNumber(temp)
number++
}
return takeDigit(temp, count - n + 1)
}
fun fibSequenceDigit(n: Int): Int = sequenceDigit(n, {fib(it)})