С большим трудом прошёл-таки в Рождество весь Advent of Code 2017.
Что не так? Старею или Kotlin подвёл? Вторую часть 23-го дня ну никак не удавалось решить самому, слава богу на Reddit всё разжёвано даже для таких, как я.
Что привело в бешенство в Kotlin — нельзя по-человечески, как в Go, вернуть несколько значений из функции в несколько переменных. 2018 год наступил, а авторы языка хотят, чтобы программист провернул следующий финт:
1. cоздал структуру
data class MultiValueReturn(val value1: Int, val value2: String)
2. вернул из функции экземпляр этой структуры с заполненными полями
fun myFancyFun(): MultiValueReturn { return MultiValueReturn(1, "Hello") }
3. в месте вызова функции сделал деструктурирование в константы:
val (a1, a2) = myFancyFun() // a1==1, a2=="Hello"
В чём недостатки:
- лишние сущности и действия: какие-то ненужные, явно создаваемые структуры
- нельзя деструктурировать в уже имеющиеся переменные, объявленные как var. Ну и зачем кому-то эти неизменяемые константы, скажите на милость?!

BTW, AoC 2016 проходил на Groovy и всё было зашибись.