EulerFriendDiff

  • /*
     * @title EulerFriendDiff
     * @description Project Euler の Friend 一覧(http://projecteuler.net/friends)で各ユーザーと自分との解答数の差分を表示する
     * @include http://projecteuler.net/friends
     * @license MIT License
     * @require 
     */
    (function (){
        if(!window.EulerFriendDiff){
            var trs = document.getElementsByClassName('grid')[0].getElementsByTagName('tr');
            var myScore;
            var scores  = [];
            for(var i = 1; i < trs.length; ++i){
                if(trs[i].style.height) {
                    var score = trs[i].childNodes[7].childNodes[0].innerHTML * 1;
                    scores.push(score);
                    if(trs[i].childNodes[14].childNodes[0].nodeType === 3) myScore = score;
                }
            }
    
            var title = document.createElement('th');
            title.innerHTML = "Difference";
            title.style.width = "4em";
            trs[0].appendChild(title);
            for(var i = 1; i < trs.length; ++i){
                if(trs[i].style.height) {
                    var elem = document.createElement('td');
                    var score = scores.shift();
                    var sign = score > myScore ? '+' : score < myScore ? '-' : '';
                    elem.innerHTML = sign + Math.abs(myScore - score);
                    elem.style.color = score > myScore ? 'red' : score < myScore ? 'blue' : 'green';
                    elem.style.textAlign = "center";
                    trs[i].insertBefore(elem, trs[i].childNodes[trs[i].childNodes.length-1]);
                }
            }
            window.EulerFriendDiff = true;
        }
    })();
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2013/11/11 19:53:47 - 2013-11-11
  2. 2013/11/11 19:40:16 - 2013-11-11