张延森 4 anni fa
parent
commit
0518eb195a
1 ha cambiato i file con 36 aggiunte e 27 eliminazioni
  1. 36
    27
      src/util/FootballPrice.js

+ 36
- 27
src/util/FootballPrice.js Vedi File

@@ -34,43 +34,52 @@ function GetAllParts (noteList, passDict) {
34 34
     passDict.level8,
35 35
   ]
36 36
 
37
-  // 总投注场次, 比如选了 4 场
38
-  const noteLength = noteList.length
39
-
40 37
   // 整理数据
38
+  // [a, b, c, d] => [[a], [b1, b2], [c1, c2], [d]] == [A, B, C, D]
41 39
   const noteArr = noteList.map(x => x.detailList.map(y => ({ ...x, detail: y })))
42 40
 
43
-  debugger
44
-
45 41
   // 从投注场次中, 选择过关场次组合
46 42
   // 比如投注4场比赛, 过关方式为3串4
47
-  // 这个步骤确定了场次的组合方式
48
-  const noCompact = combination(noteArr, passDict.unitNum)
49
-
50
-  // 场次组合完成, 下面需要算出每种场次的 3串4 的方式
51
-  // 比如场次 A,B,C 或者 A,B,D 三场, 每种如何组成 3 串 4
52
-  // 这个步骤确定了每个场次组合方式的投注组合方式
53
-  const all = noCompact.map(list => {
54
-    return passArr.map((pass, inx) => {
55
-      if (!pass) return undefined
56
-
57
-      // level1 的 inx 是 0, 但是实际上场次要求是 1
58
-      return combination(list, inx + 1)
59
-    }).filter(Boolean)
60
-  }).reduce((acc, each) => {
61
-    const crossSubItem = each.map(x => x.map(y => descartes(...y)))
62
-    const foo = crossSubItem.map(x => descartes(...x))
63
-    const cross = descartes(...foo)
64
-
43
+  // [A, B, C, D] =>
44
+  // [[A, B, C],
45
+  //  [A, B, D],
46
+  //  [A, C, D],
47
+  //  [B, C, D]]
48
+  const composeNote = combination(noteArr, passDict.unitNum)
49
+
50
+  // 拆分场次组合
51
+  const disposeNote = composeNote.reduce((acc, note) => {
52
+    // [A, B, C] =>
53
+    //  [a, b1, c1],
54
+    //  [a, b1, c2],
55
+    //  [a, b2, c1],
56
+    //  [a, b2, c2]
57
+    const unpack = descartes(...note)
65 58
     return [
66 59
       ...acc,
67
-      cross
60
+      ...unpack
68 61
     ]
69 62
   }, [])
70 63
 
71
-  // 把所有场次的组合方式展平
72
-  const result = all.reduce((acc, list) => ([...acc, ...list]), [])
73
-  return result
64
+  // 组合过关场景
65
+  const allParts = disposeNote.map(noteGrp => {
66
+    // 比如 3串4 = 3个2串1 + 1个3串1
67
+    // [a, b, c] =>
68
+    // [[a, b],
69
+    //  [a, c],
70
+    //  [b, c],
71
+    //  [a, b, c]]
72
+    return passArr.map((passNum, inx) => {
73
+      // 当前关卡不需要场次
74
+      if (!passNum) return undefined
75
+      
76
+      const requreNum = inx + 1
77
+      return combination(noteGrp, requreNum)
78
+    }).filter(Boolean).reduce((acc, grp) => ([...acc, ...grp]), [])
79
+  })
80
+
81
+  const sum = allParts.reduce((s, x) => s + x.length, 0)
82
+  return { sum, allParts }
74 83
 }
75 84
 
76 85
 // 遍历模拟比赛获取最大, 最小奖金