core: adjust problem difficulty weight

This commit is contained in:
undefined committed 2022-03-08 03:54:56 +08:00
1 parent 9e86d47d19
commit 1173407598
2 files changed
+7 -5

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "hydrooj", "name": "hydrooj",
"version": "3.8.0", "version": "3.8.1",
"bin": "bin/hydrooj.js", "bin": "bin/hydrooj.js",
"main": "src/loader", "main": "src/loader",
"module": "src/loader", "module": "src/loader",
+6 -4
View File
@@ -22,6 +22,8 @@ interface RpDef {
base: number; base: number;
} }
const { log, max, min } = Math;
export const RpTypes: Record<string, RpDef> = { export const RpTypes: Record<string, RpDef> = {
problem: { problem: {
async run(domainIds, udict, report) { async run(domainIds, udict, report) {
@@ -38,13 +40,13 @@ export const RpTypes: Record<string, RpDef> = {
}, },
); );
const difficulty = +pdoc.difficulty || difficultyAlgorithm(pdoc.nSubmit, pdoc.nAccept) || 5; const difficulty = +pdoc.difficulty || difficultyAlgorithm(pdoc.nSubmit, pdoc.nAccept) || 5;
const p = difficulty / (Math.log(pdoc.nAccept) + 1) / 100; const p = difficulty / 100;
let psdoc; let psdoc;
while (psdoc = await cursor.next()) { while (psdoc = await cursor.next()) {
udict[psdoc.uid] += Math.max(psdoc.score, 100) * p; udict[psdoc.uid] += min(psdoc.score, 100) * p;
} }
} }
for (const key in udict) udict[key] = Math.max(0, Math.log(udict[key]) / Math.log(1.03)); for (const key in udict) udict[key] = max(0, min(udict[key], log(udict[key]) / log(1.03)));
}, },
hidden: false, hidden: false,
base: 0, base: 0,
@@ -75,7 +77,7 @@ export const RpTypes: Record<string, RpDef> = {
}, },
}); });
} }
for (const key in udict) udict[key] = udict[key] / 2 - 725; for (const key in udict) udict[key] = udict[key] / 2 - 700;
}, },
hidden: false, hidden: false,
base: 1500, base: 1500,