LetterPress helper

May 9, 2018

LetterPress is a nice combination of Go and scrabble. Here are a few lines of scala code that will give a decisive advantage

import scala.io.Source
def freq(w:String) : Map[Char,Int] = {
 w.map(x=>(x,1)).groupBy(_._1).map { 
  case (key,values) => (key, values.map(_._2).sum)
  }
}

val src = freq("rfcdpnrxqgeruenaolhntutim")
//val src = freq("wasttaxnmerhenriehxldtihr")

val words = Source.fromFile("corncob_lowercase.txt").getLines.toList.map(_.trim)
val f = words.map(x=>(x, freq(x)))
f.filter(x=> x._2.map({ case (k,v) => src.contains(k) && src(k) >= v}).forall(x=>x == true) )
 .sortWith(_._1.size > _._1.size)
 .take(10)
 .foreach(println)

Explanation

The logic behind it is very simple: