ADDED 残局文料/lua_lib/算机_基统_Windows_件系_小件_读.lua Index: 残局文料/lua_lib/算机_基统_Windows_件系_小件_读.lua ================================================================== --- /dev/null +++ 残局文料/lua_lib/算机_基统_Windows_件系_小件_读.lua ADDED 残局文料/lua_lib/算机_程语_月_基类_数_位算.lua Index: 残局文料/lua_lib/算机_程语_月_基类_数_位算.lua ================================================================== --- /dev/null +++ 残局文料/lua_lib/算机_程语_月_基类_数_位算.lua @@ -0,0 +1,15 @@ +local bit = bit +local d = {} +-- 和与或 +--~ 左数 +--~ 右数 +function d.位和(o1, o2) + return bit.band(o1, o2) + end +-- 左移与右移 +--~ 数 +--~ 右移几位 +function d.位右移(o1, o2) + return bit.rshift(o1, o2) + end +return d ADDED 残局文料/lua_lib/算机_程语_月_基类_数_基.lua Index: 残局文料/lua_lib/算机_程语_月_基类_数_基.lua ================================================================== --- /dev/null +++ 残局文料/lua_lib/算机_程语_月_基类_数_基.lua @@ -0,0 +1,24 @@ +local d = {} +-- 加减 +--~ 左加数 +--~ 右加数 +function d.加法(o1, o2) + return o1 + o2 + end +--~ 左减数 +--~ 右减数 +function d.减法(o1, o2) + return o1 - o2 + end +-- 乘除 +--~ 左乘数 +--~ 右乘数 +function d.乘法(o1, o2) + return o1 * o2 + end +--~ 左除数 +--~ 右除数 +function d.除法(o1, o2) + return o1 / o2 + end +return d ADDED 残局文料/lua_lib/算机_程语_月_基类_数_基算.lua Index: 残局文料/lua_lib/算机_程语_月_基类_数_基算.lua ================================================================== --- /dev/null +++ 残局文料/lua_lib/算机_程语_月_基类_数_基算.lua @@ -0,0 +1,24 @@ +local d = {} +-- 加减 +--~ 左加数 +--~ 右加数 +function d.加法(o1, o2) + return o1 + o2 + end +--~ 左减数 +--~ 右减数 +function d.减法(o1, o2) + return o1 - o2 + end +-- 乘除 +--~ 左乘数 +--~ 右乘数 +function d.乘法(o1, o2) + return o1 * o2 + end +--~ 左除数 +--~ 右除数 +function d.除法(o1, o2) + return o1 / o2 + end +return d ADDED 残局文料/lua_lib/算机_程语_月_基类_文_前缀.lua Index: 残局文料/lua_lib/算机_程语_月_基类_文_前缀.lua ================================================================== --- /dev/null +++ 残局文料/lua_lib/算机_程语_月_基类_文_前缀.lua @@ -0,0 +1,17 @@ +local string = string +local d = {} +-- 加与删 +--~ 文 +--~ 前缀 +function d.加前缀(o1, o2) + return (o2 or "") .. o1 + end +-- 全筛 +--~ 文 +--~ 前缀 +function d.全筛前缀(o1, o2) + if string.sub(o1, 1, #o2) == o2 then + return o1 + end + end +return d ADDED 残局文料/lua_lib/算机_程语_月_基类_文_后缀.lua Index: 残局文料/lua_lib/算机_程语_月_基类_文_后缀.lua ================================================================== --- /dev/null +++ 残局文料/lua_lib/算机_程语_月_基类_文_后缀.lua @@ -0,0 +1,17 @@ +local string = string +local d = {} +-- 加与删 +--~ 文 +--~ 后缀 +function d.加后缀(o1, o2) + return o1 .. (o2 or "") + end +-- 全筛 +--~ 文 +--~ 后缀 +function d.全筛后缀(o1, o2) + if string.sub(o1, -#o2) == o2 then + return o1 + end + end +return d ADDED 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_历排.lua Index: 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_历排.lua ================================================================== --- /dev/null +++ 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_历排.lua ADDED 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_基类_文_取全.lua Index: 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_基类_文_取全.lua ================================================================== --- /dev/null +++ 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_基类_文_取全.lua @@ -0,0 +1,16 @@ +local d = {} +-- 启 +--~ 文 +--~ 历文的能 +--~ 入参2 +--~ 入参3 +function d.历文(o1, o2, o3, o4) + local k1_0 + --~ 集排 + k1_0 = {} + for o5 in o2(o1, o3, o4) do + k1_0[#k1_0 + 1] = o5 + end + return k1_0 + end +return d ADDED 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_基类_表_对_取一.lua Index: 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_基类_表_对_取一.lua ================================================================== --- /dev/null +++ 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_基类_表_对_取一.lua @@ -0,0 +1,57 @@ +local d = {} +-- 启 +--~ 对 +--~ 能 +function d.历对(o1_0, o1) + local k1, k2 + for o2, o3 in pairs(o1_0) do + --~ 键 + --~ 值 + k1, k2 = d.模(k1, k2, o2, o3, o1) + end + return k1, k2 + end +-- 模 +--~ 键 +--~ 值 +--~ 对中键 +--~ 对中值 +--~ 能 +function d.模(o1, o2, o3, o4, o5) + if o1 == nil then + return o3, o4 + elseif o5(o1, o2, o3, o4) then + return o3, o4 + else + return o1, o2 + end + end +-- 最短 +--~ 最短键 +--~ 值 +--~ 键 +--~ 值 +function d._筛最短键(o1, o2, o3, o4) + if #o1 > #o3 then + return true + end + end +--~ 对 +function d.筛最短键(o1_0) + return d.历对(o1_0, d._筛最短键) + end +-- 最大 +--~ 键 +--~ 最大值 +--~ 键 +--~ 值 +function d._筛最大值(o1, o2, o3, o4) + if o2 < o4 then + return true + end + end +--~ 对 +function d.筛最大值(o1_0) + return d.历对(o1_0, d._筛最大值) + end +return d ADDED 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_基类_表_对_取全.lua Index: 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_基类_表_对_取全.lua ================================================================== --- /dev/null +++ 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_基类_表_对_取全.lua @@ -0,0 +1,23 @@ +local d = {} +-- 启 +--~ 对 +--~ 能 +--~ 入参3 +function d.历对(o1_0, o1, o2) + local k1, k2 + local k1_0 + --~ 对 + k1_0 = {} + for o3, o4 in pairs(o1_0) do + --~ 键 + --~ 值 + k1, k2 = o1(o3, o4, o2) + if k1 then + k1_0[k1] = k2 + else + end + end + return k1_0 + end + +return d ADDED 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_基类_表_排.lua Index: 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_基类_表_排.lua ================================================================== --- /dev/null +++ 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_基类_表_排.lua @@ -0,0 +1,17 @@ +local d = {} +-- 遍历取全和遍历取一 +--~ 排 +--~ 办排中值的能 +--~ 入参2 +--~ 入参3 +--~ 入参4 +function d.历排(o1_0, o1, o2, o3, o4) + local k1_0 + --~ 集排 + k1_0 = {} + for o5 = 1, #o1_0 do + k1_0[#k1_0 + 1] = o1(o1_0[o5], o2, o3, o4) + end + return k1_0 + end +return d ADDED 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_基类_表_排_取一.lua Index: 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_基类_表_排_取一.lua ================================================================== --- /dev/null +++ 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_基类_表_排_取一.lua @@ -0,0 +1,37 @@ +local d = {} +-- 启 +--~ 排 +--~ 能 +function d.历排(o1_0, o1) + local k1 + for o2 = 1, #o1_0 do + --~ 值 + k1 = d.模(k1, o1_0[o2], o1) + end + return k1 + end +-- 模 +--~ 值 +--~ 排中值 +function d.模(o1, o2, o3) + if o1 == nil then + return o2 + elseif o3(o1, o2) then + return o2 + else + return o1 + end + end +-- 最短 +--~ 最短文 +--~ 值 +function d._筛最短文(o1, o2) + if #o1 > #o2 then + return true + end + end +--~ 排 +function d.筛最短文(o1_0) + return d.历排(o1_0, d._筛最短文) + end +return d ADDED 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_基类_表_排_取全.lua Index: 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_基类_表_排_取全.lua ================================================================== --- /dev/null +++ 残局文料/lua_lib/算机_程语_月_基类_能_传能_历_基类_表_排_取全.lua @@ -0,0 +1,17 @@ +local d = {} +-- 启 +--~ 排 +--~ 办排中值的能 +--~ 入参2 +--~ 入参3 +--~ 入参4 +function d.历排(o1_0, o1, o2, o3, o4) + local k1_0 + --~ 集排 + k1_0 = {} + for o5 = 1, #o1_0 do + k1_0[#k1_0 + 1] = o1(o1_0[o5], o2, o3, o4) + end + return k1_0 + end +return d ADDED 残局文料/lua_lib/算机_程语_月_基类_能_传能_基类.lua Index: 残局文料/lua_lib/算机_程语_月_基类_能_传能_基类.lua ================================================================== --- /dev/null +++ 残局文料/lua_lib/算机_程语_月_基类_能_传能_基类.lua @@ -0,0 +1,13 @@ +local d = {} +-- 启 +--~ 值 +--~ 值类 +--~ 办值的能 +function d.操类(o1, o2, o3) + if type(o1) == o2 then + return o3(o1) + else + return o1 + end + end +return d ADDED 残局文料/lua_lib/算机_程语_月_基类_能_返参.lua Index: 残局文料/lua_lib/算机_程语_月_基类_能_返参.lua ================================================================== --- /dev/null +++ 残局文料/lua_lib/算机_程语_月_基类_能_返参.lua @@ -0,0 +1,8 @@ +local d = {} +-- 数量 +--~ 入参1 +--~ 入参2 +function d.二参(o1, o2) + return o1, o2 + end +return d ADDED 残局文料/lua_lib/算机_程语_月_基类_能_返还.lua Index: 残局文料/lua_lib/算机_程语_月_基类_能_返还.lua ================================================================== --- /dev/null +++ 残局文料/lua_lib/算机_程语_月_基类_能_返还.lua @@ -0,0 +1,8 @@ +local d = {} +-- 数量 +--~ 入参1 +--~ 入参2 +function d.二参(o1, o2) + return o1, o2 + end +return d ADDED 残局文料/lua_lib/算机_程语_月_基类_表_对.lua Index: 残局文料/lua_lib/算机_程语_月_基类_表_对.lua ================================================================== --- /dev/null +++ 残局文料/lua_lib/算机_程语_月_基类_表_对.lua @@ -0,0 +1,17 @@ +local 字集库 = require("u8_to_a") +local 返参库 = require(字集库.u8_to_a("算机_程语_月_基类_能_返参")) +local 历对库 = require(字集库.u8_to_a("算机_程语_月_基类_能_传能_历_基类_表_对_取全")) +local d = {} +-- 连对 +--~ 对 +--~ 对 +function d.连两对(o1_0, o2_0) + local k1_0 + --~ 合对 + k1_0 = 历对库.历对(o1_0, 返参库.二参) + for o1, o2 in pairs(o2_0) do + k1_0[o1] = o2 + end + return k1_0 + end +return d Index: 残局文料/残局荐名.lua ================================================================== --- 残局文料/残局荐名.lua +++ 残局文料/残局荐名.lua @@ -1,63 +1,43 @@ package.path = [[.\lua_lib\?.lua;]] .. package.path package.cpath = [[.\lua_lib\?.dll;]] .. package.cpath local 字集码互转库 = require("u8_to_a") +local 字集库 = require("u8_to_a") local u8 = 字集码互转库.u8_to_a local f = require(u8("常用库")) local 字段名对 = require(u8("字段名")) local 简文件库 = require("lfs") local 简数据库库 = require("lsqlite3") +local 基算库 = require(字集库.u8_to_a("算机_程语_月_基类_数_基算")) +local 位算库 = require(字集库.u8_to_a("算机_程语_月_基类_数_位算")) +local 前缀库 = require(字集库.u8_to_a("算机_程语_月_基类_文_前缀")) +local 后缀库 = require(字集库.u8_to_a("算机_程语_月_基类_文_后缀")) +local 历排库 = require(字集库.u8_to_a("算机_程语_月_基类_能_传能_历_基类_表_排_取全")) +local 历对库 = require(字集库.u8_to_a("算机_程语_月_基类_能_传能_历_基类_表_对_取全")) +local 历文库 = require(字集库.u8_to_a("算机_程语_月_基类_能_传能_历_基类_文_取全")) +local 历排取一库 = require(字集库.u8_to_a("算机_程语_月_基类_能_传能_历_基类_表_排_取一")) +local 基类库 = require(字集库.u8_to_a("算机_程语_月_基类_能_传能_基类")) +local 历对取一库 = require(字集库.u8_to_a("算机_程语_月_基类_能_传能_历_基类_表_对_取一")) +local 筛卡库 = require(字集库.u8_to_a("游戏王_YGOPro_残局_卡_全筛_有效果卡")) +local 对库 = require(字集库.u8_to_a("算机_程语_月_基类_表_对")) local d = {} -do - local TYPE_SPELL = 0x2 - local TYPE_TRAP = 0x4 - local TYPE_EFFECT = 0x20 - local TYPE_PENDULUM = 0x1000000 - local 有效果卡的类排 = { - TYPE_SPELL - , TYPE_TRAP - , TYPE_EFFECT - } - local 无效果灵摆怪兽排 = { - 28363749 --火蛋白石头龙头领 - , 19474136 --曼陀林草龙 - , 17390179 --闪光之骑士 - , 83980492 --铜锣龙 - } - --~ 卡对 - function d.筛有效果卡(o1_4) - for o1 = 1, #有效果卡的类排 do - if bit.band(有效果卡的类排[o1], o1_4.type) == 0 then - else - return o1_4 - end - end - if bit.band(TYPE_PENDULUM, o1_4.type) == 0 then - else - if 无效果灵摆怪兽排[o1_4.id] then - else - return o1_4 - end - end - end - end --~ 各文件的卡对排 function d.筛有效果卡_一维(o1_0) - return f.历排(o1_0, d.筛有效果卡) + return 历排库.历排(o1_0, 筛卡库.筛有效果卡) end --~ 各文件的卡编排 function d.取卡对_一维(o1_0) - return f.历排(o1_0, d.取卡对) + return 历排库.历排(o1_0, d.取卡对) end --~ 卡编 function d.取卡对(o1) local k1_0, k2_0 --~ 卡文对 k1_0 = d.取卡文(o1) --~ 卡数据对 k2_0 = d.取卡数据(o1) - return f.连两对(k1_0, k2_0) + return 对库.连两对(k1_0, k2_0) end --~ 卡编 function d.取卡文(o1) for o1_4 in 数据库:nrows("select * from texts where id = " .. o1) do return o1_4 @@ -71,21 +51,21 @@ end --~ 文 function d.局筛卡编(o1) local k1_0 --~ 卡编排 - k1_0 = f.历文(o1, string.gmatch, "[^\n]+") - k1_0 = f.历排(k1_0, string.match, "Debug%.AddCard.+") - return f.历排(k1_0, string.match, "[0-9]+") + k1_0 = 历文库.历文(o1, string.gmatch, "[^\n]+") + k1_0 = 历排库.历排(k1_0, string.match, "Debug%.AddCard.+") + return 历排库.历排(k1_0, string.match, "[0-9]+") end --~ 文 function d.局筛则数(o1) local k1 local k1_0 --~ 则数排 - k1_0 = f.历文(o1, string.gmatch, "[^\n]+") - k1_0 = f.历排(k1_0, f.全筛前缀, "Debug.ReloadFieldBegin") + k1_0 = 历文库.历文(o1, string.gmatch, "[^\n]+") + k1_0 = 历排库.历排(k1_0, 前缀库.全筛前缀, "Debug.ReloadFieldBegin") --~ 则数 k1 = string.match(k1_0[1], "[0-9]") return k1 or 3 end --~ 卡对排 @@ -101,25 +81,20 @@ return k1 else return "请便" end end +--~ 卡对排 function d.荐卡名(o1_0) local k1_0 --~ 卡名排 - k1_0 = d.取卡名排(o1_0) - return f.历排取一(k1_0, f.筛排中最短文) - end ---~ 卡对排 -function d.取卡名排(o1_0) - local k1_0 - --~ 卡名排 - k1_0 = {} - for o1 = 1, #o1_0 do - k1_0[o1] = o1_0[o1].name - end - return k1_0 + k1_0 = 历排库.历排(o1_0, d.取卡名) + return 历排取一库.筛最短文(k1_0) + end +--~ 卡对 +function d.取卡名(o1_0) + return o1_0.name end --~ 卡对排 function d.取字段对(o1_0) local k1, k2, k3, k4 local k1_0 @@ -126,44 +101,46 @@ --~ 字段对 k1_0 = {} for o1 = 1, #o1_0 do --~ 字段数 k1 = f.to_uint64(o1_0[o1].setcode) - if k1 > 0xffffFFFFffff then - k1 = k1 - 1 - elseif k1 < 1 then - else - for o2 = 1, 11112222 do - if k1 < 1 then - break - else - --~ 大字段号 - k2 = f.位和(k1, 0xffff) - k1 = f.位右移(k1, f.乘法(4, 4)) - --~ 字段名 - k3 = 字段名对[tonumber(k2)] - if k3 then - if k1_0[k3] then - k1_0[k3] = f.加法(k1_0[k3], 1) - else - k1_0[k3] = 1 - end - if k2 > 0xfff then - --~ 小字段号 - k4 = f.位和(k2, 0xfff) - k3 = 字段名对[tonumber(k4)] - if k3 then - if k1_0[k3] then - k1_0[k3] = f.加法(k1_0[k3], 1) - else - k1_0[k3] = 1 + if k1 < 1 then + else + if k1 > 0xffffFFFFffff then + k1 = k1 - 1 + else + for o2 = 1, 11112222 do + if k1 < 1 then + break + else + --~ 大字段号 + k2 = 位算库.位和(k1, 0xffff) + k1 = 位算库.位右移(k1, 基算库.乘法(4, 4)) + --~ 字段名 + k3 = 字段名对[tonumber(k2)] + if k3 then + if k1_0[k3] then + k1_0[k3] = 基算库.加法(k1_0[k3], 1) + else + k1_0[k3] = 1 + end + if k2 > 0xfff then + --~ 小字段号 + k4 = 位算库.位和(k2, 0xfff) + k3 = 字段名对[tonumber(k4)] + if k3 then + if k1_0[k3] then + k1_0[k3] = 基算库.加法(k1_0[k3], 1) + else + k1_0[k3] = 1 + end + else end else end else end - else end end end end end @@ -174,49 +151,50 @@ local k1 local k1_0 --~ 字段对 k1_0 = d.取字段对(o1_0) --~ 最大的字段名数量 - _, k1 = f.历对取一(k1_0, f.筛对中最大值) + _, k1 = 历对取一库.筛最大值(k1_0) --~ 最高频字段名对 - k2_0 = f.历对(k1_0, f.全等筛对中值, k1) - return f.历对取一(k2_0, f.筛对中最短键) + k2_0 = 历对库.历对(k1_0, f.全等筛对中值, k1) + return 历对取一库.筛最短键(k2_0) end --~ 目对 function d.残局荐名(o1_0) local k1_0, k2_0, k3_0, k4_0, k5_0, k6_0, k7_0, k8_0 --~ 文件名排 - k1_0 = f.历文(o1_0.文件目, 简文件库.dir) - k1_0 = f.历排(k1_0, f.全筛后缀, ".lua") + k1_0 = 历文库.历文(o1_0.文件目, 简文件库.dir) + k1_0 = 历排库.历排(k1_0, 后缀库.全筛后缀, ".lua") --~ 文件排 - k2_0 = f.历排(k1_0, f.全筛后缀, ".lua") + k2_0 = 历排库.历排(k1_0, 后缀库.全筛后缀, ".lua") for o1 = 1, #k2_0 do - k2_0[o1] = f.加前缀(k2_0[o1], o1_0.文件目) + k2_0[o1] = 前缀库.加前缀(k2_0[o1], o1_0.文件目) k2_0[o1] = f.读文件(k2_0[o1]) k2_0[o1] = string.gsub(k2_0[o1], "%-%-" .. "%[(=*)%[" .. ".-" .. "%]%1%]", "") k2_0[o1] = string.gsub(k2_0[o1], "%-%-" .. "[^\n]*", "") end --~ 则数排 - k3_0 = f.历排(k2_0, d.局筛则数) + k3_0 = 历排库.历排(k2_0, d.局筛则数) --~ 各文件的卡编排 - k4_0 = f.历排(k2_0, d.局筛卡编) + k4_0 = 历排库.历排(k2_0, d.局筛卡编) + --~ 卡片库 _G.数据库 = 简数据库库.open(o1_0.数据库路) --~ 各文件的卡对排 - k5_0 = f.历排(k4_0, d.取卡对_一维) + k5_0 = 历排库.历排(k4_0, d.取卡对_一维) --~ 有效果卡的卡对排 - k6_0 = f.历排(k5_0, d.筛有效果卡_一维) + k6_0 = 历排库.历排(k5_0, d.筛有效果卡_一维) --~ 有效果卡的张数排 - k7_0 = f.历排(k6_0, table.maxn) + k7_0 = 历排库.历排(k6_0, table.maxn) --~ 荐名排 - k8_0 = f.历排(k6_0, d.荐名) + k8_0 = 历排库.历排(k6_0, d.荐名) for o1 = 1, #k1_0 do - print(字集码互转库.a_to_u8(k1_0[o1]), k3_0[o1], k7_0[o1], k8_0[o1]) + print(字集库.a_to_u8(k1_0[o1]), k3_0[o1], k7_0[o1], k8_0[o1]) end end d.目对 = { ["文件目"] = "../single/" , ["数据库路"] = [[D:\install\YGOPro\cards.cdb]] } for o1, o2 in pairs(d.目对) do - d.目对[o1] = f.操类(o2, "string", u8) + d.目对[o1] = 基类库.操类(o2, "string", 字集库.u8_to_a) end d.残局荐名(d.目对) ADDED 残局文料/游戏王_YGOPro_残局_卡_全筛_有效果卡.lua Index: 残局文料/游戏王_YGOPro_残局_卡_全筛_有效果卡.lua ================================================================== --- /dev/null +++ 残局文料/游戏王_YGOPro_残局_卡_全筛_有效果卡.lua @@ -0,0 +1,35 @@ +local 字集库 = require("u8_to_a") +local 位算库 = require(字集库.u8_to_a("算机_程语_月_基类_数_位算")) +local d = {} +local TYPE_SPELL = 0x2 +local TYPE_TRAP = 0x4 +local TYPE_EFFECT = 0x20 +local TYPE_PENDULUM = 0x1000000 +local 有效果卡的类排 = { +TYPE_SPELL +, TYPE_TRAP +, TYPE_EFFECT +} +local 无效果灵摆怪兽排 = { + 28363749 --火蛋白石头龙头领 + , 19474136 --曼陀林草龙 + , 17390179 --闪光之骑士 + , 83980492 --铜锣龙 + } +--~ 卡对 +function d.筛有效果卡(o1_4) + for o1 = 1, #有效果卡的类排 do + if 位算库.位和(有效果卡的类排[o1], o1_4.type) == 0 then + else + return o1_4 + end + end + if 位算库.位和(TYPE_PENDULUM, o1_4.type) == 0 then + else + if 无效果灵摆怪兽排[o1_4.id] then + else + return o1_4 + end + end + end +return d