2014-08-28 122 views
-2
//2 initial arrays 
var $m = ["m1","m2","m3","m4","m5","m6","m7","m8"]; 
var $f = ["f1","f2","f3","f4","f5","f6","f7","f8"]; 

4个阵列集合中的每个阵列必须包含阵列$ m和2中的2个元素从阵列$体元件F如何从两个其他阵列的元素中获取4个阵列的多个集合,但没有元素在相同阵列中两次

//first set of 4 arrays 
var $group1a = ["m1", "m2", "f1", "f2"]; 
var $group2a = ["m3", "m4", "f3", "f4"]; 
var $group3a = ["m5", "m6", "f5", "f6"]; 
var $group4a = ["m7", "m8", "f7", "f8"]; 

我需要创建几个组4个阵列的无元素是相同的阵列中的两倍。 例如

var $group1b = ["m1", "m3", "f6", "f7"]; // this is correct. 
var $group1b = ["m1", "m3", "f1", "f4"]; // this is incorrect because m1 and f1 be in the same array again. 

$group1b = ["m1", "m2", "f3", "f6"];// is incorrect because m1 and m2 already be together in $gorup1a. 
$group1b = ["m1", "m3", "f5", "f6"];// is incorrect because f5 and f6 already be together in $group3a 
$group2b = ["m2", "m4", "f1", "f2"]; // is incorrect because f1 and f2 already be together in $group1a 

我想创造的2初始阵列中的每个元素的变量来跟踪它们是什么元素组的。

+0

我想你需要给出结果数组中元素应该在哪个逻辑后面的更多细节。 '$ group1b'是否应该包含'[“m2”,“m4”,“f1”,“f2”]'?你如何去填充这些数组? – 2014-08-28 17:02:14

+0

来自4个数组集合的每个数组必须包含数组$ m中的2个元素和数组$ f中的2个元素。 $ group1b = [“m1”,“m2”,“f3”,“f6”];是不正确的,因为m1和m2已经在$ gorup1a在一起。 $ group1b = [“m1”,“m3”,“f5”,“f6”]也一样。 f5和f6已经在一起$ group3a – Ryan 2014-08-28 17:05:40

+0

哦对不起,这是inccorect。我会编辑帖子对不起 – Ryan 2014-08-28 17:17:45

回答

0

此问题类似于Pick a unique random subset from a set of unique values,除了此问题中的值集合是对([m1,f1],[m2,f2],...)并且这些集合需要是唯一的。因此,您需要先选择一个具有唯一值的唯一集合,然后确认您尚未使用该集合。

0

此问题与某些very difficult mathematics密切相关。这里是基于finite affine plane of order 4的坐标为(Z/2)[x] /(1 + x + x ),使用$m = ["A", "B", "C", "D", "E", "F", "G", "H"]$f = ["a", "b", "c", "d", "e", "f", "g", "h"]的8和8的最优显式构造。

  • ABCD, EFGH, abcd, efgh
  • AEae, BFbf, CGcg, DHdh
  • AFch, BEdg, CHaf, DGbe
  • AGdf, BHce, CEbh, DFag
  • AHbg, BGah, CFde, DEcf

我很抱歉地说,现在还不清楚在所有如何推广这一解决方案。这通常也是块设计的情况。

这里是仿射飞机,供参考。

 0 1 x 1+x 
    --------------- 
0 | A B C D 
1 | E F G H 
x | a b c d 
1+x | e f g h 
+0

您是否按照公式计算此结果?我应该用这个(Z/2)[x] /(1 + x + x2)来计算坐标吗? – Ryan 2014-08-28 20:55:06

0

因为没有简单的算法对于这一点,我必须用蛮力方法,通过创建一个新的阵列时,通过以前的所有子阵列循环检查重复。到目前为止,它的工作。

相关问题