Все перестановки с повторением с использованием scala
Я ищу scala способ дать все перестановки без повторений. Я знаю, что на этом сайте уже есть некоторые публикации, но у них, похоже, немного другая проблема.
Я ищу все перестановки с повторениями. Например:
combine(List('A','C','G'))
Должен дать:
List(List('A'.'A','A'),List('A'.'A','C'),List('A'.'A','G'),List('A'.'C','A'),
List('A'.'C',''C), ... List('G'.'G','G')
Прошу прощения, если моя проблема уже решена, но я не смог ее найти.
Заранее спасибо.
РЕДАКТИРОВАТЬ:
Мой собственный подход (не компилируется):
def combine(size: Int = sym.length) : List[List[T]] = {
size match {
case 0 => List()
case 1 => sym.toList.map(List(_))
case _ => for (el <- sym) yield el :: combine(size-1)
}
}
sym - член массива класса, который содержит все символы для объединения.