0

これは、言語にとらわれない/役立つ回答である可能性があり、疑似コードである可能性があります。

さまざまな入力でテストしたいプログラムがあります。このプログラムは一連のファイルを受け取り、そのうちの 1 つがルートとして指定されます。考えられるすべてのファイルのサブセットでプログラムを実行したいと考えています。(同じファイルを含むがルートが異なる 2 つのサブセットは、異なるものと見なされます。)

これは同じ例です。ファイル A、B、C があるとします。次のようにテストしたいと思います。

{A}, root = A
{B}, root = B
{C}, root = C
{A B}, root = A
{A B}, root = B
{B C}, root = B
{B C}, root = C
{A C}, root = A
{A C}, root = C
{A B C}, root = A
{A B C}, root = B
{A B C}, root = C

等々。これがパワーセットになると思います。

ファイルでいっぱいのディレクトリを指定して、Java でこのセットを生成する最良の方法は何ですか?

4

3 に答える 3

2

Javaとおっしゃいましたが、これをご覧ください:C#ジェネリックを使用した順列、組み合わせ、バリエーション

于 2009-11-04T03:05:53.033 に答える
1

考えられるすべての mixes.largest-subsets-first に対してテストを実行するための再帰的アプローチの擬似コードを次に示します。

allofthem = set(listallfiles(thedir))

function trythemall(someset):
  if someset is empty: return
  for entry in someset:
    dotest(someset, root=entry)
  for entry in someset:
    trythemall(someset - set([entry]))

trythemall(allofthem)

もちろん、最初に最小のサブセットが必要な場合は、再編成するのは難しくありません。

于 2009-11-04T03:31:38.027 に答える
0

これはあなたが求めているものですか(擬似コード)?

set = new List()
foreach (file in dir) {
    set.add(file)
    foreach (entry in set) {
        do-test(set, entry)
    }
}

これにより、セットが作成され、セットとセット内の各エントリがdo-testメソッドに渡されます。

于 2009-11-04T03:02:06.987 に答える