【发布时间】:2016-04-18 15:41:15
【问题描述】:
我在一个目录中有 50 个文件,我想执行排列并以 25 个为一组获得所有可能的组合。如果你想看一个小例子,使用 od 3 组,它会是这样的:
file1 file2 file3
file1 file2 file4
file1 file2 file5
...
file50 file48 file49
为此,我使用的是 R 方法:
library(gtools)
args <- commandArgs(TRUE)
files <- list.files(args[1])
permutations(length(files), round(length(files)/2), files, repeats=FALSE)
这种方法非常缓慢。您知道使用awk、bash、python、perl 的一些更快的替代方案吗?
【问题讨论】:
-
这个问题确实需要一些示例输入/输出来给出有意义的答案。
-
我认为这是因为答案是
50! / (25! * 25!),这是一个非常非常大的数字 -
在 R
do.call(paste,expand.grid(rep(list(1:5),3)))中尝试过这样的尝试,但这尝试创建一个 58GB 的向量,重复 1:50 和 25 次,这离我的计算机内存很远,所以我认为这是一个坏主意: ) -
您实际上想要完成什么? 50 个元素中的 25 个的每一个排列总是很大的。 50 阶乘是 3 x 10 ^ 64,这是相当多的零。即使您“仅”取其中的 25 个,也仍然超过 15,511,210,043,330,985,984,000,000,即 25!
-
如果我计算得当,它有 1.264106e+14 种可能性,即:126 410 606 437 752