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