2025-12-07
この記事は
プログラミング言語の特有構文 Advent Calendar 2025
https://adventar.org/calendars/12640個人的な好みを交えて紹介します。
二分探索のサンプルコード
言語の特徴をあえて使い実装している。
// Kotlin - when式 + 分解宣言 + スコープ関数
fun <T : Comparable<T>> binarySearch(arr: List<T>, target: T): Int {
var (left, right) = 0 to arr.lastIndex
while (left <= right) {
val mid = (left + right) ushr 1
val (newLeft, newRight) = when {
arr[mid] == target -> return mid
arr[mid] < target -> (mid + 1) to right
else -> left to (mid - 1)
}
left = newLeft
right = newRight
}
return -1
}
fun main() {
val arr = listOf(1, 3, 5, 7, 9)
println(binarySearch(arr, 5)) // 2
}