summaryrefslogtreecommitdiff
path: root/test/disabled/run/coder2/Coder2.scala
diff options
context:
space:
mode:
authorHubert Plociniczak <hubert.plociniczak@epfl.ch>2011-11-02 14:34:35 +0000
committerHubert Plociniczak <hubert.plociniczak@epfl.ch>2011-11-02 14:34:35 +0000
commitb6778be91900b8161e705dc2598ef7af86842b0b (patch)
treed15e8ec18a37eec212f50f1ace27714d7e7d4d34 /test/disabled/run/coder2/Coder2.scala
parentac6c76f26d884a94d0c9ff54f055d3f9ab750bac (diff)
downloadscala-b6778be91900b8161e705dc2598ef7af86842b0b.tar.gz
scala-b6778be91900b8161e705dc2598ef7af86842b0b.tar.bz2
scala-b6778be91900b8161e705dc2598ef7af86842b0b.zip
Begone t1737...
Diffstat (limited to 'test/disabled/run/coder2/Coder2.scala')
-rw-r--r--test/disabled/run/coder2/Coder2.scala72
1 files changed, 36 insertions, 36 deletions
diff --git a/test/disabled/run/coder2/Coder2.scala b/test/disabled/run/coder2/Coder2.scala
index abe284a398..43b2e9bcb8 100644
--- a/test/disabled/run/coder2/Coder2.scala
+++ b/test/disabled/run/coder2/Coder2.scala
@@ -5,31 +5,31 @@ import collection.parallel._//immutable._
class SeqCoder(words: List[String]) {
-
+
private val m = Map(
- '2' -> "ABC", '3' -> "DEF", '4' -> "GHI", '5' -> "JKL",
+ '2' -> "ABC", '3' -> "DEF", '4' -> "GHI", '5' -> "JKL",
'6' -> "MNO", '7' -> "PQRS", '8' -> "TUV", '9' -> "WXYZ")
-
+
/** Invert the mnemnonics map to give a map from chars 'A' ... 'Z' to '2' ... '9' */
- private val charCode: Map[Char, Char] =
+ private val charCode: Map[Char, Char] =
for ((digit, letters) <- m; letter <- letters) yield letter -> digit
-
- /** Maps a word to the digit string it represents,
+
+ /** Maps a word to the digit string it represents,
* e.g. `Java` -> `5282` */
private def wordCode(word: String): String = word.toUpperCase map charCode
-
- /** A map from digit strings to the words that represent
+
+ /** A map from digit strings to the words that represent
* them e.g. `5282` -> List(`Java`, `Kata`, `Lava`, ...)
*/
- val wordsForNum: Map[String, Seq[String]] =
+ val wordsForNum: Map[String, Seq[String]] =
(words groupBy wordCode).map(t => (t._1, t._2.toSeq)) withDefaultValue Seq()
-
+
val memo = collection.mutable.Map[String, Set[Seq[String]]]("" -> Set(Seq()))
val wfnmemo = collection.mutable.Map[(String, String), Set[Seq[String]]]()
val subsmemo = collection.mutable.Map[(String, String, String), Set[Seq[String]]]()
-
+
/** All ways to encode a number as a list of words */
- def encode(number: String): Set[Seq[String]] =
+ def encode(number: String): Set[Seq[String]] =
if (number.isEmpty) Set(Seq())
else {
val splits = (1 to number.length).toSet
@@ -51,38 +51,38 @@ class SeqCoder(words: List[String]) {
memo += number -> r
r
}
-
- /** Maps a number to a list of all word phrases that can
+
+ /** 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 ??? : Nothing = throw new UnsupportedOperationException
}
class ParCoder(words: List[String]) {
-
+
private val m = Map(
- '2' -> "ABC", '3' -> "DEF", '4' -> "GHI", '5' -> "JKL",
+ '2' -> "ABC", '3' -> "DEF", '4' -> "GHI", '5' -> "JKL",
'6' -> "MNO", '7' -> "PQRS", '8' -> "TUV", '9' -> "WXYZ")
-
+
/** Invert the mnemnonics map to give a map from chars 'A' ... 'Z' to '2' ... '9' */
- private val charCode: Map[Char, Char] =
+ private val charCode: Map[Char, Char] =
for ((digit, letters) <- m; letter <- letters) yield letter -> digit
-
- /** Maps a word to the digit string it represents,
+
+ /** Maps a word to the digit string it represents,
* e.g. `Java` -> `5282` */
private def wordCode(word: String): String = word.toUpperCase map charCode
-
- /** A map from digit strings to the words that represent
+
+ /** A map from digit strings to the words that represent
* them e.g. `5282` -> List(`Java`, `Kata`, `Lava`, ...)
*/
- val wordsForNum: Map[String, ParSeq[String]] =
+ val wordsForNum: Map[String, ParSeq[String]] =
(words groupBy wordCode).map(t => (t._1, t._2.toSeq.par)) withDefaultValue ParSeq()
-
+
val comparison = new SeqCoder(words)
-
+
/** All ways to encode a number as a list of words */
- def encode(number: String): ParSet[ParSeq[String]] =
+ def encode(number: String): ParSet[ParSeq[String]] =
if (number.isEmpty) ParSet(ParSeq())
else {
val splits = (1 to number.length).toSet.par
@@ -105,7 +105,7 @@ class ParCoder(words: List[String]) {
assertNumber(number, r)
r
}
-
+
def assertSubs(num: String, subsfrom: String, word: String, r: ParSet[ParSeq[String]]) {
val m = comparison.subsmemo((num, subsfrom, word))
if (r != m) {
@@ -115,7 +115,7 @@ class ParCoder(words: List[String]) {
error("r != m")
}
}
-
+
def assertWfn(num: String, split: String, dropped: String, r: ParSeq[ParSeq[String]]) {
val m = comparison.wfnmemo((num, split))
val rs = r.toSet.par
@@ -139,7 +139,7 @@ class ParCoder(words: List[String]) {
error("rs != m")
}
}
-
+
def assertNumber(num: String, r: ParSet[ParSeq[String]]) {
val m = comparison.memo(num)
if (r != m) {
@@ -149,14 +149,14 @@ class ParCoder(words: List[String]) {
error("r != m")
}
}
-
- /** Maps a number to a list of all word phrases that can
+
+ /** Maps a number to a list of all word phrases that can
* represent it */
def translate(number: String): ParSet[String] = {
comparison.translate(number)
encode(number) map (_.seq mkString " ")
}
-
+
def ??? : Nothing = throw new UnsupportedOperationException
}
@@ -165,18 +165,18 @@ class ParCoder(words: List[String]) {
object Test {
val code = "2328437472947"//36262633"//837976"//"6477323986225453446"
//val code = "747294736262633"
-
+
/* */
def main(args : Array[String]) {
for (i <- 0 until 10) {
val seqcoder = new SeqCoder(Dictionary.wordlist)
val sts = seqcoder.translate(code)
//println("Translation check: " + st.size)
-
+
val parcoder = new ParCoder(Dictionary.wordlist)
val pts = parcoder.translate(code)
//println("Translation check: " + pt.size)
-
+
val st = sts.toList.sorted
val pt = pts.toList.sorted
if (st.size != pt.size) {