Compare commits

...

9 Commits

Author SHA1 Message Date
26133c3c00
fffff 2024-05-09 00:46:17 +08:00
83b163b685
whyyy 2024-05-09 00:41:41 +08:00
177ff4692f
gg 2024-05-09 00:40:51 +08:00
1c33a9a33b
gg 2024-05-09 00:37:56 +08:00
e1851377d9
aaa 2024-05-09 00:35:16 +08:00
62791962c2
好好好 2024-05-09 00:34:44 +08:00
0d1d815847
大为震撼 2024-05-09 00:34:07 +08:00
463169a13a
改个名? 2024-05-09 00:30:41 +08:00
bec856e9fc
试试这样呢 2024-05-09 00:27:48 +08:00
6 changed files with 14266 additions and 18991 deletions

1
ica-rs/plugins/md5/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
input.txt

View File

@ -0,0 +1,150 @@
const md5_module = require("./md5.js");
/**
*
* source_plr ,
*/
type FightResult = {
message: string;
source_plr: string;
target_plr: string;
affect: string | number;
};
/**
*
*/
type WinRate = {
round: number;
win_count: number;
};
/**
*
*/
type WinRateResult = {
souce: number;
raw_data: WinRate[];
};
/**
*
* bool, true , false
*/
type WinRateCallback = (run_round: number, win_count: number) => boolean;
/**
*
*/
type Score = {
round: number;
score: number;
};
/**
*
*/
type ScoreResult = {
source: number;
raw_data: Score[];
};
/**
*
* bool, true , false
*/
type ScoreCallback = (run_round: number, score: number) => boolean;
/**
*
* @param names
* @returns
*/
async function fight(names: string): Promise<FightResult> {
// 检查一下输入是否合法
// 比如里面有没有 !test!
if (names.startsWith("!test!")) {
throw new Error("你怎么在对战输入里加 !test!(恼)\n${names}");
}
return await md5_module.fight(names);
}
/**
* /
* @param names
* @returns
*/
function test_check(names: string): boolean {
const have_test = names.startsWith("!test!");
return have_test;
}
/**
*
* @param names
* @param round
* @returns
*/
async function win_rate(names: string, round: number): Promise<WinRateResult> {
// 检查 round 是否合法
if (round <= 0) {
throw new Error("round 必须大于 0");
}
if (!test_check(names)) {
throw new Error("你怎么在胜率输入里丢了 !test!(恼)\n${names}");
}
return await md5_module.win_rate(names, round);
}
/**
*
* @param names
* @param callback
* @returns
*/
async function win_rate_callback(
names: string,
callback: WinRateCallback,
): Promise<WinRateResult> {
if (!test_check(names)) {
throw new Error("你怎么在胜率输入里丢了 !test!(恼)\n${names}");
}
return await md5_module.win_rate_callback(names, callback);
}
async function score(names: string, round: number): Promise<ScoreResult> {
// 检查 round 是否合法
if (round <= 0) {
throw new Error("round 必须大于 0");
}
if (!test_check(names)) {
throw new Error("你怎么在分数输入里丢了 !test!(恼)\n${names}");
}
return await md5_module.score(names, round);
}
async function score_callback(
names: string,
callback: ScoreCallback,
): Promise<ScoreResult> {
if (!test_check(names)) {
throw new Error("你怎么在分数输入里加 !test!(恼)\n${names}");
}
return await md5_module.score_callback(names, callback);
}
export {
FightResult,
WinRate,
WinRateResult,
WinRateCallback,
Score,
ScoreResult,
ScoreCallback,
fight,
win_rate,
win_rate_callback,
score,
score_callback,
};

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,14 @@
const fs = require('fs');
const path = require('path');
const fight = require('./md5-api.ts').fight;
// 从文件的 ./input.txt 中读取输入
// 然后丢给 md5.js
async function main() {
const input = fs.readFileSync(path.join(__dirname, 'input.txt'), 'utf8');
const result = await fight(input);
console.log(result);
}
main();

View File

@ -43,7 +43,7 @@ def on_ica_message(msg: IcaNewMessage, client: IcaClient) -> None:
with open(root_path / "md5" / "input.txt", "w") as f: with open(root_path / "md5" / "input.txt", "w") as f:
f.write(names) f.write(names)
# 执行 node md5.js # 执行 node md5.js
runner_path = root_path / "md5" / "md5.js" runner_path = root_path / "md5" / "runs.ts"
input_path = root_path / "md5" / "input.txt" input_path = root_path / "md5" / "input.txt"
result = subprocess.run( result = subprocess.run(
["node", runner_path.absolute(), input_path.absolute()], ["node", runner_path.absolute(), input_path.absolute()],