Lines of
残局文料/lua_lib/常用库.lua
from check-in 96c0a5322f
that are changed by the sequence of edits moving toward
check-in 5b9fb5e09f:
96c0a5322f 2024-02-12 1: local d = {}
2: local 简文件库 = require("lfs")
3: local ffi = require("ffi")
4: --~ 排
5: --~ 办排中值的能
6: --~ 入参2
7: --~ 入参3
8: --~ 入参4
96c0a5322f 2024-02-12 9: function d.历排(o1_0, o1, o2, o3, o4)
10: local k1_0
11: --~ 集排
12: k1_0 = {}
13: for o5 = 1, #o1_0 do
14: k1_0[#k1_0 + 1] = o1(o1_0[o5], o2, o3, o4)
15: end
16: return k1_0
17: end
18: --~ 文
19: --~ 历文的能
20: --~ 入参2
21: --~ 入参3
96c0a5322f 2024-02-12 22: function d.历文(o1, o2, o3, o4)
23: local k1_0
24: --~ 集排
25: k1_0 = {}
26: for o5 in o2(o1, o3, o4) do
27: k1_0[#k1_0 + 1] = o5
28: end
29: return k1_0
30: end
31: --~ 排
32: --~ 能
96c0a5322f 2024-02-12 33: function d.历排取一(o1_0, o1)
34: local k1
35: for o2 = 1, #o1_0 do
36: --~ 值
96c0a5322f 2024-02-12 37: k1 = d.历排取一的模(k1, o1_0[o2], o1)
38: end
39: return k1
40: end
41: --~ 值
42: --~ 排中值
96c0a5322f 2024-02-12 43: function d.历排取一的模(o1, o2, o3)
44: if o1 == nil then
45: return o2
46: elseif o3(o1, o2) then
47: return o2
48: else
49: return o1
50: end
51: end
52: --~ 对
53: --~ 能
96c0a5322f 2024-02-12 54: function d.历对取一(o1_0, o1)
55: local k1, k2
56: for o2, o2_0 in pairs(o1_0) do
57: --~ 键
58: --~ 值
96c0a5322f 2024-02-12 59: k1, k2 = d.历对取一的模(k1, k2, o2, o2_0, o1)
60: end
61: return k1, k2
62: end
96c0a5322f 2024-02-12 63: function d.历对取一的模(o1, o2, o3, o4, o5)
64: if o1 == nil then
65: return o3, o4
66: elseif o5(o1, o2, o3, o4) then
67: return o3, o4
68: else
69: return o1, o2
70: end
71: end
96c0a5322f 2024-02-12 72: function d.历对(o1_0, o1, o2)
73: local k1
74: local k1_0, k2_0
75: --~ 对
76: k1_0 = {}
77: for o3, o2_0 in pairs(o1_0) do
78: --~ 键
79: --~ 值
80: k1, k2_0 = o1(o3, o2_0, o2)
81: if k1 then
82: k1_0[k1] = k2_0
83: else
84: end
85: end
86: return k1_0
87: end
88: --~ 排中值
89: --~ 值类
90: --~ 办值的能
96c0a5322f 2024-02-12 91: function d.操类(o1_0, o1, o2)
92: if type(o1_0) == o1 then
93: return o2(o1_0)
94: else
95: return o1_0
96: end
97: end
98: --~ 排中文
99: --~ 入参2
100: --~ 入参3
101: --~ 入参4
96c0a5322f 2024-02-12 102: function d.全筛文(o1, o2, o3, o4)
103: print(4)
104: if string.find(o1, o2, o3, o4) then
105: return o1
106: end
107: end
108: --~ 文
109: --~ 前缀
96c0a5322f 2024-02-12 110: function d.加前缀(o1, o2)
111: return (o2 or "") .. o1
112: end
113: --~ 文
114: --~ 后缀
96c0a5322f 2024-02-12 115: function d.加后缀(o1, o2)
116: return o1 .. (o2 or "")
117: end
118: --~ 令
96c0a5322f 2024-02-12 119: function d.办令(o1)
120: print(o1)
121: os.execute(o1)
122: end
123: --~ 文
124: --~ 前缀
96c0a5322f 2024-02-12 125: function d.全筛前缀(o1, o2)
126: if string.sub(o1, 1, #o2) == o2 then
127: return o1
128: end
129: end
130: --~ 文
131: --~ 后缀
96c0a5322f 2024-02-12 132: function d.全筛后缀(o1, o2)
133: if string.sub(o1, -#o2) == o2 then
134: return o1
135: end
136: end
137: --~ 目对
96c0a5322f 2024-02-12 138: function d.用令行工具操文件(o1_0)
139: local k1_9
140: --~ 令行排
96c0a5322f 2024-02-12 141: k1_9 = d.历文(o1_0.文件目, 简文件库.dir)
96c0a5322f 2024-02-12 142: k1_9 = d.历排(k1_9, d.全筛后缀, o1_0.文件类)
143: for o1 = 1, #k1_9 do
96c0a5322f 2024-02-12 144: k1_9[o1] = d.加前缀(k1_9[o1], o1_0.文件目)
96c0a5322f 2024-02-12 145: k1_9[o1] = d.加前缀(k1_9[o1], [["]])
96c0a5322f 2024-02-12 146: k1_9[o1] = d.加后缀(k1_9[o1], [["]])
96c0a5322f 2024-02-12 147: k1_9[o1] = d.加前缀(k1_9[o1], o1_0.令行前缀)
96c0a5322f 2024-02-12 148: d.办令(k1_9[o1])
149: end
150: end
151: --~ 文件路
152: --~ 式
96c0a5322f 2024-02-12 153: function d.读文件(o1, o2)
154: local k1
155: local k1_3
156: --~ 文件
157: k1_3 = io.open(o1, o2 or "r")
158: --~ 文
159: k1 = k1_3:read("a")
160: k1_3:flush()
161: k1_3:close()
162: return k1
163: end
164: --~ 常量排
96c0a5322f 2024-02-12 165: function d.加对限(o1_0)
166: table.insert(o1_0, 1, "local k1_0 = {}")
167: table.insert(o1_0, "return k1_0")
168: return table.concat(o1_0, "\n")
169: end
170: --~ 文
171: --~ 文件路
172: --~ 式
96c0a5322f 2024-02-12 173: function d.写文件(o1, o2, o3)
174: local k1_3
175: --~ 文件
176: k1_3 = io.open(o2, o3 or "w")
177: k1_3:write(o1)
178: k1_3:flush()
179: k1_3:close()
180: end
181: --~ 文
96c0a5322f 2024-02-12 182: function d.删左右空白(o1)
183: o1 = string.gsub(o1, "^%s+", "")
184: return string.gsub(o1, "%s+$", "")
185: end
186: --~ 对
187: --~ 对
96c0a5322f 2024-02-12 188: function d.连两对(o1_0, o2_0)
189: for o3_0, o4_0 in pairs(o2_0) do
190: o1_0[o3_0] = o4_0
191: end
192: return o1_0
193: end
194: --~ 键
195: --~ 值
96c0a5322f 2024-02-12 196: function d.修对类(o1_0, o2_0)
197: if tonumber(o1_0) then
198: return tonumber(o1_0), o2_0
199: else
200: return o1_0, o2_0
201: end
202: end
203: do
204: --~ 加数
205: local k1 = 0
96c0a5322f 2024-02-12 206: function d.递增()
207: k1 = k1 + 1
208: return k1
209: end
210: end
211: --~ 左加数
212: --~ 右加数
96c0a5322f 2024-02-12 213: function d.加法(o1, o2)
214: return o1 + o2
215: end
216: --~ 左减数
217: --~ 右减数
96c0a5322f 2024-02-12 218: function d.减法(o1, o2)
219: return o1 - o2
220: end
221: --~ 左乘数
222: --~ 右乘数
96c0a5322f 2024-02-12 223: function d.乘法(o1, o2)
224: return o1 * o2
225: end
226: --~ 左除数
227: --~ 右除数
96c0a5322f 2024-02-12 228: function d.除法(o1, o2)
229: return o1 / o2
230: end
231: --~ 左数
232: --~ 右数
96c0a5322f 2024-02-12 233: function d.位和(o1, o2)
234: return bit.band(o1, o2)
235: end
236: --~ 数
237: --~ 右移几位
96c0a5322f 2024-02-12 238: function d.位右移(o1, o2)
239: return bit.rshift(o1, o2)
240: end
241: --~ 键
242: --~ 最大值
243: --~ 键
244: --~ 值
96c0a5322f 2024-02-12 245: function d.筛对中最大值(o1, o2, o3, o4)
246: if o2 < o4 then
247: return true
248: end
249: end
250: --~ 最短键
251: --~ 值
252: --~ 键
253: --~ 值
96c0a5322f 2024-02-12 254: function d.筛对中最短键(o1, o2, o3, o4)
255: if #o1 > #o3 then
256: return true
257: end
258: end
259: --~ 最短文
260: --~ 值
96c0a5322f 2024-02-12 261: function d.筛排中最短文(o1, o2)
262: if #o1 > #o2 then
263: return true
264: end
265: end
266: --~ 内数
96c0a5322f 2024-02-12 267: function d.to_uint64(o1)
268: local uint64_pointer = ffi.new("uint64_t[1]", o1)
269: return uint64_pointer[0]
270: end
271: --~ 键
272: --~ 值
273: --~ 要找的值
96c0a5322f 2024-02-12 274: function d.全等筛对中值(o1, o2, o3)
275: if o2 == o3 then
276: return o1, o2
277: else
278: end
279: end
96c0a5322f 2024-02-12 280: return d