Sha256: e8ddc709ed32cd50c2cc916622994871464966712edf9a087c7b58f561bf2744

Contents?: true

Size: 905 Bytes

Versions: 218

Compression:

Stored size: 905 Bytes

Contents

data class Clock(private var hours: Int, private var minutes: Int) {

    companion object {
        private val MINUTES_IN_AN_HOUR = 60
        private val HOURS_IN_A_DAY = 24
    }

    init {
        sanitiseTime()
    }

    override fun toString(): String {
        return "${hours.toTimeString()}:${minutes.toTimeString()}"
    }

    fun add(minutes: Int) {
        this.minutes += minutes
        sanitiseTime()
    }

    private fun sanitiseTime() {
        while (minutes < 0) {
            minutes += MINUTES_IN_AN_HOUR
            hours--
        }

        while (hours < 0) {
            hours += HOURS_IN_A_DAY
        }

        val minutesOverflow = minutes / MINUTES_IN_AN_HOUR
        minutes %= MINUTES_IN_AN_HOUR
        hours = (hours + minutesOverflow) % HOURS_IN_A_DAY
    }

}

private fun Int.toTimeString(): String {
    return toString().padStart(length = 2, padChar = '0')
}

Version data entries

218 entries across 218 versions & 1 rubygems

Version Path
trackler-2.2.1.139 tracks/kotlin/exercises/clock/.meta/src/reference/kotlin/Clock.kt
trackler-2.2.1.138 tracks/kotlin/exercises/clock/.meta/src/reference/kotlin/Clock.kt
trackler-2.2.1.137 tracks/kotlin/exercises/clock/.meta/src/reference/kotlin/Clock.kt
trackler-2.2.1.136 tracks/kotlin/exercises/clock/.meta/src/reference/kotlin/Clock.kt
trackler-2.2.1.135 tracks/kotlin/exercises/clock/.meta/src/reference/kotlin/Clock.kt
trackler-2.2.1.134 tracks/kotlin/exercises/clock/.meta/src/reference/kotlin/Clock.kt
trackler-2.2.1.133 tracks/kotlin/exercises/clock/.meta/src/reference/kotlin/Clock.kt
trackler-2.2.1.132 tracks/kotlin/exercises/clock/.meta/src/reference/kotlin/Clock.kt
trackler-2.2.1.131 tracks/kotlin/exercises/clock/.meta/src/reference/kotlin/Clock.kt
trackler-2.2.1.130 tracks/kotlin/exercises/clock/.meta/src/reference/kotlin/Clock.kt
trackler-2.2.1.129 tracks/kotlin/exercises/clock/.meta/src/reference/kotlin/Clock.kt
trackler-2.2.1.128 tracks/kotlin/exercises/clock/.meta/src/reference/kotlin/Clock.kt
trackler-2.2.1.127 tracks/kotlin/exercises/clock/.meta/src/reference/kotlin/Clock.kt
trackler-2.2.1.126 tracks/kotlin/exercises/clock/.meta/src/reference/kotlin/Clock.kt
trackler-2.2.1.125 tracks/kotlin/exercises/clock/.meta/src/reference/kotlin/Clock.kt
trackler-2.2.1.124 tracks/kotlin/exercises/clock/.meta/src/reference/kotlin/Clock.kt
trackler-2.2.1.123 tracks/kotlin/exercises/clock/.meta/src/reference/kotlin/Clock.kt
trackler-2.2.1.122 tracks/kotlin/exercises/clock/.meta/src/reference/kotlin/Clock.kt
trackler-2.2.1.121 tracks/kotlin/exercises/clock/.meta/src/reference/kotlin/Clock.kt
trackler-2.2.1.120 tracks/kotlin/exercises/clock/.meta/src/reference/kotlin/Clock.kt