Advertisement
jules0707

memonics

Feb 28th, 2017
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.88 KB | None | 0 0
  1. package week6
  2.  
  3. import scala.io.Source
  4.  
  5. object memonics {;import org.scalaide.worksheet.runtime.library.WorksheetSupport._; def main(args: Array[String])=$execute{;$skip(318);
  6.   val in = Source.fromURL("http://lamp.epfl.ch/files/content/sites/lamp/files/teaching/progfun/linuxwords.txt");System.out.println("""in  : scala.io.BufferedSource = """ + $show(in ));$skip(87);
  7.  
  8.   val words = in.getLines.toList filter (word => word forall (char => char.isLetter));System.out.println("""words  : List[String] = """ + $show(words ));$skip(141);
  9.  
  10.   val nmem = Map(
  11.     '2' -> "ABC", '3' -> "DEF", '4' -> "GHI", '5' -> "JKL",
  12.     '6' -> "MNO", '7' -> "PQRS", '8' -> "TUV", '9' -> "WXYZ");System.out.println("""nmem  : scala.collection.immutable.Map[Char,String] = """ + $show(nmem ));$skip(95);
  13.  
  14.   val charCode: Map[Char, Char] = for ((digit, str) <- nmem; ltr <- str) yield (ltr -> digit);System.out.println("""charCode  : Map[Char,Char] = """ + $show(charCode ));$skip(70);
  15.  
  16.   def wordCode(word: String): String = word.toUpperCase map charCode;System.out.println("""wordCode: (word: String)String""");$skip(70);
  17.  
  18.   val wordsForNum: Map[String, Seq[String]] = words groupBy wordCode;System.out.println("""wordsForNum  : Map[String,Seq[String]] = """ + $show(wordsForNum ));$skip(269);
  19.  
  20.   def encode(number: String): Set[List[String]] =
  21.     if (number.isEmpty) Set(List())
  22.     else{
  23.       for {
  24.         split <- 1 to number.length
  25.         word <- wordsForNum(number take split)
  26.         rest <- encode(number drop split)
  27.       } yield word :: rest
  28. }.toSet;System.out.println("""encode: (number: String)Set[List[String]]""");$skip(81);
  29.  
  30.   def translate(number:String):Set[String]= encode(number) map (_ mkString " ");System.out.println("""translate: (number: String)Set[String]""");$skip(27); val res$0 =
  31.  
  32.   translate("7225247386");System.out.println("""res0: Set[String] = """ + $show(res$0))}
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement