scala
import scala.collection.parallel.CollectionConverters._
val salesData = Seq(
("2021-01-01", 100.0),
("2021-01-02", 200.0),
("2021-12-30", 150.0),
("2021-12-31", 250.0)
)
val monthlySales = salesData.par
.groupBy { case (date, _) => date.split("-")(1) }
.mapValues(_.map(_._2).sum)
monthlySales.foreach { case (month, sales) =>
println(s"Month: $month, Total Sales: $sales")
}
scala
import scala.collection.parallel.CollectionConverters._
val graph = Map(
"A" -> Seq("B", "C"),
"B" -> Seq("C"),
"C" -> Seq("A")
)
val initialRank = Map("A" -> 1.0, "B" -> 1.0, "C" -> 1.0)
val dampingFactor = 0.85
val iterations = 10
def calculatePageRank(rank: Map[String, Double]): Map[String, Double] = {
val numPages = rank.size
val newRanks = graph.par.flatMap { case (page, links) =>
val outboundLinks = links.size
links.map(dest => dest -> (rank.getOrElse(dest, 0.0) / outboundLinks))
}
newRanks.groupBy(_._1).mapValues { case ranks =>
(1 - dampingFactor) / numPages + dampingFactor * ranks.map(_._2).sum
}
}
var currentRank = initialRank
for (i <- 1 to iterations) {
currentRank = calculatePageRank(currentRank)
}
currentRank.foreach { case (page, rank) =>
println(s"Page: $page, Rank: $rank")
}