ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила

Как писать решения на Kotlin

Программы на Kotlin компилируются на сервере с помощью Kotlin command line compiler 1.9.22. Компилятор запускается со следующими опциями:

kotlinc Main.kt -jvm-target 1.8

Запуск решения осуществляется с помощью интерпретатора Java 8:

java -client -Xmx544m -Xss64m -DONLINE_JUDGE
    -classpath .;kotlin-stdlib.jar;kotlin-reflect.jar MainKt

Вы можете найти компилятор здесь.

Ограничения

Объявление package не поддерживается.

Примеры решения задач

Пример решения задачи 1000. A + B problem на Kotlin:

fun main(args: Array<String>) {
   val (x, y) = readLine()!!.split(' ').map(String::toInt)
   println(x + y)
}

Или еще короче:

fun main(args: Array<String>) =
   print(readLine()!!.split(' ').map(String::toInt).sum())

Пример решения задачи 1001. Обратный корень на Kotlin:

fun main(args: Array<String>) {
   val nums = mutableListOf<Double>()
   while (true) {
      nums +=
         (readLine() ?: break)
            .split(' ')
            .filter { !it.isEmpty() }
            .map { it.toDouble() }
   }
   nums.reversed()
       .forEach { println(Math.sqrt(it)) }
}

Или снова в один оператор:

fun main(args: Array<String>) =
   generateSequence { readLine() }
      .takeWhile { true }
      .map { a -> a.split(' ').filter(String::isNotEmpty).toMutableList() }
      .fold(mutableListOf<String>(), { a, b -> (a + b).toMutableList() })
      .map(String::toDouble)
      .map { x -> Math.sqrt(x) }
      .reversed()
      .forEach(::println)

Прежние компиляторы

  • Компилятор Kotlin 1.1.4 использовался до 1 сентября 2020 года.
  • Компилятор Kotlin 1.4.0 использовался до 22 января 2024 года.