还是给个例子,我有一组数A = {{1, 2, 3, 4, 5, 6, 7, 8}, {2, 3, 7, 6, 9, 10, 11, 12}}得到
A1 = {{#[[1]], #[[2]], #[[3]], #[[4]]}, {#[[1]], #[[2]], #[[6]], #[[
5]]}, {#[[1]], #[[4]], #[[8]], #[[5]]}, {#[[7]], #[[8]], #[[
5]], #[[6]]}, {#[[7]], #[[6]], #[[2]], #[[3]]}, {#[[7]], #[[
3]], #[[4]], #[[8]]}} & /@ A
就得到A1 = {{{1, 2, 3, 4}, {1, 2, 6, 5}, {1, 4, 8, 5}, {7, 8, 5, 6}, {7, 6,
2, 3}, {7, 3, 4, 8}}, {{2, 3, 7, 6}, {2, 3, 10, 9}, {2, 6, 12,
9}, {11, 12, 9, 10}, {11, 10, 3, 7}, {11, 7, 6, 12}}}。现在我要提取里面只出现过一次的数组,比如A1里面{{{1, 2, 3, 4}, {1, 2, 6, 5}, {1, 4, 8, 5}, {7, 8, 5, 6},{7, 3, 4, 8}}, {2, 3, 10, 9}, {2, 6, 12,
9}, {11, 12, 9, 10}, {11, 10, 3, 7}, {11, 7, 6, 12}}}是只出现过一次的,也就是里面{7, 6,
2, 3}和{2, 3, 7, 6}算是重复出现,里面的顺序随便怎么排都可以,我所需要的就是{{1, 2, 3, 4}, {1, 2, 6, 5}, {1, 4, 8, 5}, {7, 8, 5, 6},{7, 3, 4, 8}, {2, 3, 10, 9}, {2, 6, 12,
9}, {11, 12, 9, 10}, {11, 10, 3, 7}, {11, 7, 6, 12}}这组数,里面的数都是只出现过一次,而且提取出来的数最内部顺序不能变化,也就是说不能提出这样的数来{{{1, 2, 3, 4}, {1, 2, 5, 6}, {1, 4, 5, 8}, {3, 4, 7, 8}, {5, 6, 7,
8}}, {{2, 3, 9, 10}, {2, 6, 9, 12}, {3, 7, 10, 11}, {6, 7, 11,
12}, {9, 10, 11, 12}}}把内部的每组数据顺序从小到大排出来就不行了。
我编了一程序,但是效率太低,不知哪位高手能否编出效率更高的程序来
Clear["Global`*"]
A = {{1, 2, 3, 4, 5, 6, 7, 8}, {2, 3, 7, 6, 9, 10, 11, 12}};
f[A_] := (liu1 = {{#[[1]], #[[2]], #[[3]], #[[4]]}, {#[[1]], #[[
2]], #[[6]], #[[5]]}, {#[[1]], #[[4]], #[[8]], #[[5]]}, {#[[
7]], #[[8]], #[[5]], #[[6]]}, {#[[7]], #[[6]], #[[2]], #[[
3]]}, {#[[7]], #[[3]], #[[4]], #[[8]]}} & /@ A;
ac = Flatten[liu1, 1];
c = Map[Sort, ac, {1}];
f = Reap@
Do[If[Length[Position[c, c[[i]]]] == 1, Sow[i]], {i, 1,
Length[c]}];
dd = f[[2, 1]];
El = {};
Do[El = Append[El, ac[[dd[[i]]]]], {i, 1, Length[dd]}]; El)
f[A] |