4 ms·
further ungolfed: for (const huser of document.querySelectorAll(".hnuser")) { const s = huser.innerText; const p = 2; const canvas = document.cre
by CapsAdmin 5y ago
further ungolfed:
for (const huser of document.querySelectorAll(".hnuser")) {
const s = huser.innerText;
const p = 2;
const canvas = document.createElement("canvas");
const context = canvas.getContext("2d");
canvas.width = p * 7;
canvas.height = p * 7;
huser.parentElement.prepend(canvas);
{
const xorshift32 = (n) => {
n ^= n << 13;
n ^= n >>> 17;
n ^= n << 5;
return n;
};
const seedSteps = 28;
let seed = 1;
for (let i = seedSteps + s.length; i >= seedSteps; i--) {
seed = xorshift32(seed);
seed += s.charCodeAt(i - seedSteps);
}
context.fillStyle =
"#" + ((seed >> 8) & 0xffffff).toString(16).padStart(0, 6);
for (let i = seedSteps - 1; i > 0; i--) {
// continue the seed
seed = xorshift32(seed);
const X = i & 3;
const Y = i >> 2;
if (seed >>> (seedSteps + 1) > (X * X) / 3 + Y / 2) {
context.fillRect(p * 3 + p * X, p * Y, p, p);
context.fillRect(p * 3 - p * X, p * Y, p, p);
}
}
}
}
- efraim 5y agoYou're off by one in the initial seed step. Change for (let i = seedSteps + s.length; i >= seedSteps; i--) to for (let i = seedSteps + s.length - 1; i >= seedSteps; i--) The original is not using the for loop in the usual way so i starts off one smaller than expected.