Sha256: 20a93ed2cab5774175ce4bdb5050919e1898933b1cf0b6277dbcf87f86d0c8af

Contents?: true

Size: 677 Bytes

Versions: 212

Compression:

Stored size: 677 Bytes

Contents

import NumberType.NumberType

object PerfectNumbers {
  def classify(n: Int): Either[String, NumberType] = {
    if (n <= 0)
      Left("Classification is only possible for natural numbers.")
    else {
      val sumOfFactors
      = (1 until n)
        .foldLeft(0)((acc, i) => if (n % i == 0) acc + i else acc)

      if (sumOfFactors < n)
        Right(NumberType.Deficient)
      else if (sumOfFactors > n)
        Right(NumberType.Abundant)
      else
        Right(NumberType.Perfect)
    }
  }
}

object NumberType extends Enumeration {
  type NumberType = Value

  val Perfect = Value("Perfect")
  val Abundant = Value("Abundant")
  val Deficient = Value("Deficient")
}

Version data entries

212 entries across 212 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/scala/exercises/perfect-numbers/example.scala
trackler-2.2.1.179 tracks/scala/exercises/perfect-numbers/example.scala
trackler-2.2.1.178 tracks/scala/exercises/perfect-numbers/example.scala
trackler-2.2.1.177 tracks/scala/exercises/perfect-numbers/example.scala
trackler-2.2.1.176 tracks/scala/exercises/perfect-numbers/example.scala
trackler-2.2.1.175 tracks/scala/exercises/perfect-numbers/example.scala
trackler-2.2.1.174 tracks/scala/exercises/perfect-numbers/example.scala
trackler-2.2.1.173 tracks/scala/exercises/perfect-numbers/example.scala
trackler-2.2.1.172 tracks/scala/exercises/perfect-numbers/example.scala
trackler-2.2.1.171 tracks/scala/exercises/perfect-numbers/example.scala
trackler-2.2.1.170 tracks/scala/exercises/perfect-numbers/example.scala
trackler-2.2.1.169 tracks/scala/exercises/perfect-numbers/example.scala
trackler-2.2.1.167 tracks/scala/exercises/perfect-numbers/example.scala
trackler-2.2.1.166 tracks/scala/exercises/perfect-numbers/example.scala
trackler-2.2.1.165 tracks/scala/exercises/perfect-numbers/example.scala
trackler-2.2.1.164 tracks/scala/exercises/perfect-numbers/example.scala
trackler-2.2.1.163 tracks/scala/exercises/perfect-numbers/example.scala
trackler-2.2.1.162 tracks/scala/exercises/perfect-numbers/example.scala
trackler-2.2.1.161 tracks/scala/exercises/perfect-numbers/example.scala
trackler-2.2.1.160 tracks/scala/exercises/perfect-numbers/example.scala