File: seqlike-kmp.scala

package info (click to toggle)
scala 2.9.2%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 67,252 kB
  • ctags: 6,602
  • sloc: java: 27,488; xml: 4,412; python: 2,297; sh: 734; makefile: 16; ansic: 6
file content (32 lines) | stat: -rw-r--r-- 789 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
object Test {
  val source = 0 to 99
  val idxes = (-1 to 2) ++ (97 to 100)
  def str(xs: Seq[Int]) = xs.mkString("(", ", ", ")")
  
  def f(tgt: Seq[Int]) = {
    println("indexOfSlice")
    // the first index `>= from` such that...
    for (x <- idxes) {
      val res = source.indexOfSlice(tgt, x)
      println("  %s with idx >= %d = %d".format(str(tgt), x, res))
    }
    // the last index `<= end` such that...
    println("lastIndexOfSlice")
    for (x <- idxes) {
      val res = source.lastIndexOfSlice(tgt, x)
      println("  %s with idx <= %d = %d".format(str(tgt), x, res))
    }
  }
  
  def g(idx: Int, len: Int) = {
    f(source.slice(idx, idx + len))
  }
  
  def main(args: Array[String]): Unit = {
    g(97, 1)
    g(97, 2)
    g(97, 3)
    g(98, 2)
    g(99, 1)
  }
}