次のコードがあります。
type foo= List[bar]
def emtfoo= List[bar]()
def permute(s1:Set[foo],s2:Set[foo]):Set[foo]={
for{
x<-s1
y<-s2
}yield permutatefoo(x,y,e,emtfoo)
def permutatefoo(l1:foo,l2:foo,sofar:foo):Set[foo]={
if (l1.equals (emtfoo)) {
Set{sofar:+l2}
}
else {
combine(permutatefoo(l1.drop(1),l2,l1.take(1):::sofar),
permutatefoo(l1,l2.drop(1),l2.take(1):::sofar))
}
}
def combine(s1:Set[foo],s2:Set[foo]):Set[foo] =
for {
x <- s1
y<- s2
} yield x ::: y
これは、2 セットのリストを 1 つのセットに並べ替えて、両方のリストのすべての可能な順列を順番に並べ替えるためのかなり簡単なコードである必要があります。リスト a = 1,2,3 およびリスト b =a,b,c の場合、Set{1,a,2,b,3,c-1,2,a,3,b,ca,1 を返す必要があります,2,3,b,c ext.})。ただし、私のコードでは、行の周りにいくつかのエラー タイプのミスマッチが生成されます。
{Set{sofar:+l2}}
と
x<-s1
これを修正する方法を知っている人はいますか?