您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
AtCoderで提出した解答がいくつのテストケースでACか, WAか...が一目でわかるように表示する
当前为
// ==UserScript== // @name AtCoder Submission Status // @name:en AtCoder Submission Status // @namespace https://github.com/9sako6/atcoder-userscripts // @version 1.0 // @description AtCoderで提出した解答がいくつのテストケースでACか, WAか...が一目でわかるように表示する // @description:en This script shows submission's statuses clearly! // @author 9sako6 // @match https://atcoder.jp/contests/*/submissions/* // @exclude https://atcoder.jp/contests/*/submissions/me // @require http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js // @license MIT // @supportURL https://github.com/9sako6/atcoder-userscripts/issues // ==/UserScript== function makeTable() { 'use strict'; /** * count each status */ const statusPanel = document.getElementsByClassName('panel-default')[2]; const cases = $(statusPanel).find('tr'); const statusCodes = []; let countAll = -1; let counter = {}; // initialize counter statusCodes.forEach((val) => { counter[val] = 0; }); cases.each((_, elem)=>{ let texts = $(elem).find('td'); texts.each((i, tdElem)=>{ if (i == 1) { // if tdElem is status code const statusCode = $($(tdElem).find('span')[0]).text(); if (!statusCodes.includes(statusCode)){ statusCodes.push(statusCode); } (counter[statusCode] === undefined ? counter[statusCode] = 1 : counter[statusCode] += 1); } }); countAll += 1; }); statusCodes.sort(); /** * make result table */ // a wrapper element of table let wrapElem = document.createElement('div'); wrapElem.id = 'added-result-panel'; wrapElem.classList.add('panel', 'panel-default'); var newContent = document.createTextNode(''); wrapElem.appendChild(newContent); statusPanel.parentNode.insertBefore(wrapElem, statusPanel); // make fake table // to let trElem = '<div style="width: 100%; display: flex;">'; const codeNum = statusCodes.length; statusCodes.forEach((status, i) => { const ACflag = (status === 'AC' ? true : false); trElem += ` <div style=" width: ${100/codeNum}%; text-align: center; border: 0.1px solid #ddd; border-top: 0; border-bottom: 0; border-right: 0; ${i == 0 ? "border-left: 0;" : ""}"> <div style=" line-height: 2em; border: 0.1px solid #ddd; border-top: 0; border-right: 0; border-left: 0; border-bottom: 1;"> <span class="label label-${ACflag ? 'success' : 'warning'}" aria-hidden="true" data-toggle="tooltip" data-placement="top" style="text-align: center; line-height: 2em;" >${status}</span> </div> <div style="line-height: 1.8em;">${counter[status]}/${countAll}</div> </div>`; }); trElem += '</div>'; const resultTable = `<div class="table table-bordered table-striped th-center"> ${trElem} </div>`; $('#added-result-panel').append(resultTable); } (function() { try { makeTable(); }catch(e){ console.error(); } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址