Sha256: 9ca2dfafdd34cff5403997534932f93131a856800eea46084ce0ab460041dc37
Contents?: true
Size: 918 Bytes
Versions: 322
Compression:
Stored size: 918 Bytes
Contents
import scala.annotation.tailrec object AllYourBase { def rebase(inputBase: Int, inputDigits: List[Int], outputBase: Int): Option[List[Int]] = { if (inputBase < 2 || outputBase < 2) None else if (inputDigits.isEmpty) Some(List()) else { fromDigits(0, inputBase, inputDigits) match { case None => None case Some(x) => Some(toDigits(outputBase, x, List())) } } } @tailrec private def fromDigits(acc: Int, base: Int, digits: List[Int]): Option[Int] = { digits match { case x::xs => if (x >= 0 && x < base) fromDigits(acc * base + x, base, xs) else None case Nil => Option(acc) } } @tailrec private def toDigits(base: Int, x: Int, acc: List[Int]): List[Int] = { x match { case 0 => acc case _ => toDigits(base, x / base, x % base :: acc) } } }
Version data entries
322 entries across 322 versions & 1 rubygems