Help us understand the problem. What is going on with this article?

AtCoder Problemsのソートを改善した話

More than 1 year has passed since last update.

AtCoder関連サービス Advent Calendar 2018 24日目です。

Introduction

開始時間だけをキーとすると、開始時間が同じ複数コンテストがばらばらになってしまうし、問題順もうまくソートされない。[startEpochTime, contest.title, problem.title]をキーとして比較するしかないように思える。

Pull Request

https://github.com/kenkoooo/AtCoderProblems/pull/87

UserScript

以下より試せます。UserScriptだけだとどうしても/atcoder/dist/bundle.jsを読みに行ってしまうようなのですが、documentElementをいじるようにすればうまくいくっぽい。

// ==UserScript==
// @name        AtCoder Problems Sorter
// @namespace   com.cielavenir
// @description AtCoder Problems Sorter
// @include     https://kenkoooo.com/atcoder/*
// @run-at      document-start
// @version     0.0.0.1
// ==/UserScript==

(function(){
    var src='https://gistcdn.githack.com/cielavenir/8923c3437dd694f882bbe9fe2f9ec3b8/raw/067dbe108490897cd70c8cf6d543913ffb0a1968/bundle.js';
    var scr=document.createElement('script');
    scr.src=src;
    document.documentElement.appendChild(scr);
    //document.addEventListener('DOMContentLoaded',function(){
    //  var scrs=document.getElementsByTagName('script');
    //  for(var i=0;i<scrs.length;i++)if(scrs[i].src.indexOf('bundle')>=0)scrs[i].src=src;
    //});
})();

開発中は、srcにlighttpdなlocalhostを指定してました。bundle.jsはreadmeに書いてあった方法で生成しました。

参考:arc096周辺を表示した図

左:Firefox(UserScript未適用) 右:Google Chrome(UserScript適用済)

左ではコンテストの開始時間が同一のARC/ABCエントリが混ざってしまっていることがわかります。

arc096.png

余談

私、度重なる改善要求のためか、氏からブロックされているのですが、その改善要求の主なものは、今回解決したソートの問題、およびまれにAtCoderの提出を取りこぼすことがあるのの2点です。後者、気にする人は少ないかもしれませんが、ゴルファーである私には死活問題なのですよ…スクレイピングの話だからクライアントサイドで直せませんしね…

190107追記

とりあえずEducational DP ContestのAC者数が全く異なっていて、よくよく見てみたらFA者も一部間違っているということはわかった(本来の一覧)
取得が重たいからということはわかるんですが、なんとかなるまではブロックを解除してもらいたい気持ちも起こらないですね…

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away