Lines of
残局文料/lua_lib/常用库.lua
from check-in 5b9fb5e09f
that are changed by the sequence of edits moving toward
check-in 5b69db85ea:
1: local s = {}
2: local 简文件库 = require("lfs")
3: local ffi = require("ffi")
4: --~ 排
5: --~ 办排中值的能
6: --~ 入参2
7: --~ 入参3
8: --~ 入参4
5b9fb5e09f 2024-02-13 9: function s.历排(o1_0, o1, o2, o3, o4)
10: local k1_0
11: --~ 集排
12: k1_0 = {}
5b9fb5e09f 2024-02-13 13: for o5 = 1, #o1_0 do
5b9fb5e09f 2024-02-13 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
22: function s.历文(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: --~ 能
5b9fb5e09f 2024-02-13 33: function s.历排取一(o1_0, o1)
34: local k1
5b9fb5e09f 2024-02-13 35: for o2 = 1, #o1_0 do
36: --~ 值
5b9fb5e09f 2024-02-13 37: k1 = s.历排取一的模(k1, o1_0[o2], o1)
38: end
39: return k1
40: end
41: --~ 值
42: --~ 排中值
43: function s.历排取一的模(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: --~ 能
5b9fb5e09f 2024-02-13 54: function s.历对取一(o1_0, o1)
55: local k1, k2
5b9fb5e09f 2024-02-13 56: for o2, o2_0 in pairs(o1_0) do
57: --~ 键
58: --~ 值
59: k1, k2 = s.历对取一的模(k1, k2, o2, o2_0, o1)
60: end
61: return k1, k2
62: end
63: function s.历对取一的模(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
5b9fb5e09f 2024-02-13 72: function s.历对(o1_0, o1, o2)
73: local k1
74: local k1_0, k2_0
75: --~ 对
76: k1_0 = {}
5b9fb5e09f 2024-02-13 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: --~ 办值的能
5b9fb5e09f 2024-02-13 91: function s.操类(o1_0, o1, o2)
5b9fb5e09f 2024-02-13 92: if type(o1_0) == o1 then
5b9fb5e09f 2024-02-13 93: return o2(o1_0)
94: else
5b9fb5e09f 2024-02-13 95: return o1_0
96: end
97: end
98: --~ 排中文
99: --~ 入参2
100: --~ 入参3
101: --~ 入参4
102: function s.全筛文(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: --~ 前缀
110: function s.加前缀(o1, o2)
111: return (o2 or "") .. o1
112: end
113: --~ 文
114: --~ 后缀
115: function s.加后缀(o1, o2)
116: return o1 .. (o2 or "")
117: end
118: --~ 令
119: function s.办令(o1)
120: print(o1)
121: os.execute(o1)
122: end
123: --~ 文
124: --~ 前缀
125: function s.全筛前缀(o1, o2)
126: if string.sub(o1, 1, #o2) == o2 then
127: return o1
128: end
129: end
130: --~ 文
131: --~ 后缀
132: function s.全筛后缀(o1, o2)
133: if string.sub(o1, -#o2) == o2 then
134: return o1
135: end
136: end
137: --~ 目对
5b9fb5e09f 2024-02-13 138: function s.用令行工具操文件(o1_0)
139: local k1_9
140: --~ 令行排
5b9fb5e09f 2024-02-13 141: k1_9 = s.历文(o1_0.文件目, 简文件库.dir)
5b9fb5e09f 2024-02-13 142: k1_9 = s.历排(k1_9, s.全筛后缀, o1_0.文件类)
143: for o1 = 1, #k1_9 do
5b9fb5e09f 2024-02-13 144: k1_9[o1] = s.加前缀(k1_9[o1], o1_0.文件目)
145: k1_9[o1] = s.加前缀(k1_9[o1], [["]])
146: k1_9[o1] = s.加后缀(k1_9[o1], [["]])
5b9fb5e09f 2024-02-13 147: k1_9[o1] = s.加前缀(k1_9[o1], o1_0.令行前缀)
148: s.办令(k1_9[o1])
149: end
150: end
151: --~ 文件路
152: --~ 式
153: function s.读文件(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: --~ 常量排
5b9fb5e09f 2024-02-13 165: function s.加对限(o1_0)
5b9fb5e09f 2024-02-13 166: table.insert(o1_0, 1, "local k1_0 = {}")
5b9fb5e09f 2024-02-13 167: table.insert(o1_0, "return k1_0")
5b9fb5e09f 2024-02-13 168: return table.concat(o1_0, "\n")
169: end
170: --~ 文
171: --~ 文件路
172: --~ 式
173: function s.写文件(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: --~ 文
182: function s.删左右空白(o1)
183: o1 = string.gsub(o1, "^%s+", "")
184: return string.gsub(o1, "%s+$", "")
185: end
186: --~ 对
187: --~ 对
5b9fb5e09f 2024-02-13 188: function s.连两对(o1_0, o2_0)
189: for o3_0, o4_0 in pairs(o2_0) do
5b9fb5e09f 2024-02-13 190: o1_0[o3_0] = o4_0
191: end
5b9fb5e09f 2024-02-13 192: return o1_0
193: end
194: --~ 键
195: --~ 值
5b9fb5e09f 2024-02-13 196: function s.修对类(o1_0, o2_0)
5b9fb5e09f 2024-02-13 197: if tonumber(o1_0) then
5b9fb5e09f 2024-02-13 198: return tonumber(o1_0), o2_0
199: else
5b9fb5e09f 2024-02-13 200: return o1_0, o2_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.加法(o1, o2)
214: return o1 + o2
215: end
216: --~ 左减数
217: --~ 右减数
218: function s.减法(o1, o2)
219: return o1 - o2
220: end
221: --~ 左乘数
222: --~ 右乘数
223: function s.乘法(o1, o2)
224: return o1 * o2
225: end
226: --~ 左除数
227: --~ 右除数
228: function s.除法(o1, o2)
229: return o1 / o2
230: end
231: --~ 左数
232: --~ 右数
233: function s.位和(o1, o2)
234: return bit.band(o1, o2)
235: end
236: --~ 数
237: --~ 右移几位
238: function s.位右移(o1, o2)
239: return bit.rshift(o1, o2)
240: end
241: --~ 键
242: --~ 最大值
243: --~ 键
244: --~ 值
245: function s.筛对中最大值(o1, o2, o3, o4)
246: if o2 < o4 then
247: return true
248: end
249: end
250: --~ 最短键
251: --~ 值
252: --~ 键
253: --~ 值
254: function s.筛对中最短键(o1, o2, o3, o4)
255: if #o1 > #o3 then
256: return true
257: end
258: end
259: --~ 最短文
260: --~ 值
261: function s.筛排中最短文(o1, o2)
262: if #o1 > #o2 then
263: return true
264: end
265: end
266: --~ 内数
267: function s.to_uint64(o1)
268: local uint64_pointer = ffi.new("uint64_t[1]", o1)
269: return uint64_pointer[0]
270: end
271: --~ 键
272: --~ 值
273: --~ 要找的值
274: function s.全等筛对中值(o1, o2, o3)
275: if o2 == o3 then
276: return o1, o2
277: else
278: end
279: end
280: return s