Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package demo
- class Coder(words: List[String]) {
- private val mnemonics = Map(
- '2' -> "ABC", '3' -> "DEF", '4' -> "GHI", '5' -> "JKL",
- '6' -> "MNO", '7' -> "PQRS", '8' -> "TUV", '9' -> "WXYZ")
- /** Invert the mnemonics map to give a map from chars 'A' ... 'Z' to '2' ... '9' */
- private val charCode: Map[Char, Char] = ???
- /** Maps a word to the digit string it can represent, e.g. “Java” -> “5282” */
- private def wordCode(word: String): String = ???
- /** A map from digit strings to the words that represent them,
- * e,g. “5282” -> List(“Java”, “Kata”, “Lava”, ...)
- * Note: A missing number should map to the empty set, e.g. "1111" -> List()
- */
- private val wordsForNum: Map[String, Seq[String]] = ???
- /** Return all ways to encode a number as a list of words */
- def encode(number: String): Set[List[String]] = ???
- /** Maps a number to a list of all word phrases that can represent it */
- def translate(number: String): Set[String] = encode(number) map (_ mkString " ")
- def ??? = throw new Error("not implemented")
- }
- object Coder extends App {
- val dict = io.Source.fromFile("/usr/share/dict/words")
- .getLines.filter(_.length > 1).filter(_.matches("[a-zA-Z]+")).toList
- val coder = new Coder("Scala" :: "rocks" :: dict)
- println(coder.translate("7225276257"))
- }
Add Comment
Please, Sign In to add comment