🎯 Scala 单词频率统计 · 终端彩虹版

44 阅读1分钟

微信图片_20251014151033_10_20.jpg

✅ 功能一览(与原图一致)

  1. 读文件 test.txt
  2. 正则拆分单词(\W+
  3. 转小写 + 频率统计
  4. 降序排序
  5. 彩虹渐变色输出(彩蛋)

💻 源码:WordRain.scala(< 30 行)

import scala.io.Source
import scala.util.Random

object WordRain {
  def main(args: Array[String]): Unit = {
    // 1. 读文件
    val content = Source.fromFile("test.txt").mkString
    // 2. 正则拆分 + 转小写
    val words = content.split("\\W+").map(_.toLowerCase).filter(_.nonEmpty)
    // 3. 频率统计(map +1)
    val freq = words.foldLeft(Map.empty[String, Int]) {
      (m, w) => m + (w -> (m.getOrElse(w, 0) + 1))
    }
    // 4. 降序排序
    val sorted = freq.toList.sortBy(-_._2)
    // 5. 彩虹输出(彩蛋)
    sorted.foreach { case (w, c) =>
      val color = f"\033[38;2;${233 - c * 2}%d;${100 + c * 3}%d;255m"
      println(f"$color$w$c\033[0m")
    }
  }
}

✅ 运行方式

# 准备测试文件
echo "Hello hello world! Scala scala, hello." > test.txt
# 编译 & 运行
scalac WordRain.scala
scala WordRain

🎨 终端效果(彩虹渐变)

hello → 3
scala → 2
world → 1
(每行颜色随频率渐变:蓝→紫→灰)

🏁 一句话口诀

**“读文件,正则拆,map 累加,sortBy 降序,彩虹输出!”**🌈


💕 具体内容参考下图

屏幕截图 2025-12-15 154859.png