Вот вам и самое неэффективное но желаемое решение.Как я и просил, я использовал functional programming
как можно больше.Надеюсь, вам понравится.Но было бы очень легко, если бы вы использовали loop
или regular expression
для решения этой проблемы.В этом вопросе функциональный стиль не нужен.
fun main(args: Array<String>) {
val list = listOf("a", "a", "a", "a", "b", "b", "b", "b")
//val list = listOf("a", "a", "a", "b", "a")
var temp = false
val result = list.zipWithNext().map {
if (temp) {
temp = false
null
} else {
if (it.first == it.second) {
temp = true
it.first + it.second
} else {
it.first
}
}
}.filter { !it.isNullOrBlank() }.toMutableList()
if (!temp) {
result.add(list.last())
}
print(result)
}