AtCoderScoreHider

AtCoder(beta.atcoder.jp)の日本語版の配点を全て隠します。

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==UserScript==
// @name           AtCoderScoreHider
// @namespace  https://github.com/task4233
// @version        1.1.0
// @description  AtCoder(beta.atcoder.jp)の日本語版の配点を全て隠します。
// @author         task4233 Mister
// @grant           none
// @license         MIT
// @include         /^https?://atcoder\.jp\/contests\/*
// ==/UserScript==

// ---------------------------------------------------------------------------------------------
// 変更したい場合はここをいじってください
var display_score = '???';//            点数の代わりに置換される文字列
var display_last_status = true;//     過去の提出コードの点数を表示するか否か
var problem_page = true;//           問題ページで表示するか否か
var top_page = true;//                  トップページで表示するか否か
var source_code_page = true;//    ソースコードページで表示するか否か
var submitted_list_page = true;//   提出コード一覧ページで表示するか否か
// ---------------------------------------------------------------------------------------------

// -------------------------
// variables
// -------------------------
var i;
// 点数表示取得(問題ページ)
var problem_page_scores=document.querySelectorAll('#task-statement > span > span > p > var');
// 点数表示取得(トップページ)
var top_page_scores=document.querySelectorAll('#contest-statement > span > span > .table.table-responsible.table-striped.table-bordered > tbody > tr > td');
// 点数表示取得(ソースコードページ)
var submitted_page_scores=document.querySelectorAll('.panel.panel-default.panel-submission > .table.table-bordered.table-striped > tbody > tr > .text-center');
// 点数表示取得(提出コード一覧ページ)
var submitted_list_page_scores=document.querySelectorAll('.panel-submission > .table-responsive > table > tbody > tr > td');
// 提出コード一覧ページの状態取得
var submitted_list_page_status=document.querySelectorAll('#main-container > .row > .nav-pills >.active > a');
if (submitted_list_page_status.length > 0) submitted_list_page_status = submitted_list_page_status[0].innerText;
// errrors
var errors = ['WJ', 'RE', 'TLE', 'MLE', 'CE', 'OLE', 'QLE'];
var privates = ['自分の提出', 'My Submissions']
var your_name = document.querySelectorAll('.navbar-collapse > .navbar-right > li > a');
if (your_name.length > 0) your_name = your_name[1].innerText.split(' ')[1];
// lambdas
let hasError = (str) => {
  return (errors.indexOf(str) >= 0);
}
let isAC = (str) => {
   return (str == 'AC');
}
let isYou = (str) => {
  return (str == your_name);
}
let isPrivatePage = (str) => {
  return (privates.indexOf(str) >= 0);
}

// ------------------------
// main
// ------------------------


if (problem_page && problem_page_scores.length>0){
  for(i=0;i<2;++i){
    problem_page_scores[i].innerText=display_score;
  }
}

if (top_page && top_page_scores.length > 0){
  for(i=1;i<top_page_scores.length;i+=2){
    top_page_scores[i].innerText = display_score;
  }
}
if (source_code_page && submitted_page_scores.length > 0){
  submitted_page_scores[4].innerText = display_score;
}

if (submitted_list_page && submitted_list_page_scores.length > 0){
  for(i=4;i<submitted_list_page_scores.length; i+=10) {
    var status = submitted_list_page_scores[i + 2].innerText;
    var submitted_user = submitted_list_page_scores[i - 2].innerText.split(' ')[0];
    if (isPrivatePage(submitted_list_page_status)) {
      if (!isAC(status) || (!display_last_status && i > 10)) {
        submitted_list_page_scores[i].innerText = display_score;
      }
    } else {
      if (!isAC(status) || !isYou(submitted_user) || (!display_last_status && i > 10)) {
        submitted_list_page_scores[i].innerText = display_score;
      }
    }
    if(hasError(status)) {
        i -= 2;
    }
  }
}