UNPKG

@dancing-ninjas/project-euler-helper-kit

Version:

Dancing Ninjas Project Euler helpers + constrained telemetry strategies compatible with npmjs.org-only egress.

55 lines (49 loc) 1.4 kB
#!/usr/bin/env node import { isPrime, primesUpTo, nCrBig, fibonacciBig, sumDigits } from '../dist/index.js'; const args = process.argv.slice(2); const cmd = args[0]; function hr(ms) { if (ms < 1000) return `${ms.toFixed(1)}ms`; const s = ms / 1000; if (s < 60) return `${s.toFixed(2)}s`; return `${(s / 60).toFixed(2)}m`; } async function main() { if (!cmd || cmd === 'help' || cmd === '--help') { console.log(`Euler CLI (Dancing Ninjas) Usage: euler list # demo helpers euler prime <n> euler primesUpTo <n> euler fib <limit> euler nCr <n> <r> euler sumDigits <n> `); return; } const t0 = performance.now(); switch (cmd) { case 'list': console.log('Commands:', 'prime', 'primesUpTo', 'fib', 'nCr', 'sumDigits'); break; case 'prime': console.log(isPrime(BigInt(args[1]))); break; case 'primesUpTo': console.log(primesUpTo(Number(args[1]))); break; case 'fib': console.log([...fibonacciBig({ limit: BigInt(args[1]) })]); break; case 'nCr': console.log(nCrBig(BigInt(args[1]), BigInt(args[2])).toString()); break; case 'sumDigits': console.log(sumDigits(BigInt(args[1]))); break; default: console.error('Unknown command'); } console.log('Time:', hr(performance.now() - t0)); } main().catch(err => { console.error(err); process.exit(1); });