Skip to content

Instantly share code, notes, and snippets.

@jimhigson
Last active August 28, 2024 16:38
Show Gist options
  • Save jimhigson/facbec767f083309d88a3599f0300314 to your computer and use it in GitHub Desktop.
Save jimhigson/facbec767f083309d88a3599f0300314 to your computer and use it in GitHub Desktop.
a popping node script
import {setTimeout} from 'node:timers/promises';
const root2 = 2**0.5;
const circ = (r) => {
const rr = Math.round(r);
const buff = Array(rr*2+1).fill(0).map(_ => (Array(rr*2+1).fill(' ')));
const drawLimit = rr / root2;
for (let d1 = 0; d1 < drawLimit; d1++) {
const d2 = ~~((r**2 - d1**2) ** 0.5);
buff[rr-d1][rr-d2] =
buff[rr+d2][rr+d1] = '/';
buff[rr-d1][rr+d2] =
buff[rr+d2][rr-d1] = '\\';
buff[rr+d1][rr-d2] =
buff[rr+d1][rr+d2] = '|';
buff[rr-d2][rr-d1] =
buff[rr-d2][rr+d1] = '_';
}
console.log(`r=${r}`);
console.log(buff.map( buffLine => `${buffLine.map(c => `${c}${c}`).join('')}` ).join('\n'))
}
const maxSize = Math.floor(Math.min(process.stdout.columns / 4 -1, process.stdout.rows/2 -1));
for (let r = 1.5; r < maxSize; r*=1.01) {
circ(r);
await setTimeout(16);
console.clear();
}
console.log('pop!');
@jimhigson
Copy link
Author

jimhigson commented Aug 28, 2024

run this script in node like: node circ.js

or:

curl (url from clicking Raw) | node --input-type=module

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment