aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-06-15 20:22:04 +0100
committerGitHub <noreply@github.com>2021-06-15 20:22:04 +0100
commit7cffc5af03c03c15615cb5239ec05c822323bced (patch)
treeea166b4f619103c81f065a1b729408df54741e71
parent55561cd33408f541714ea6df242bcedb0126deb5 (diff)
parent97cabe50c3aff40b7d4e249f4b242db3a5c5b7fb (diff)
downloadperlweeklychallenge-club-7cffc5af03c03c15615cb5239ec05c822323bced.tar.gz
perlweeklychallenge-club-7cffc5af03c03c15615cb5239ec05c822323bced.tar.bz2
perlweeklychallenge-club-7cffc5af03c03c15615cb5239ec05c822323bced.zip
Merge pull request #4265 from stuart-little/stuart-little_117_node
1st commit on 117_node
-rwxr-xr-xchallenge-117/stuart-little/node/ch-1.js7
-rwxr-xr-xchallenge-117/stuart-little/node/ch-2.js23
2 files changed, 30 insertions, 0 deletions
diff --git a/challenge-117/stuart-little/node/ch-1.js b/challenge-117/stuart-little/node/ch-1.js
new file mode 100755
index 0000000000..aef4d7bde9
--- /dev/null
+++ b/challenge-117/stuart-little/node/ch-1.js
@@ -0,0 +1,7 @@
+#!/usr/bin/env node
+
+// run <script> <path-to-file>
+
+const fs=require('fs')
+const nrs=fs.readFileSync(process.argv[2]).toString().split("\n").map(x => parseInt(x)).filter(x => x)
+console.log((nrs.length+2)*(nrs.length+1)/2 - nrs.reduce((x,y) => x+y, 0))
diff --git a/challenge-117/stuart-little/node/ch-2.js b/challenge-117/stuart-little/node/ch-2.js
new file mode 100755
index 0000000000..64bd9d8649
--- /dev/null
+++ b/challenge-117/stuart-little/node/ch-2.js
@@ -0,0 +1,23 @@
+#!/usr/bin/env node
+
+// run <script> <number>
+
+let memo=[[''],['R','LH']]
+
+function crt(lst1, lst2) {
+ return lst1.flatMap(x => lst2.map(y => [x,y]))
+}
+
+function mkPaths(size) {
+ if (size >= memo.length) {
+ res=mkPaths(size-1).map(x => 'R' + x)
+ res=[...Array(size).keys()]
+ .reduce(
+ (lst,ix) => lst.concat(crt(mkPaths(ix), mkPaths(size-1-ix)).map(([x,y]) => 'L'+x+'H'+y)),
+ res)
+ memo.push(res)
+ }
+ return memo[size]
+}
+
+mkPaths(parseInt(process.argv[2])).forEach(x => console.log(x))