Kotlin агрегирует последовательные элементы списка

#kotlin

#kotlin

Вопрос:

Я хотел бы суммировать последовательные числа в списке Kotlin. Если список имеет 0, то он должен начать суммировать числа после 0. Результатом будет список сумм. В основном суммируйте до первого 0, затем до следующего 0 и так далее. Например:

     val arr = arrayOf(1, 2, 0, 2, 1, 3, 0, 4)
    // list of sums =  [3,        6,       4]
 

На данный момент я получил его, работая с fold :

     val sums: List<Int> = arr.fold(listOf(0)) { sums: List<Int>, n: Int ->
        if (n == 0)
            sums   n
        else
            sums.dropLast(1)   (sums.last()   n)
    }
    
 

но мне интересно, есть ли более простой или эффективный способ сделать это.