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