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)
  }
}
