24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
|
--~ 集排
k1_0 = {}
for o3_0 in o2(o1, o1_0, o2_0) do
k1_0[#k1_0 + 1] = o3_0
end
return k1_0
end
--~ 排
--~ 能
function d.历排取一(o1_0, o1)
local k1
for o2 = 1, #o1_0 do
--~ 值
k1 = o1(k1, o1_0[o2])
end
return k1
end
--~ 对
--~ 能
function d.历对取一(o1_0, o1)
local k1, k2
for o2, o2_0 in pairs(o1_0) do
--~ 键
--~ 值
k1, k2 = o1(k1, k2, o2, o2_0)
end
return k1, k2
end
function d.历对(o1_0, o1)
function d.历对(o1_0, o1, o2)
local k1
local k1_0, k2_0
--~ 对
k1_0 = {}
for o2, o2_0 in pairs(o1_0) do
for o3, o2_0 in pairs(o1_0) do
--~ 键
--~ 值
k1, k2_0 = o1(o2, o2_0)
k1, k2_0 = o1(o3, o2_0, o2)
if k1 then
k1_0[k1] = k2_0
else
end
end
return k1_0
end
--~ 表中值
--~ 排中值
--~ 值类
--~ 办值的能
function d.操类(o1_0, o1, o2)
if type(o1_0) == o1 then
return o2(o1_0)
else
return o1_0
|
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
|
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
|
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
return bit.band(o1, o2)
end
--~ 数
--~ 右移几位
function d.位右移(o1, o2)
return bit.rshift(o1, o2)
end
--~ 键
--~ 最大值
--~ 键
--~ 对
function d.找对中最大值(o1_0)
--~ 值
function d.筛对中最大值(o1, o2, o3, o4)
local k1, k2
k2 = -math.huge
for o1, o2 in pairs(o1_0) do
if k2 < o2 then
k1, k2 = o1, o2
else
end
end
return k1, k2
end
if o2 == nil then
return o3, o4
elseif o2 < o4 then
return o3, o4
else
return o1, o2
end
end
--~ 键
--~ 最短键
--~ 键
--~ 值
function d.筛对中最短键(o1, o2, o3, o4)
if o1 == nil then
return o3, o4
elseif #o1 > #o3 then
return o3, o4
else
return o1, o2
end
end
--~ 最短文
--~ 值
function d.筛排中最短文(o1, o2)
if o1 == nil then
return o2
elseif #o1 > #o2 then
return o2
else
return o1
end
end
--~ 内数
function d.to_uint64(o1)
local uint64_pointer = ffi.new("uint64_t[1]", o1)
return uint64_pointer[0]
end
--~ 键
--~ 值
--~ 要找的值
function d.全等筛对中值(o1, o2, o3)
if o2 == o3 then
return o1, o2
else
end
end
return d
|