EulerFriendDiff

    @@ -5,32 +5,34 @@ * @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; + } + } -(function(){ - 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]); - } - } + 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; + } })();
  • /*
     * @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