aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchirvasitua <stuart-little@users.noreply.github.com>2021-06-14 14:38:46 -0400
committerchirvasitua <stuart-little@users.noreply.github.com>2021-06-14 14:38:46 -0400
commit97cabe50c3aff40b7d4e249f4b242db3a5c5b7fb (patch)
tree84ebd1031ae67458efdb14e905ae9ab7eae2917c
parentdad6bcabbefc743b091695a82fcfb92342397e38 (diff)
downloadperlweeklychallenge-club-97cabe50c3aff40b7d4e249f4b242db3a5c5b7fb.tar.gz
perlweeklychallenge-club-97cabe50c3aff40b7d4e249f4b242db3a5c5b7fb.tar.bz2
perlweeklychallenge-club-97cabe50c3aff40b7d4e249f4b242db3a5c5b7fb.zip
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))