From 3675e785bd1ddadcff97eb6725e1466eb1738f7a Mon Sep 17 00:00:00 2001 From: Abigail Date: Sat, 15 Jan 2022 19:59:11 +0100 Subject: Week 147: Node.js solutions --- challenge-147/abigail/node/ch-1.js | 47 ++++++++++++++++++++++++++++++++++++++ challenge-147/abigail/node/ch-2.js | 29 +++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 challenge-147/abigail/node/ch-1.js create mode 100644 challenge-147/abigail/node/ch-2.js diff --git a/challenge-147/abigail/node/ch-1.js b/challenge-147/abigail/node/ch-1.js new file mode 100644 index 0000000000..2a6c5c3764 --- /dev/null +++ b/challenge-147/abigail/node/ch-1.js @@ -0,0 +1,47 @@ +#!/usr/local/bin/node + +// +// See https://theweeklychallenge.org/blog/perl-weekly-challenge-147 +// + +// +// Run as: node ch-1.js +// + +function is_prime (p) { + if (p == 2) {return true} + if (p % 2 == 0) {return false} + for (let i = 3; i * i <= p; i += 2) { + if (p % i == 0) {return false} + } + return true +} + +let todo = [2, 3, 5, 7] +let count = 20 - todo . length + +todo . forEach (p => process . stdout . write (p . toString () + " ")) + +let pow = 10 +main: { + while (todo . length > 0) { + let new_todo = [] + for (let d = 1; d <= 9; d ++) { + for (let i = 0; i < todo . length; i ++) { + let candidate = d * pow + todo [i] + if (is_prime (candidate)) { + new_todo . push (candidate) + process . stdout . write (candidate . toString () + " ") + count -- + if (count <= 0) { + break main + } + } + } + } + todo = new_todo + pow *= 10 + } +} + +process . stdout . write ("\n") diff --git a/challenge-147/abigail/node/ch-2.js b/challenge-147/abigail/node/ch-2.js new file mode 100644 index 0000000000..e06832ee9b --- /dev/null +++ b/challenge-147/abigail/node/ch-2.js @@ -0,0 +1,29 @@ +#!/usr/local/bin/node + +// +// See https://theweeklychallenge.org/blog/perl-weekly-challenge-147 +// + +// +// Run as: node ch-2.js +// + +let pentagon = {} +let p = 0 +let n = 0 + +main: { + while (1) { + p += n + n + n + 1 + n ++ + pentagon [p] = 1 + for (let seen in pentagon) { + seen = +seen + if (seen + seen <= p && (p - seen) in pentagon && + (p - seen - seen) in pentagon) { + console . log (seen . toString () + " " + (p - seen)) + break main + } + } + } +} -- cgit