0
0
test/note/node-openbox-fix/opener.js

108 lines
3.1 KiB
JavaScript

"use strict";
const process = require("process");
const fs = require("fs");
const path = require("path");
const readline = require("readline");
const md5_module = require("./md5.js");
const args = process.argv.slice(2);
if (args.length < 4) {
console.log("openbox.js <输入文件> <读取起点> <读取长度> <输出文件>");
process.exit(0);
}
const file_path = args[0];
const output_file_path = args[3];
const start = args[1];
const step = args[2];
if (!fs.existsSync(file_path)) {
console.log(`不存在的输入文件: ${file_path}`);
process.exit(0);
}
async function cqdMain() {
const target = [
"Zeb DNGMCFSXQCRH@nan",
"Iwn<Zo@nan",
"U>7D3Ol7uWKIfTC@XJ联队",
"Nisha HWJHJINPEPBB@nan",
"Rick QUJTCGUVGHIJ@nan",
"Muifa DDQVUJKRHPFF@nan",
"F=ma 9P8mcPnWs1YGE4J@樱花庄",
"<αβ>-02pjt42k@ReturnVoid",
"X]u$D[@涵虚",
"飞雪PSODKKXWP@涵虚",
"m@fAIgFUL",
"光Yvxf2hGRv1Vf@fAIgFUL",
"Pd%DGm8LH@Splay",
"Garakuta tKjEzvOfSnnJCb@Squall",
"Regulus VynkvDehqnzlqQX@Squall",
"光YLqKf5rv9EU9lnc@Squall",
"x8v rbl6@Asunder",
"<input><br>ce0Y2rz@powerless",
"Momo #L9GHU8F@Arcadia",
"aIarLKNq1noXvbv@新纪元",
"① =CHFpOe@新纪元",
"CtC7gL9JNpvNpOl@新纪元",
"天依 'i[8S`Aw@LuoTianyi",
"HQWWJYUHIGAVNP@霛雲",
"vRuH:z@耗子尾汁",
"咲恋 ZPSFFQXQ@公主连结",
"大油包 #PXDHVJAT@暗黑突击",
"史莱德 #XPMTVPKY@暗黑突击",
"癌细胞 Qgu35DIL[Q8us/3@TigerStar",
"gnHHXmi@TigerStar",
"wt(zEe]T@TigerStar",
"JDHYM8TC8BZEKCN@云剑",
"`I!.lf@紫微垣",
];
const run_prefix = "!test!\n\n{ply}\n\n{tgt}";
const fileStream = fs.createReadStream(file_path);
const rl = readline.createInterface({
input: fileStream,
crlfDelay: Infinity,
});
var ln = 0;
var stamp = 0;
var sm;
var cnt;
var scr;
for await (const line of rl) {
ln += 1;
if (ln >= start && stamp == 0) {
stamp = 1;
}
if (stamp - 1 >= step) {
break;
}
if (stamp > 0) {
stamp += 1;
if (line.trim() === "") {
continue;
}
sm = 0;
cnt = 0;
console.log(`${line}:`);
for (let cur of target) {
if (cur == line) {
continue;
}
cnt += 1;
const runs = run_prefix.replace(/\{ply\}/g, line).replace(/\{tgt\}/g, cur);
const result = await md5_module.win_rate(runs, 2 * 100);
sm += result.win_count / 2;
console.log(`${cur} ${result.win_count / 2}%`);
}
scr = (sm / cnt).toFixed(2);
console.log(`平均胜率: ${scr}%\n`);
if (scr > 39) {
fs.appendFileSync(output_file_path, `${line} ${scr}\n`);
}
}
}
}
cqdMain();