Skip to content

Instantly share code, notes, and snippets.

@evilthreads669966
Created December 3, 2023 00:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save evilthreads669966/35cb5551a64153644db08effdb57985e to your computer and use it in GitHub Desktop.
Save evilthreads669966/35cb5551a64153644db08effdb57985e to your computer and use it in GitHub Desktop.
central tendency measurements calculator
import scala.util.Sorting
import scala.collection.mutable.Map
@main
def main(): Unit = {
val list = List(26,0,5,8,20,22,0,13,6)
println(list.toCentralTendencyMeasures())
}
case class CentralTendencyMeasures(mode: Int, median: Double, mean: Double)
extension(list: Iterable[Int])
def toCentralTendencyMeasures(): CentralTendencyMeasures = {
val sortedList = Sorting.stableSort(list.toSeq).toList
var counts = Map[Int, Int]()
val map = sortedList.groupBy(identity).mapValues(_.size)
val mode = map.maxBy(pair => pair._2)._1
var median = 0.0
if sortedList.size % 2 == 0 then
median = (sortedList(sortedList.size / 2 - 1) + sortedList(sortedList.size / 2)) / 2.0
else
median = sortedList(sortedList.size / 2)
val mean = sortedList.sum.toDouble / sortedList.size
CentralTendencyMeasures(mode, median, mean)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment