(no title)
sunnynagam | 1 year ago
var speed = 500;
[rin, bin, gin].forEach(col => { col.valueAsNumber = 7; col.dispatchEvent(new Event('change')); col.score = 0; });
async function tryit(col, value) { col.valueAsNumber = value; col.dispatchEvent(new Event('change')); submit.click(); await new Promise(resolve => setTimeout(resolve, speed)); var res_text = result.innerText.split(/[ ()%]/)[4]; if (res_text === "Splendid!") { throw new Error("Finished - Found correct combination"); } col.score = parseInt(res_text); return col.score; }
async function binarySearch(col) { let start = 0; let end = 15; let mid = 7; let startAccuracy = await tryit(col, start); let endAccuracy = await tryit(col, end); let midAccuracy = 0;
while (true) {
mid = Math.floor((start + end) / 2);
midAccuracy = await tryit(col, mid);
if ((end - start) <= 2) {
const max = Math.max([startAccuracy, midAccuracy, endAccuracy]);
if (startAccuracy == max) await tryit(col, start);
else if (midAccuracy == max) await tryit(col, mid);
else await tryit(col, end);
return;
}
if (endAccuracy > startAccuracy) {
start = mid;
startAccuracy = midAccuracy;
} else {
end = mid;
endAccuracy = midAccuracy;
}
}
}
async function findOptimalCombination() {
for (const col of [rin, gin, bin]) {
await binarySearch(col);
}
/* rounding */
for (const col of [rin, gin, bin]) {
const mid = col.valueAsNumber;
const score = await tryit(col, mid);
const left = await tryit(col, mid - 1);
if (score >= left) {
const right = await tryit(col, mid + 1);
if (score >= right) await tryit(col, mid);
}
}
console.log("Optimization complete");
}await findOptimalCombination();
tetris11|1 year ago