Pull to refresh

Comments 15

спасибо, очень познавательно и интересно

Для всех этих задач есть один чит - reduce позволяет получить абсолютно любой результат.

Такие загадки проще придумывать, чем разгадывать. Идешь по списку функций, что там у нас? Пусть будет

mapIndexed { index, value → index + value}

Что там в итоге? 29 – замечательно, в жизни бы бы не подумал, беру!

Справедливости ради, стандартная библиотека kotlin классная, и такие посты – отличная профилактика от велосипедостроения.

Да, согласен, придумывать на самом деле проще)

Про библиотеку kotlin - плюсую

Тут тоже задача-шутка. Сразу понятно, что среднее из текущего листа никак не получить.

А если так:
fun main() {
    listOf(1, 3, 3, 2, 4, 1)
            .runningReduce { acc, e -> acc + e }
            .average()
            .let { println(it) }//=8.0
}

playground

Да, отличное решение. Оно лучше моего однозначно)

Идея хорошая, но сами задачки странные.

Или просто сумма чётных значений
.filter { it % 2 == 0 }

Задачи неоднозначные. Например, будет ли засчитано моё решение задачи №2?

    listOf(1, 3, 3, 2, 4, 1)
        .let { kotlin.collections.List(it.count()-1){1} }
        .sum()
        .let { println(it) }//=5

Да, засчитано. Вы решили задачу креативностью, а не математикой. Что из этого в наши дни важней - тот ещё вопрос

Последнюю задачку можно взять похитрее)

map { it/it }

Забавно. Котлин вижу первый раз; все задачки, где ответом число, решил в playground просто по всплывающей справке )
В сложных задачах – ничего сложного ))
        listOf(1, 3, 3, 2, 4, 1)
        	.mapIndexed{index, value -> ((value + 6) % 4) * ((index + 7) % 5) + 1}
                .sum()
                .let { println(it) } //27

блин, я большую часть решал в лоб, как-то так, например для 14

listOf(1, 3, 3, 2, 4, 1)
       .filter { it == 3 }
       .sum()
       .let { println(it) }//=6

наверное, автор ожидает более элегантных решений ¯\_(ツ)_/¯

Все решения хороши! У листов сильно много операторов, поэтому пересечения вполне естественны)

Sign up to leave a comment.