Sha256: 9d7d64e1bddd184f0c72e2cbe6f287e0421b1a2bf08565d6751647849f944954

Contents?: true

Size: 1.05 KB

Versions: 396

Compression:

Stored size: 1.05 KB

Contents

import java.math.BigDecimal

class SpaceAge(val seconds: Long) {

    companion object {
        val EARTH_ORBITAL_PERIOD_IN_SECONDS = 31557600.0
        val PRECISION = 2

        private enum class Planet(val relativeOrbitalPeriod: Double) {
            EARTH(1.0), MERCURY(0.2408467), VENUS(0.61519726), MARS(1.8808158),
            JUPITER(11.862615), SATURN(29.447498), URANUS(84.016846), NEPTUNE(164.79132)
        }
    }

    fun onEarth() = calculateAge(Planet.EARTH)
    fun onMercury() = calculateAge(Planet.MERCURY)
    fun onVenus() = calculateAge(Planet.VENUS)
    fun onMars() = calculateAge(Planet.MARS)
    fun onJupiter() = calculateAge(Planet.JUPITER)
    fun onSaturn() = calculateAge(Planet.SATURN)
    fun onUranus() = calculateAge(Planet.URANUS)
    fun onNeptune() = calculateAge(Planet.NEPTUNE)

    private fun calculateAge(planet: Planet): Double {
        val age: Double = seconds / (EARTH_ORBITAL_PERIOD_IN_SECONDS * planet.relativeOrbitalPeriod)

        return BigDecimal(age).setScale(PRECISION, BigDecimal.ROUND_HALF_UP).toDouble()
    }
}

Version data entries

396 entries across 396 versions & 1 rubygems

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