Skip to content

Instantly share code, notes, and snippets.

@rbvc8nfyv5-prog
Created December 13, 2025 00:37
Show Gist options
  • Select an option

  • Save rbvc8nfyv5-prog/06f92917724cf5b37839a886eed98c00 to your computer and use it in GitHub Desktop.

Select an option

Save rbvc8nfyv5-prog/06f92917724cf5b37839a886eed98c00 to your computer and use it in GitHub Desktop.
(function () {
try {
if (document.getElementById("painelRoleta")) return;
var track = [32,15,19,4,21,2,25,17,34,6,27,13,36,11,30,8,23,10,5,24,16,33,1,20,14,31,9,22,18,29,7,28,12,35,3,26,0];
var vermelhos = [1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36];
var terminais = {
0:[0,10,20,30],
1:[1,11,21,31],
2:[2,12,22,32],
3:[3,13,23,33],
4:[4,14,24,34],
5:[5,15,25,35],
6:[6,16,26,36],
7:[7,17,27],
8:[8,18,28],
9:[9,19,29]
};
function corNum(n){
if(n===0) return "#0f0";
return (vermelhos.indexOf(n)!==-1) ? "#e74c3c" : "#000";
}
var hist = [];
// cobertura de 1 terminal com ±1 vizinho na pista
function coverTerminalViz(t){
var map = {};
var nums = terminais[t];
for(var i=0;i<nums.length;i++){
var n = nums[i];
var idx = track.indexOf(n);
map[n] = true;
map[track[(idx-1+37)%37]] = true;
map[track[(idx+1)%37]] = true;
}
return map;
}
// melhor PAR (2 terminais) no momento, baseado nos últimos 14
function parVencedor(){
if(hist.length===0) return null;
var ult = hist.slice(-14);
var covers = [];
for(var t=0;t<10;t++) covers[t] = coverTerminalViz(t);
var bestA = null, bestB = null, bestHits = -1;
for(var a=0;a<10;a++){
for(var b=a+1;b<10;b++){
var hits = 0;
var ca = covers[a], cb = covers[b];
for(var i=0;i<ult.length;i++){
var x = ult[i];
if(ca[x] || cb[x]) hits++;
}
if(hits > bestHits){
bestHits = hits;
bestA = a;
bestB = b;
}
}
}
if(bestA===null) return null;
return {a:bestA, b:bestB};
}
/* ==== UI ==== */
var painel = document.createElement("div");
painel.id = "painelRoleta";
painel.style.cssText =
"position:fixed;inset:0;background:#111;color:#eee;font-family:monospace;z-index:999999;overflow:auto;padding:14px;";
var box = document.createElement("div");
box.style.cssText = "max-width:1100px;margin:auto;";
painel.appendChild(box);
var titulo = document.createElement("div");
titulo.textContent = "Linha do Tempo – Par vencedor (±1 vizinho)";
titulo.style.cssText = "text-align:center;font-weight:bold;margin-bottom:10px;";
box.appendChild(titulo);
var linhas = document.createElement("div");
linhas.id = "linhas";
box.appendChild(linhas);
for(var l=1;l<=5;l++){
var h = document.createElement("div");
h.id = "hist"+l;
h.style.cssText =
"border:1px solid #666;background:#222;border-radius:6px;padding:8px;margin-bottom:8px;" +
"display:flex;flex-wrap:wrap;gap:6px;justify-content:center;";
linhas.appendChild(h);
}
var botoes = document.createElement("div");
botoes.style.cssText =
"display:grid;grid-template-columns:repeat(9,1fr);gap:4px;max-width:520px;margin:12px auto;";
box.appendChild(botoes);
for(var n=0;n<=36;n++){
(function(nn){
var b = document.createElement("button");
b.textContent = nn;
b.style.cssText =
"padding:8px;background:#333;color:#eee;border:none;border-radius:4px;";
b.onclick = function(){
hist.push(nn);
if(hist.length>100) hist.shift();
render();
};
botoes.appendChild(b);
})(n);
}
var ctrl = document.createElement("div");
ctrl.style.cssText = "text-align:center;margin-top:8px;";
ctrl.innerHTML = "<button id='clr'>Clear</button> <button id='cls'>Close</button>";
box.appendChild(ctrl);
document.body.appendChild(painel);
document.getElementById("clr").onclick = function(){ hist=[]; render(); };
document.getElementById("cls").onclick = function(){ painel.remove(); };
function render(){
var pair = parVencedor();
var ca = pair ? coverTerminalViz(pair.a) : {};
var cb = pair ? coverTerminalViz(pair.b) : {};
var ult = hist.slice(-14).reverse();
for(var l=1;l<=5;l++){
var h = document.getElementById("hist"+l);
h.innerHTML = "";
for(var i=0;i<ult.length;i++){
var val = ult[i];
var wrap = document.createElement("div");
wrap.style.cssText = "display:flex;flex-direction:column;align-items:center;";
var num = document.createElement("div");
num.textContent = val;
var bg = corNum(val);
num.style.cssText =
"padding:6px 8px;border-radius:6px;font-size:20px;background:"+bg+
";color:"+(bg==="#000"?"#fff":"#000");
wrap.appendChild(num);
// embaixo do número: Tn apenas se estiver dentro do PAR vencedor (±1)
if(pair && (ca[val] || cb[val])){
var t = document.createElement("div");
t.textContent = ca[val] ? ("T"+pair.a) : ("T"+pair.b);
t.style.cssText = "font-size:12px;color:#39ff14;margin-top:2px;";
wrap.appendChild(t);
}
h.appendChild(wrap);
}
}
}
render();
} catch (e) {
alert("Erro no painel: " + (e && e.message ? e.message : e));
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment