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
|
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, o2)
local k1
local k1_0, k2_0
--~ 对
k1_0 = {}
for o3, o2_0 in pairs(o1_0) do
|
|
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
|
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
76
77
|
end
--~ 排
--~ 能
function d.历排取一(o1_0, o1)
local k1
for o2 = 1, #o1_0 do
--~ 值
k1 = d.历排取一的模(k1, o1_0[o2], o1)
end
return k1
end
--~ 值
--~ 排中值
function d.历排取一的模(o1, o2, o3)
if o1 == nil then
return o2
elseif o3(o1, o2) then
return o2
else
return o1
end
end
--~ 对
--~ 能
function d.历对取一(o1_0, o1)
local k1, k2
for o2, o2_0 in pairs(o1_0) do
--~ 键
--~ 值
k1, k2 = d.历对取一的模(k1, k2, o2, o2_0, o1)
end
return k1, k2
end
function d.历对取一的模(o1, o2, o3, o4, o5)
if o1 == nil then
return o3, o4
elseif o5(o1, o2, o3, o4) then
return o3, o4
else
return o1, o2
end
end
function d.历对(o1_0, o1, o2)
local k1
local k1_0, k2_0
--~ 对
k1_0 = {}
for o3, o2_0 in pairs(o1_0) do
|
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
|
return bit.rshift(o1, o2)
end
--~ 键
--~ 最大值
--~ 键
--~ 值
function d.筛对中最大值(o1, o2, o3, o4)
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
|
<
<
|
|
<
<
<
>
<
<
|
|
<
<
<
<
|
|
<
<
|
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
|
return bit.rshift(o1, o2)
end
--~ 键
--~ 最大值
--~ 键
--~ 值
function d.筛对中最大值(o1, o2, o3, o4)
if o2 < o4 then
return true
end
end
--~ 最短键
--~ 值
--~ 键
--~ 值
function d.筛对中最短键(o1, o2, o3, o4)
if #o1 > #o3 then
return true
end
end
--~ 最短文
--~ 值
function d.筛排中最短文(o1, o2)
if #o1 > #o2 then
return true
end
end
--~ 内数
function d.to_uint64(o1)
local uint64_pointer = ffi.new("uint64_t[1]", o1)
return uint64_pointer[0]
end
|