2011-04-27 124 views
13

每次我必須這樣做時,我「發明」了一種不同的方式。時間標準化。我懷疑有一些默認命令我忽略了這一點,所以如果問題太微不足道,我很抱歉。生成組合

什麼是更好的(內存,性能)的方式來獲得:

combinations[{1,2,3},2] = {{1,2},{1,3},{2,3}} 

與輸入列表中的任意元素,當然。

+0

如果您認爲要搜索「子集」,這只是微不足道的。如果你相當合理地只考慮搜索「組合」,那麼,你剛剛通過問這個問題爲所有這些未來的人們做了很好的服務! – dreeves 2011-04-27 20:42:22

+0

@ dreeves謝謝sooo多!現在,如果你真的想要責怪我,看看第三行代碼** I **寫在這裏http://stackoverflow.com/questions/3815496/plotting-linear-inequalities-in-mathematica/3868677#3868677 – 2011-04-27 20:55:28

+0

我在幫助中心花了兩個步驟:組合=>元組=>子集(當然我已經知道了,所以這可能有所幫助) – 2011-04-27 21:09:31

回答

17
Subsets[{1, 2, 3}, {2}] 

是內置的方式。

+0

該死的,我知道這太微不足道了:)。謝謝! – 2011-04-27 18:39:22

+0

cah,祝賀開明徽章! – 2011-04-28 01:09:43

7

在添加Subsets作爲核心功能之前,Combinatorica功能KSubsets可用。

Needs["Combinatorica`"] 

KSubsets[{1, 2, 3}, 2] 

(* {{1, 2}, {1, 3}, {2, 3}} *) 

Combinatorica還提供了額外的功能,如NextKSubset

NextKSubset[{1, 2, 3}, {1, 3}] 

(* {2, 3} *) 

這最後一個功能可以爲內存管理非常有幫助。

+0

你到4000!恭喜...現在4010 – 2011-04-27 21:01:41

+0

@belisarius謝謝。 :d – 2011-04-27 21:02:08