// ==UserScript==
// @name 彩色AC
// @description BSOJ和洛谷AC的都是彩色!
// @license SATA
// @version 3.0
// @match *://www.luogu.com.cn/*
// @match *://oj.bashu.com.cn/*
// @namespace https://greasyfork.org/users/1265383
// @downloadURL none
// ==/UserScript==
let c=Math.round(Math.random()*360);
function hsvToRgb(x) {
var h = x, s = 100, v =100;
s = s / 100;
v = v / 100;
var r = 0, g = 0, b = 0;
var i = parseInt((h / 60) % 6);
var f = h / 60 - i;
var p = v * (1 - s);
var q = v * (1 - f * s);
var t = v * (1 - (1 - f) * s);
switch (i) {
case 0:
r = v; g = t; b = p;
break;
case 1:
r = q; g = v; b = p;
break;
case 2:
r = p; g = v; b = t;
break;
case 3:
r = p; g = q; b = v;
break;
case 4:
r = t; g = p; b = v;
break;
case 5:
r = v; g = p; b = q;
break;
default:
break;
}
r = parseInt(r * 255.0)
g = parseInt(g * 255.0)
b = parseInt(b * 255.0)
return [r, g, b];
}
var front = [];
var back = [];
function get(now){
if(now.innerHTML=='AC'&&now.className=="status"){
if(back.includes(now.parentNode)==false){
back.push(now.parentNode);
}
}
if(now.innerHTML=='Correct'){
if(back.includes(now.parentNode)==false){
back.push(now.parentNode);
}
}
if(now.innerHTML=='\n Accepted\n '){
if(front.includes(now)==false){
front.push(now);
if(now.parentNode.parentNode.parentNode.children.length>=3){
if(front.includes(now.parentNode.parentNode.parentNode.children[2].children[1].children[0].children[0])==false){
front.push(now.parentNode.parentNode.parentNode.children[2].children[1].children[0].children[0]);
}
}
}
}
if(now.innerHTML=='\n Accepted\n'){
if(back.includes(now)==false){
back.push(now);
if(now.parentNode.children.length>=2){
if(front.includes(now.parentNode.children[1])==false){
front.push(now.parentNode.children[1]);
}
}
}
}
if(now.innerHTML==' Congratulation !'){
if(back.includes(now)==false){
back.push(now);
}
}
if(now.innerHTML=='Accepted'&&now.className=="label label-success"){
if(back.includes(now)==false){
back.push(now);
}
}
if(now.innerHTML=='\n AC\n'){
if(back.includes(now)==false){
back.push(now);
}
}
var x=now.children;
for(var i=0;i {
let a = setInterval(() =>{
c++;
if(c==360){
c=0;
}
cnt++;
if(cnt==100){
get(document);
cnt=0;
}
rep();
},5)
})();