1: -- 不用这套方案了
2: --~ 卡对排
3: function d.荐名(o1_0)
4: local k1
5: --~ 名
6: k1 = d.荐字段名(o1_0)
7: if k1 then
8: else
9: k1 = d.荐卡名(o1_0)
10: end
11: if k1 then
12: return k1
13: else
14: return "请便"
15: end
16: end
17: --~ 卡对排
18: function d.荐卡名(o1_0)
19: local k1_0
20: --~ 卡名排
21: k1_0 = 历排库.历排(o1_0, d.取卡名)
22: return 历排取一库.筛最短文(k1_0)
23: end
24: --~ 卡对
25: function d.取卡名(o1_0)
26: return o1_0.name
27: end
28: --~ 卡对排
29: function d.取字段对(o1_0)
30: local k1, k2, k3, k4
31: local k1_0
32: --~ 字段对
33: k1_0 = {}
34: for o1 = 1, #o1_0 do
35: --~ 字段数
36: k1 = 字节库.to_uint64(o1_0[o1].setcode)
37: if k1 < 1 then
38: else
39: if k1 > 0xffffFFFFffff then
40: k1 = k1 - 1
41: else
42: for o2 = 1, 11112222 do
43: if k1 < 1 then
44: break
45: else
46: --~ 大字段号
47: k2 = 位算库.位和(k1, 0xffff)
48: k1 = 位算库.位右移(k1, 基算库.乘法(4, 4))
49: --~ 字段名
50: k3 = 字段名对[tonumber(k2)]
51: if k3 then
52: if k1_0[k3] then
53: k1_0[k3] = 基算库.加法(k1_0[k3], 1)
54: else
55: k1_0[k3] = 1
56: end
57: if k2 > 0xfff then
58: --~ 小字段号
59: k4 = 位算库.位和(k2, 0xfff)
60: k3 = 字段名对[tonumber(k4)]
61: if k3 then
62: if k1_0[k3] then
63: k1_0[k3] = 基算库.加法(k1_0[k3], 1)
64: else
65: k1_0[k3] = 1
66: end
67: else
68: end
69: else
70: end
71: else
72: end
73: end
74: end
75: end
76: end
77: end
78: return k1_0
79: end
80: --~ 卡对排
81: function d.荐字段名(o1_0)
82: local k1
83: local k1_0
84: --~ 字段对
85: k1_0 = d.取字段对(o1_0)
86: --~ 最大的字段名数量
87: _, k1 = 历对取一库.筛最大值(k1_0)
88: --~ 最高频字段名对
89: k2_0 = 历对库.历对(k1_0, 历对库.全等筛值, k1)
90: return 历对取一库.筛最短键(k2_0)
91: end