ababup1192
11/14/2016 - 12:50 PM

P09.scala

object P09{
  def pack[T](list: List[T]): List[List[T]] = {
    list.foldRight(List(): List[List[T]]){ (x, acc) => 
      acc match {
        case Nil                     => List(List(x))
        case l :: xs if l contains x => (x :: l) :: xs
        case _                       => List(x) :: acc
      }
    }
  }

  def main(args: Array[String]){
    println(pack(List('a, 'a, 'a, 'a, 'b, 'c, 'c, 'a, 'a, 'd, 'e, 'e, 'e, 'e)))
  }
}