combinations

trait Collection[A] {
  def combinations(k: Int): Iterator[Collection[A]]
}

combinations calcula todas as combinações possíveis de elementos nesta coleção, tiradas de k em k e retorna um Iterator para iterar.