Kotlin
Kotlin - это универсальный язык программирования, созданный JetBrains в качестве альтернативы Java с намного более удобным синтаксисом, но выполняющийся на JVM и полностью совместимый с существующей экосистемой Java.
Поддержка языка уже доступна из коробки в ItelliJ IDEA от JetBrains и Android Studio от Google. Поэтому перспективы внушительные. См. про это в блоге: Kotlin 1.0 Released: Pragmatic Language for JVM and Android.
Kotlin уже стал официальным и предпочтительным языком для Android и официальным языком соревнований ACM ICPC.
Официальная справка по языку (по-русски)
Краткое описание по русски
Хабрахабр: Почему следует полностью переходить на Kotlin (список фич)
Бесплатные курсы по Kotlin на Stepik
Серия видеоуроков по Kotlin по-русски (playlist)
Вводные видео
Видео: Что такое Kotlin? Введение
Algorithms and data structures in Kotlin
Kotlin Academy
https://superkotlin.com/kotlin-mega-tutorial/
На сайте http://try.kotlinlang.org/ есть набор ознакомительных задач и можно запускать решения на Kotlin прямо в браузере.
Habr: Андрей Бреслав и Дмитрий Жемеров о Kotlin 1.0 (внутри много ссылок).
Большой набор набор ссылок по продвинутому использованию Kotlin: http://kotlin.link/.
https://developer.android.com/kotlin/resources.html
Вот отчёт о первом Kotlin Challenge с Геной и примером решения: https://habrahabr.ru/company/JetBrains/blog/222693/.
Больше идеоматических примеров решения задач можно найти в Codeforces Surprise Language Round #8 и http://rosettacode.org/wiki/Category:Kotlin.
Как писать в файл.
Примеры обращения с коллекциями.
Функциональное программирование на Kotlin.
Kotlin Coding Conventions.
Ещё тренироваться в решении задач на Kotlin можно на http://codeforces.com, https://www.hackerrank.com, https://www.codechef.com, https://codingame.com, Advent of Code и в курсе Программирование \ Программирование на Java на DL.
Для корректного тестирования на DL в тексте решения на Kotlin должна быть определена функция верхнего уровня main:
fun main() {
println("Hello world!")
}
Примеры A+B
fun main() {
val (a, b) = readLine()!!.split(' ')
println(a.toInt() + b.toInt())
}
или
fun main() {
val (a, b) = readLine()!!.split(' ').map { it.toInt() }
println(a + b)
}
или
fun main() {
val (a, b) = readLine()!!.split(' ').map { it.toInt() }
println(a + b)
}
или (из https://kotlinlang.org/docs/tutorials/competitive-programming.html)
fun readLn() = readLine()!! fun readInt() = readLn().toInt() fun readStrings() = readLn().split(" ") fun readInts() = readStrings().map { it.toInt() }
fun main(vararg args: String) {
val (a, b) = readInts()
println(a + b)
}
или
import java.util.Scanner
fun main() {
with(Scanner(System.`in`)) {
val a = nextInt()
val b = nextInt()
println(a + b)
}
}
Чтение/запись в файл:
fun <T : Closeable, R> T.useWith(block: T.() -> R): R = use { with(it, block) }
File("a.in").bufferedReader().useWith {
File("a.out").printWriter().useWith {
val (a, b) = readLine()!!.split(' ').map(String::toInt)
println(a + b)
}
}
Scanner(File("b.in")).useWith {
PrintWriter("b.out").useWith {
val a = nextInt()
val b = nextInt()
println(a + b)
}
}