import kotlin.math.abs
const val riesenieSila = 92
const val riesenieSmer = 15
data class Riesenie(val sila: Int, val smer: Int) {
fun cost() : Int =
abs(riesenieSila - sila) +
abs(riesenieSmer - smer)
}
fun main() {
// vytvorenie nahodneho riesenia
var riesenie = Riesenie(50, 60)
while(true) {
// ziskanie susednych rieseni
val noveRiesenia = arrayOf(
Riesenie(riesenie.sila - 1, riesenie.smer),
Riesenie(riesenie.sila + 1, riesenie.smer),
Riesenie(riesenie.sila, riesenie.smer - 1),
Riesenie(riesenie.sila, riesenie.smer + 1)
)
val najlepsieNoveRiesenie = noveRiesenia.minByOrNull{ it.cost() }!!
// vyhodnotenie
if (najlepsieNoveRiesenie.cost() > riesenie.cost()) { break }
else { riesenie = najlepsieNoveRiesenie }
}
println("najlepsie riesenie - ${riesenie.sila} / ${riesenie.smer}")
}