diff options
| author | Abigail <abigail@abigail.be> | 2021-10-25 18:58:00 +0200 |
|---|---|---|
| committer | Abigail <abigail@abigail.be> | 2021-10-25 18:58:00 +0200 |
| commit | 1ef7e3e41c765b9c0d1c4fef3683d685494dbc29 (patch) | |
| tree | 4bd2d85c380a08c6d5c10ec00655446258a21384 | |
| parent | 82be0eb30df9c7d10749f4f75cd13a50437781a3 (diff) | |
| download | perlweeklychallenge-club-1ef7e3e41c765b9c0d1c4fef3683d685494dbc29.tar.gz perlweeklychallenge-club-1ef7e3e41c765b9c0d1c4fef3683d685494dbc29.tar.bz2 perlweeklychallenge-club-1ef7e3e41c765b9c0d1c4fef3683d685494dbc29.zip | |
Node.js solutions for week 136
| -rw-r--r-- | challenge-136/abigail/README.md | 2 | ||||
| -rw-r--r-- | challenge-136/abigail/node/ch-1.js | 37 | ||||
| -rw-r--r-- | challenge-136/abigail/node/ch-2.js | 21 |
3 files changed, 60 insertions, 0 deletions
diff --git a/challenge-136/abigail/README.md b/challenge-136/abigail/README.md index 436e6a57e4..06e1bd7918 100644 --- a/challenge-136/abigail/README.md +++ b/challenge-136/abigail/README.md @@ -6,6 +6,7 @@ * [Bash](bash/ch-1.sh) * [C](c/ch-1.c) * [Lua](lua/ch-1.lua) +* [Node.js](node/ch-1.js) * [Perl](perl/ch-1.pl) ## Part 2 @@ -13,4 +14,5 @@ * [AWK](awk/ch-2.awk) * [C](c/ch-2.c) * [Lua](lua/ch-2.lua) +* [Node.js](node/ch-2.js) * [Perl](perl/ch-2.pl) diff --git a/challenge-136/abigail/node/ch-1.js b/challenge-136/abigail/node/ch-1.js new file mode 100644 index 0000000000..08331ea39f --- /dev/null +++ b/challenge-136/abigail/node/ch-1.js @@ -0,0 +1,37 @@ +#!/usr/local/bin/node + +// +// See ../README.md +// + +// +// Run as: node ch-1.js < input-file +// + +// +// Find the GCD, using Euclids algorithm +// (https://en.wikipedia.org/wiki/Euclidean_algorithm#Implementations) +// +function gcd (a, b) { + while (b > 0) { + [a, b] = [b, a % b] + } + return (a) +} + +// +// Precalculate the powers of 2. We're losing precision around 2^53 +// +let power_of_2 = {}; +let power = 1; +for (let i = 1; i < 53; i ++) { + power *= 2; + power_of_2 [power] = 1; +} + + require ('readline') +. createInterface ({input: process . stdin}) +. on ('line', line => { + let [m, n] = line . trim () . split (' ') . map (x => +x) + console . log (power_of_2 [gcd (m, n)] || 0) +}) diff --git a/challenge-136/abigail/node/ch-2.js b/challenge-136/abigail/node/ch-2.js new file mode 100644 index 0000000000..7d6c4538fb --- /dev/null +++ b/challenge-136/abigail/node/ch-2.js @@ -0,0 +1,21 @@ +#!/usr/local/bin/node + +// +// See ../README.md +// + +// +// Run as: node ch-2.js < input-file +// + +function count (target, this_fib, prev_fib) { + return target < this_fib ? 0 + : target == this_fib ? 1 + : count (target - this_fib, this_fib + prev_fib, this_fib) + + count (target, this_fib + prev_fib, this_fib) +} + + + require ('readline') +. createInterface ({input: process . stdin}) +. on ('line', line => console . log (count (+line, 1, 1))) |
