DEV Community

Discussion on: Daily Challenge #142 - Parts of a Whole

Collapse
 
avalander profile image
Avalander

Scala

object whole extends App {
  def solve (x: Int): List[Int] = {
    @tailrec
    def rec (xs: Seq[Int], result: List[Int]): List[Int] =
      xs match {
        case Nil       => result
        case x :: rest => {
          val next = rest map (_ + x)
          rec(rest, result ++ next)
        }
      }
    rec(toDigits(x), List())
  }

  private def toDigits (x: Int): List[Int] =
    x.toString.map(_.asDigit).toList

  println(solve(156))     // List(6, 7, 11)
  println(solve(81596))   // List(9, 13, 17, 14, 6, 10, 7, 14, 11, 15)
  println(solve(3852))    // List(11, 8, 5, 13, 10, 7)
  println(solve(3264128)) // List(5, 9, 7, 4, 5, 11, 8, 6, 3, 4, 10, 10, 7, 8, 14, 5, 6, 12, 3, 9, 10)
  println(solve(999999))  // List(18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18)
}