main_solution3/re.scala
changeset 400 e48ea8300b2d
parent 396 3ffe978a5664
child 418 fa7f7144f2bb
equal deleted inserted replaced
399:b17a98b0c52f 400:e48ea8300b2d
   153 // size without simplifications
   153 // size without simplifications
   154 //println(size(der('a', der('a', EVIL))))             // => 28
   154 //println(size(der('a', der('a', EVIL))))             // => 28
   155 //println(size(der('a', der('a', der('a', EVIL)))))   // => 58
   155 //println(size(der('a', der('a', der('a', EVIL)))))   // => 58
   156 
   156 
   157 // size with simplification
   157 // size with simplification
   158 //println(simp(der('a', der('a', EVIL))))          // => 8
   158 //println(simp(der('a', der('a', EVIL))))          
   159 //println(simp(der('a', der('a', der('a', EVIL)))))// => 8
   159 //println(simp(der('a', der('a', der('a', EVIL)))))
   160 
   160 
   161 //println(size(simp(der('a', der('a', EVIL)))))           // => 8
   161 //println(size(simp(der('a', der('a', EVIL)))))           // => 8
   162 //println(size(simp(der('a', der('a', der('a', EVIL)))))) // => 8
   162 //println(size(simp(der('a', der('a', der('a', EVIL)))))) // => 8
   163 
   163 
   164 // Python needs around 30 seconds for matching 28 a's with EVIL. 
   164 // Python needs around 30 seconds for matching 28 a's with EVIL. 
   171 
   171 
   172 def time_needed[T](i: Int, code: => T) = {
   172 def time_needed[T](i: Int, code: => T) = {
   173   val start = System.nanoTime()
   173   val start = System.nanoTime()
   174   for (j <- 1 to i) code
   174   for (j <- 1 to i) code
   175   val end = System.nanoTime()
   175   val end = System.nanoTime()
   176   (end - start)/(i * 1.0e9)
   176   "%.5f".format((end - start)/(i * 1.0e9))
   177 }
   177 }
   178 
   178 
   179 //for (i <- 0 to 5000000 by 500000) {
   179 //for (i <- 0 to 5000000 by 500000) {
   180 //  println(i + " " + "%.5f".format(time_needed(2, matcher(EVIL, "a" * i))) + " secs.") 
   180 //  println(s"$i ${time_needed(2, matcher(EVIL, "a" * i))} secs.") 
   181 //}
   181 //}
   182 
   182 
   183 // another "power" test case 
   183 // another "power" test case 
   184 //simp(Iterator.iterate(ONE:Rexp)(r => SEQ(r, ONE | ONE)).drop(100).next) == ONE
   184 //simp(Iterator.iterate(ONE:Rexp)(r => SEQ(r, ONE | ONE)).drop(100).next) == ONE
   185 
   185 
   186 // the Iterator produces the rexp
   186 // the Iterator produces the rexp
   187 //
   187 //
   188 //      SEQ(SEQ(SEQ(..., ONE | ONE) , ONE | ONE), ONE | ONE)
   188 //      SEQ(SEQ(SEQ(..., ONE | ONE) , ONE | ONE), ONE | ONE)
   189 //
   189 //
   190 //    where SEQ is nested 100 times.
   190 //    where SEQ is nested 50 times.
   191  
   191  
   192 
   192 
   193 
   193 
   194 }
   194 }