diff options
| -rwxr-xr-x | challenge-117/stuart-little/node/ch-1.js | 7 | ||||
| -rwxr-xr-x | challenge-117/stuart-little/node/ch-2.js | 23 |
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)) |
