2014-08-28 128 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

因爲沒有簡單的算法對於這一點,我必須用蠻力方法,通過創建一個新的陣列時,通過以前的所有子陣列循環檢查重複。到目前爲止,它的工作。

相關問題