ScalaCheckを使用して値のセット(ジェネレータ以外)からn ユニークのリストを生成する方法は? This postは値のセットの代わりにGen[T]*
を使用しており、動作させるために書き換えることはできません。私は今、恥私は単にgs: Gen[T]
繰り返しパラメータを交換しようとしたセットから選んだn個のユニークな要素のリストを生成するにはどうすればよいですか?
:-) ScalaCheckを使用しての私の全くの初心者の状況を明らかにし、私がこれまで試してみました内容を表示@Jubobsの要求で
EDIT
def permute[T](n: Int, gs: Set[T]): Gen[Seq[T]] = {
val perm = Random.shuffle(gs.toList)
for {
is <- Gen.pick(n, 1 until gs.size)
xs <- Gen.sequence[List[T], T](is.toList.map(perm(_)))
} yield xs
}
しかしis.toList.map(perm(_))
赤、ウィットに下線ました:@Ericが解決hereとして書いたものでSet
へh IntelliJ IDEA 「ブラインド(直感的ではありますが)試行錯誤の前に、ScalaCheck APIを最初に読んでください」、またはおそらく「タイプが一致しません、予想:トラバーサブル[Gen [T]]、実際のリスト[T]」私は覚えていない。
@ Eric(そうでなければ有用で素敵な)のままのソリューションをそのまま使用しているのは、あまりにも馬鹿げている(したがって、投稿する価値がない)いくつかの方法を試しました。
これは必然的になり、徐々に来る私はScalaCheck APIを介して読み、今私がやるよりも、より全体の多くを理解することの私のオプションを計量し、その時点で、私は実際にpleaseNoDuplicatesPlease
は重複が含まれていることを見ていくつかのテストの後
val g = for (i1 <- Gen.choose(0, myList1.length - 1);
i2 <- Gen.choose(0, myList2.length - 1))
yield new MyObject(myList1(i1), myList2(i2))
val pleaseNoDuplicatesPlease = permute(4, g, g, g, g, g)
、( )、または質問をStackOverflowに投稿する(似たような質問があるかどうかを注意深く検索した後)。
* [...]私はそれが*動作させるために、それを書き換えるように見えることはできません。あなたの質問を編集し、あなたが試したことを示してください。 – Jubobs