43 lines
1.1 KiB
Kotlin
Vendored
43 lines
1.1 KiB
Kotlin
Vendored
import org.jetbrains.kotlinx.dataframe.*
|
|
import org.jetbrains.kotlinx.dataframe.annotations.*
|
|
import org.jetbrains.kotlinx.dataframe.api.*
|
|
import org.jetbrains.kotlinx.dataframe.api.groupBy
|
|
import org.jetbrains.kotlinx.dataframe.io.*
|
|
|
|
enum class State {
|
|
Idle,
|
|
Productive,
|
|
Maintenance,
|
|
}
|
|
|
|
class Event(val toolId: String, val state: State, val timestamp: Long)
|
|
|
|
fun box(): String {
|
|
val tool1 = "tool_1"
|
|
val tool2 = "tool_2"
|
|
val tool3 = "tool_3"
|
|
|
|
val events = listOf(
|
|
Event(tool1, State.Idle, 0),
|
|
Event(tool1, State.Productive, 5),
|
|
Event(tool2, State.Idle, 0),
|
|
Event(tool2, State.Maintenance, 10),
|
|
Event(tool2, State.Idle, 20),
|
|
Event(tool3, State.Idle, 0),
|
|
Event(tool3, State.Productive, 25),
|
|
).toDataFrame()
|
|
|
|
val lastTimestamp = events.maxOf { timestamp }
|
|
val groupBy = events
|
|
.groupBy { toolId }
|
|
.sortBy { timestamp }
|
|
.add("stateDuration") {
|
|
(next()?.timestamp ?: lastTimestamp) - timestamp
|
|
}.toDataFrame()
|
|
|
|
groupBy.group[0].stateDuration
|
|
|
|
groupBy.compareSchemas(strict = true)
|
|
return "OK"
|
|
}
|