From 402d16b3f11fbad6a8ce3fd4096c42a8e20807a2 Mon Sep 17 00:00:00 2001 From: smrook Date: Sat, 2 Feb 2019 23:35:46 -0800 Subject: [PATCH 1/3] Fixing issue #114 --- lib/commands/submit.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/commands/submit.js b/lib/commands/submit.js index 7376598b..56f5ed04 100644 --- a/lib/commands/submit.js +++ b/lib/commands/submit.js @@ -76,7 +76,7 @@ cmd.handler = function(argv) { let ratio = 0.0; for (let score of scores) { - if (parseFloat(score[0]) > myRuntime) + if (parseFloat(score[0]) >= myRuntime) ratio += parseFloat(score[1]); } From 2e6aa646ee562939181dd466c5466023d2a3528e Mon Sep 17 00:00:00 2001 From: smrook Date: Sat, 2 Feb 2019 23:36:47 -0800 Subject: [PATCH 2/3] Fixing issue #156 --- lib/plugins/leetcode.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/plugins/leetcode.js b/lib/plugins/leetcode.js index 0ce3a66e..6624f6d5 100644 --- a/lib/plugins/leetcode.js +++ b/lib/plugins/leetcode.js @@ -336,7 +336,7 @@ plugin.getSubmission = function(submission, cb) { let re = body.match(/submissionCode:\s('[^']*')/); if (re) submission.code = eval(re[1]); - re = body.match(/distribution_formatted:\s('[^']+')/); + re = body.match(/runtimeDistributionFormatted:\s('[^']+')/); if (re) submission.distributionChart = JSON.parse(eval(re[1])); return cb(null, submission); }); From bd4a4bc8b3442779fbcb983dd4a92b1ffdff8fbe Mon Sep 17 00:00:00 2001 From: smrook Date: Mon, 4 Feb 2019 23:37:24 -0800 Subject: [PATCH 3/3] Refactor runtime and memory percentile logic for fixing issue #114 and #156 --- lib/commands/submit.js | 25 +++++++++---------------- lib/plugins/leetcode.js | 10 +++++++--- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/lib/commands/submit.js b/lib/commands/submit.js index 56f5ed04..e9db9c44 100644 --- a/lib/commands/submit.js +++ b/lib/commands/submit.js @@ -66,23 +66,16 @@ cmd.handler = function(argv) { if (result.ok) { session.updateStat('ac', 1); session.updateStat('ac.set', problem.fid); - core.getSubmission({id: result.id}, function(e, submission) { - if (e || !submission || !submission.distributionChart) - return log.warn('Failed to get submission beat ratio.'); - - const lang = submission.distributionChart.lang; - const scores = submission.distributionChart.distribution; - const myRuntime = parseFloat(result.runtime); - - let ratio = 0.0; - for (let score of scores) { - if (parseFloat(score[0]) >= myRuntime) - ratio += parseFloat(score[1]); - } - + if (result.runtime_percentile) printLine(result, 'Your runtime beats %d %% of %s submissions', - ratio.toFixed(2), lang); - }); + result.runtime_percentile.toFixed(2), result.lang); + else + return log.warn('Failed to get runtime percentile.'); + if (result.memory && result.memory_percentile) + printLine(result, 'Your memory usage beats %d %% of %s submissions (%s)', + result.memory_percentile.toFixed(2), result.lang, result.memory); + else + return log.warn('Failed to get memory percentile.'); } else { printResult(result, 'error'); printResult(result, 'testcase'); diff --git a/lib/plugins/leetcode.js b/lib/plugins/leetcode.js index 6624f6d5..47c330c0 100644 --- a/lib/plugins/leetcode.js +++ b/lib/plugins/leetcode.js @@ -242,9 +242,13 @@ function verifyResult(task, queue, cb) { function formatResult(result) { const x = { - ok: result.run_success, - answer: result.code_answer || '', - runtime: result.status_runtime || '', + ok: result.run_success, + answer: result.code_answer || '', + lang: result.lang, + runtime: result.status_runtime || '', + runtime_percentile: result.runtime_percentile || '', + memory: result.status_memory || '', + memory_percentile: result.memory_percentile || '', state: h.statusToName(result.status_code), testcase: util.inspect(result.input || result.last_testcase || ''), passed: result.total_correct || 0,