Lines of
残局文料/lua_lib/常用库.lua
from check-in dfc13a8abd
that are changed by the sequence of edits moving toward
check-in a4c0b3bd26:
1: local s = {}
2: local 简文件库 = require("lfs")
3: local ffi = require("ffi")
4: --~ 排
5: --~ 办排中值的能
6: --~ 入参2
7: --~ 入参3
8: --~ 入参4
dfc13a8abd 2024-02-13 9: function s.历排(u1_0, o1, o2, o3, o4)
10: local k1_0
11: --~ 集排
12: k1_0 = {}
13: for o5 = 1, #u1_0 do
dfc13a8abd 2024-02-13 14: k1_0[#k1_0 + 1] = o1(u1_0[o5], o2, o3, o4)
15: end
16: return k1_0
17: end
18: --~ 文
19: --~ 历文的能
20: --~ 入参2
21: --~ 入参3
dfc13a8abd 2024-02-13 22: function s.历文(o1, o2, o3, o4)
23: local k1_0
24: --~ 集排
25: k1_0 = {}
dfc13a8abd 2024-02-13 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: --~ 能
dfc13a8abd 2024-02-13 33: function s.历排取一(u1_0, o1)
34: local k1
dfc13a8abd 2024-02-13 35: for o2 = 1, #u1_0 do
36: --~ 值
dfc13a8abd 2024-02-13 37: k1 = s.历排取一的模(k1, u1_0[o2], o1)
38: end
39: return k1
40: end
41: --~ 值
42: --~ 排中值
dfc13a8abd 2024-02-13 43: function s.历排取一的模(o1, o2, o3)
dfc13a8abd 2024-02-13 44: if o1 == nil then
dfc13a8abd 2024-02-13 45: return o2
dfc13a8abd 2024-02-13 46: elseif o3(o1, o2) then
dfc13a8abd 2024-02-13 47: return o2
48: else
dfc13a8abd 2024-02-13 49: return o1
50: end
51: end
52: --~ 对
53: --~ 能
dfc13a8abd 2024-02-13 54: function s.历对取一(u1_0, o1)
55: local k1, k2
dfc13a8abd 2024-02-13 56: for o2, u2_0 in pairs(u1_0) do
57: --~ 键
58: --~ 值
dfc13a8abd 2024-02-13 59: k1, k2 = s.历对取一的模(k1, k2, o2, u2_0, o1)
60: end
61: return k1, k2
62: end
dfc13a8abd 2024-02-13 63: function s.历对取一的模(o1, o2, o3, o4, o5)
dfc13a8abd 2024-02-13 64: if o1 == nil then
65: return o3, o4
dfc13a8abd 2024-02-13 66: elseif o5(o1, o2, o3, o4) then
67: return o3, o4
68: else
dfc13a8abd 2024-02-13 69: return o1, o2
70: end
71: end
dfc13a8abd 2024-02-13 72: function s.历对(u1_0, o1, o2)
73: local k1
74: local k1_0, k2_0
75: --~ 对
76: k1_0 = {}
77: for o3, u2_0 in pairs(u1_0) do
78: --~ 键
79: --~ 值
dfc13a8abd 2024-02-13 80: k1, k2_0 = o1(o3, u2_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: --~ 办值的能
dfc13a8abd 2024-02-13 91: function s.操类(u1_0, o1, o2)
dfc13a8abd 2024-02-13 92: if type(u1_0) == o1 then
dfc13a8abd 2024-02-13 93: return o2(u1_0)
94: else
95: return u1_0
96: end
97: end
98: --~ 排中文
99: --~ 入参2
100: --~ 入参3
101: --~ 入参4
dfc13a8abd 2024-02-13 102: function s.全筛文(o1, o2, o3, o4)
dfc13a8abd 2024-02-13 103: print(4)
dfc13a8abd 2024-02-13 104: if string.find(o1, o2, o3, o4) then
dfc13a8abd 2024-02-13 105: return o1
dfc13a8abd 2024-02-13 106: end
dfc13a8abd 2024-02-13 107: end
dfc13a8abd 2024-02-13 108: --~ 文
dfc13a8abd 2024-02-13 109: --~ 前缀
dfc13a8abd 2024-02-13 110: function s.加前缀(o1, o2)
dfc13a8abd 2024-02-13 111: return (o2 or "") .. o1
dfc13a8abd 2024-02-13 112: end
dfc13a8abd 2024-02-13 113: --~ 文
dfc13a8abd 2024-02-13 114: --~ 后缀
dfc13a8abd 2024-02-13 115: function s.加后缀(o1, o2)
dfc13a8abd 2024-02-13 116: return o1 .. (o2 or "")
dfc13a8abd 2024-02-13 117: end
dfc13a8abd 2024-02-13 118: --~ 令
dfc13a8abd 2024-02-13 119: function s.办令(o1)
dfc13a8abd 2024-02-13 120: print(o1)
dfc13a8abd 2024-02-13 121: os.execute(o1)
dfc13a8abd 2024-02-13 122: end
dfc13a8abd 2024-02-13 123: --~ 文
dfc13a8abd 2024-02-13 124: --~ 前缀
dfc13a8abd 2024-02-13 125: function s.全筛前缀(o1, o2)
dfc13a8abd 2024-02-13 126: if string.sub(o1, 1, #o2) == o2 then
dfc13a8abd 2024-02-13 127: return o1
dfc13a8abd 2024-02-13 128: end
dfc13a8abd 2024-02-13 129: end
dfc13a8abd 2024-02-13 130: --~ 文
dfc13a8abd 2024-02-13 131: --~ 后缀
dfc13a8abd 2024-02-13 132: function s.全筛后缀(o1, o2)
dfc13a8abd 2024-02-13 133: if string.sub(o1, -#o2) == o2 then
dfc13a8abd 2024-02-13 134: return o1
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.文件类)
dfc13a8abd 2024-02-13 143: for o1 = 1, #k1_9 do
dfc13a8abd 2024-02-13 144: k1_9[o1] = s.加前缀(k1_9[o1], u1_0.文件目)
dfc13a8abd 2024-02-13 145: k1_9[o1] = s.加前缀(k1_9[o1], [["]])
dfc13a8abd 2024-02-13 146: k1_9[o1] = s.加后缀(k1_9[o1], [["]])
dfc13a8abd 2024-02-13 147: k1_9[o1] = s.加前缀(k1_9[o1], u1_0.令行前缀)
dfc13a8abd 2024-02-13 148: s.办令(k1_9[o1])
149: end
150: end
151: --~ 文件路
152: --~ 式
dfc13a8abd 2024-02-13 153: function s.读文件(o1, o2)
154: local k1
155: local k1_3
156: --~ 文件
dfc13a8abd 2024-02-13 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: --~ 常量排
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: --~ 式
dfc13a8abd 2024-02-13 173: function s.写文件(o1, o2, o3)
174: local k1_3
175: --~ 文件
dfc13a8abd 2024-02-13 176: k1_3 = io.open(o2, o3 or "w")
dfc13a8abd 2024-02-13 177: k1_3:write(o1)
178: k1_3:flush()
179: k1_3:close()
180: end
181: --~ 文
dfc13a8abd 2024-02-13 182: function s.删左右空白(o1)
dfc13a8abd 2024-02-13 183: o1 = string.gsub(o1, "^%s+", "")
dfc13a8abd 2024-02-13 184: return string.gsub(o1, "%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: --~ 右加数
dfc13a8abd 2024-02-13 213: function s.加法(o1, o2)
dfc13a8abd 2024-02-13 214: return o1 + o2
215: end
216: --~ 左减数
217: --~ 右减数
dfc13a8abd 2024-02-13 218: function s.减法(o1, o2)
dfc13a8abd 2024-02-13 219: return o1 - o2
220: end
221: --~ 左乘数
222: --~ 右乘数
dfc13a8abd 2024-02-13 223: function s.乘法(o1, o2)
dfc13a8abd 2024-02-13 224: return o1 * o2
225: end
226: --~ 左除数
227: --~ 右除数
dfc13a8abd 2024-02-13 228: function s.除法(o1, o2)
dfc13a8abd 2024-02-13 229: return o1 / o2
230: end
231: --~ 左数
232: --~ 右数
dfc13a8abd 2024-02-13 233: function s.位和(o1, o2)
dfc13a8abd 2024-02-13 234: return bit.band(o1, o2)
235: end
236: --~ 数
237: --~ 右移几位
dfc13a8abd 2024-02-13 238: function s.位右移(o1, o2)
dfc13a8abd 2024-02-13 239: return bit.rshift(o1, o2)
240: end
241: --~ 键
242: --~ 最大值
243: --~ 键
244: --~ 值
dfc13a8abd 2024-02-13 245: function s.筛对中最大值(o1, o2, o3, o4)
dfc13a8abd 2024-02-13 246: if o2 < o4 then
247: return true
248: end
249: end
250: --~ 最短键
251: --~ 值
252: --~ 键
253: --~ 值
dfc13a8abd 2024-02-13 254: function s.筛对中最短键(o1, o2, o3, o4)
dfc13a8abd 2024-02-13 255: if #o1 > #o3 then
256: return true
257: end
258: end
259: --~ 最短文
260: --~ 值
dfc13a8abd 2024-02-13 261: function s.筛排中最短文(o1, o2)
dfc13a8abd 2024-02-13 262: if #o1 > #o2 then
263: return true
264: end
265: end
266: --~ 内数
dfc13a8abd 2024-02-13 267: function s.to_uint64(o1)
dfc13a8abd 2024-02-13 268: local uint64_pointer = ffi.new("uint64_t[1]", o1)
269: return uint64_pointer[0]
270: end
271: --~ 键
272: --~ 值
273: --~ 要找的值
dfc13a8abd 2024-02-13 274: function s.全等筛对中值(o1, o2, o3)
dfc13a8abd 2024-02-13 275: if o2 == o3 then
dfc13a8abd 2024-02-13 276: return o1, o2
277: else
278: end
279: end
280: return s