[英]Java: Generate a Powerset
這可能是語言不可知/有用的答案,可能只是偽代碼。
我有一個要在多種輸入下測試的程序。 該程序采用一組文件,其中一個文件被指定為根文件。 我想用所有可能的文件子集運行程序。 (兩個子集包含相同的文件,但具有不同的根,被認為是不同的。)
這是一個相同的例子。 假設我有文件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生成此集合的最佳方法是什么?
您說過Java,但是請看一下: 使用C#泛型的置換,組合和變體 。
這是用於對所有可能的混合進行測試的遞歸方法的偽代碼.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)
當然,如果您首先需要最小的子集,則不難進行重組。
這是您所追求的(偽代碼)嗎?
set = new List()
foreach (file in dir) {
set.add(file)
foreach (entry in set) {
do-test(set, entry)
}
}
這將建立一個集合,然后將該集合和集合中的每個條目傳遞給do-test
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.