提取一组数,提出的数内部顺序不能变化,有没有更快的方
还是给个例子,我有一组数A = {{1, 2, 3, 4, 5, 6, 7, 8}, {2, 3, 7, 6, 9, 10, 11, 12}}得到A1 = {{#[], #[], #[], #[]}, {#[], #[], #[], #[[
5]]}, {#[], #[], #[], #[]}, {#[], #[], #[[
5]], #[]}, {#[], #[], #[], #[]}, {#[], #[[
3]], #[], #[]}} & /@ 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 := (liu1 = {{#[], #[], #[], #[]}, {#[], #[[
2]], #[], #[]}, {#[], #[], #[], #[]}, {#[[
7]], #[], #[], #[]}, {#[], #[], #[], #[[
3]]}, {#[], #[], #[], #[]}} & /@ A;
ac = Flatten;
c = Map;
f = Reap@
Do]]] == 1, Sow], {i, 1,
Length}];
dd = f[];
El = {};
Do]]]], {i, 1, Length}]; El)
f 我这里有组数,算了558秒,太慢了,各位如有更快的算法可以对比一下 本帖最后由 gotit 于 2012-10-6 21:37 编辑
data = Flatten[{{#[], #[], #[], #[]}, {#[], #[], #[[
6]], #[]}, {#[], #[], #[], #[]}, {#[], #[[
8]], #[], #[]}, {#[], #[], #[], #[]}, {#[[
7]], #[], #[], #[]}} & /@ A, 1];
First /@ Select == Sort[#2] &], Last@# == 1 &]
用楼上数据计算,时间可以忽略不计.
A1=Extract[#, List /@ IntegerDigits /@ {1234, 1265, 1485, 7856, 7623, 7348}] & /@ A
A1可以这样简化的
gotit 发表于 2012-10-6 10:40 static/image/common/back.gif
data = Flatten[{{#[], #[], #[], #[]}, {#[], #[], #[[
6]], #[]}, {#[] ...
高手啊,果真的是忽略不计啊,非常感谢! chyanog 发表于 2012-10-6 11:36 static/image/common/back.gif
A1=Extract[#, List /@ IntegerDigits /@ {1234, 1265, 1485, 7856, 7623, 7348}] & /@ A
A1可以这样简化 ...
谢谢,不过我这里报错啊,不知哪里出了问题
A = {{1, 2, 3, 4, 5, 6, 7, 8}, {2, 3, 7, 6, 9, 10, 11, 12}};
A1 = Extract[#,
List /@ IntegerDigits /@ {1234, 1265, 1485, 7856, 7623, 7348}] & /@
A
出现
Extract::psl: "\!\(\*
StyleBox[\"\\\"Position specification \\\"\", \"MT\"]\)\!\(\* StyleBox[ RowBox[{\"{\",RowBox[{ RowBox[{\"{\",RowBox[{\"{\",RowBox[{\"1\", \",\", \"2\", \",\", \"3\", \",\", \"4\"}], \"}\"}], \"}\"}], \",\",RowBox[{\"{\",RowBox[{\"{\",RowBox[{\"1\", \",\", \"2\", \",\", \"6\", \",\", \"5\"}], \"}\"}], \"}\"}], \",\",RowBox[{\"{\",RowBox[{\"{\",RowBox[{\"1\", \",\", \"4\", \",\", \"8\", \",\", \"5\"}], \"}\"}], \"}\"}], \",\",RowBox[{\"{\",RowBox[{\"{\",RowBox[{\"7\", \",\", \"8\", \",\", \"5\", \",\", \"6\"}], \"}\"}], \"}\"}], \",\",RowBox[{\"{\",RowBox[{\"{\",RowBox[{\"7\", \",\", \"6\", \",\", \"2\", \",\", \"3\"}], \"}\"}], \"}\"}], \",\",RowBox[{\"{\",RowBox[{\"{\",RowBox[{\"7\", \",\", \"3\", \",\", \"4\", \",\", \"8\"}], \"}\"}], \"}\"}]}], \"}\"}], \"MT\"]\)\!\(\* StyleBox[\"\\\" in \\\"\", \"MT\"]\)\!\(\* StyleBox[ RowBox[{\"Extract\", \"[\",RowBox[{ RowBox[{\"{\",RowBox[{\"1\", \",\", \"2\", \",\", \"3\", \",\", \"4\", \",\", \"5\", \",\", \"6\", \",\", \"7\", \",\", \"8\"}], \"}\"}], \",\",RowBox[{\"{\",RowBox[{ RowBox[{\"{\",RowBox[{\"{\",RowBox[{\"1\", \",\", \"2\", \",\", \"3\", \",\", \"4\"}], \"}\"}], \"}\"}], \",\",RowBox[{\"{\",RowBox[{\"{\",RowBox[{\"1\", \",\", \"2\", \",\", \"6\", \",\", \"5\"}], \"}\"}], \"}\"}], \",\",RowBox[{\"{\",RowBox[{\"{\",RowBox[{\"1\", \",\", \"4\", \",\", \"8\", \",\", \"5\"}], \"}\"}], \"}\"}], \",\",RowBox[{\"{\",RowBox[{\"{\",RowBox[{\"7\", \",\", \"8\", \",\", \"5\", \",\", \"6\"}], \"}\"}], \"}\"}], \",\",RowBox[{\"{\",RowBox[{\"{\",RowBox[{\"7\", \",\", \"6\", \",\", \"2\", \",\", \"3\"}], \"}\"}], \"}\"}], \",\",RowBox[{\"{\",RowBox[{\"{\",RowBox[{\"7\", \",\", \"3\", \",\", \"4\", \",\", \"8\"}], \"}\"}], \"}\"}]}], \"}\"}]}], \"]\"}], \"MT\"]\)\!\(\* StyleBox[\"\\\" is not an integer or a list of integers.\\\"\", \"MT\"]\) " derwille 发表于 2012-10-6 20:40 static/image/common/back.gif
谢谢,不过我这里报错啊,不知哪里出了问题
A = {{1, 2, 3, 4, 5, 6, 7, 8}, {2, 3, 7, 6, 9, 10, 11, 12 ...
我这里是没有问题的,你再 Clear 一下试试 有没有其他人帮忙试一下如下代码看看
A = {{1, 2, 3, 4, 5, 6, 7, 8}, {2, 3, 7, 6, 9, 10, 11, 12}};
A1 = Extract[#,
List /@ IntegerDigits /@ {1234, 1265, 1485, 7856, 7623, 7348}] & /@
A
报错啊,总是出现这样的值,
{Extract[{1, 2, 3, 4, 5, 6, 7,
8}, {{{1, 2, 3, 4}}, {{1, 2, 6, 5}}, {{1, 4, 8, 5}}, {{7, 8, 5,
6}}, {{7, 6, 2, 3}}, {{7, 3, 4, 8}}}],
Extract[{2, 3, 7, 6, 9, 10, 11,
12}, {{{1, 2, 3, 4}}, {{1, 2, 6, 5}}, {{1, 4, 8, 5}}, {{7, 8, 5,
6}}, {{7, 6, 2, 3}}, {{7, 3, 4, 8}}}]}
不知何故 derwille 发表于 2012-10-7 20:28 static/image/common/back.gif
有没有其他人帮忙试一下如下代码看看
A = {{1, 2, 3, 4, 5, 6, 7, 8}, {2, 3, 7, 6, 9, 10, 11, 12}};
A1 = ...
你的Mathematica是哪个版本呢? chyanog 发表于 2012-10-7 23:53 static/image/common/back.gif
你的Mathematica是哪个版本呢?
7.0啊,应该不会是这个问题吧,Extract这个函数是个比较基础的函数,我帮助文件里面也是有介绍的,不会是7.0之后才加进去的吧。 derwille 发表于 2012-10-8 00:19 static/image/common/back.gif
7.0啊,应该不会是这个问题吧,Extract这个函数是个比较基础的函数,我帮助文件里面也是有介绍的,不会是 ...
果然是版本问题导致的,我的代码是在8.0下完成的,今天在7下试了下,确实运行出错,就是Extract函数的问题Extract[{2, 3, 7, 6, 9, 10, 11, 12}, {{{1, 2}}, {{3, 4}}}]这段代码能在8.0中运行,在7.0中就出错
页:
[1]