Skip to content

Instantly share code, notes, and snippets.

@ConnorDoyle
Created November 27, 2013 13:47
Show Gist options
  • Save ConnorDoyle/7675945 to your computer and use it in GitHub Desktop.
Save ConnorDoyle/7675945 to your computer and use it in GitHub Desktop.
"Collapse" runs of some target item in a sequence.
def collapse(s: String, target: Char): String = collapse(s.toSeq, target).mkString
def collapse[T](s: Seq[T], target: T): Seq[T] = s match {
case Seq() => Seq[T]()
case t0 +: t1 +: tail if t0 == target && t1 == target =>
collapse(target +: tail, target)
case t +: tail => t +: collapse(tail, target)
}
/*
// REPL...
scala> collapse("abcdefg___hijk_".toSeq, '_')
res3: Seq[Char] = List(a, b, c, d, e, f, g, _, h, i, j, k, _)
scala> collapse("abcdefg___hijk_", '_')
res4: String = abcdefg_hijk_
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment