infix fun Int.のあまりを求めることの(other: Int) = this % other
infix fun Int.に足すことの(other: Int) = this + other
infix fun Int.から至るに(other: Int) = this..other
infix fun Boolean.且つ(other: Boolean) = this && other
infix fun Boolean.又は(other: Boolean) = this || other
infix fun Any.が(other: Any) = this == other
val 零 = 0
val 一 = 1
val 三 = 3
val 五 = 5
val 百 = 100
tailrec infix fun IntRange.まで繰り返すことの(行為: (Int) -> Unit) {
if (this.isEmpty()) return
val 先 = this.first
行為(先)
(先 に足すことの 一) から至るに this.last まで繰り返すことの 行為
}
val Any.を印字する: Unit
get () = println(this)
class 判定するにあたって(private val 真偽: Boolean) {
infix fun ならば(行為: () -> Unit): 判定分岐 {
if (真偽) 行為()
return 判定分岐(!真偽)
}
}
class 判定分岐(private val 続行: Boolean) {
infix fun あるいは(条件: Boolean): 判定するにあたって {
return 判定するにあたって(続行 且つ 条件)
}
infix fun いずれにも当てはまらなければ(行為: () -> Unit) {
if (続行) 行為()
}
}
fun main() {
一 から至るに 百 まで繰り返すことの { 数 ->
判定するにあたって((数 のあまりを求めることの 五 が 零) 且つ (数 のあまりを求めることの 三 が 零)) ならば {
"パイナツプル".を印字する
} あるいは (数 のあまりを求めることの 三 が 零) ならば {
"グリコ".を印字する
} あるいは (数 のあまりを求めることの 五 が 零) ならば {
"チヨコレイト".を印字する
} いずれにも当てはまらなければ {
数.を印字する
}
}
}If you have a fediverse account, you can quote this note from your own instance. Search https://uneune.one/notes/a8ppg8spfp on your instance and quote it. (Note that quoting is not supported in Mastodon.)