aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-08-31 00:39:31 +0100
committerGitHub <noreply@github.com>2021-08-31 00:39:31 +0100
commit641fd5b76ae781ef51268a2f579395b8f51ade52 (patch)
tree0596a11df6b001af30537618d46311c9b5404f4f
parent42dfba4163bb20673ef668d0aea68b2cd2925146 (diff)
parentd9a9da2897a7dc1dd0f90c8438bbde176fb554a4 (diff)
downloadperlweeklychallenge-club-641fd5b76ae781ef51268a2f579395b8f51ade52.tar.gz
perlweeklychallenge-club-641fd5b76ae781ef51268a2f579395b8f51ade52.tar.bz2
perlweeklychallenge-club-641fd5b76ae781ef51268a2f579395b8f51ade52.zip
Merge pull request #4825 from stuart-little/stuart-little_128_node
1st commit on 128_node
-rwxr-xr-xchallenge-128/stuart-little/node/ch-1.js22
-rwxr-xr-xchallenge-128/stuart-little/node/ch-2.js15
2 files changed, 37 insertions, 0 deletions
diff --git a/challenge-128/stuart-little/node/ch-1.js b/challenge-128/stuart-little/node/ch-1.js
new file mode 100755
index 0000000000..8524ef3786
--- /dev/null
+++ b/challenge-128/stuart-little/node/ch-1.js
@@ -0,0 +1,22 @@
+#!/usr/bin/env node
+
+// run <script> <space-separated binary words, with one word representing each row>
+
+const {maxBy} = require('lodash')
+
+let [rows,cols]=[0,0]
+
+function mrg(s1,s2) {
+ return (parseInt(s1,2) | parseInt(s2,2)).toString(2).padStart(s1.length,0)
+}
+
+for (let i=0; i < process.argv.slice(2).length; i++) {
+ for (let j=i; j < process.argv.slice(2).length; j++) {
+ let mx = maxBy([...process.argv.slice(2+i,3+j).reduce(mrg).matchAll(/(0+)/g)].map(x => x[0]), x => x.length)
+ if ((j-i+1) * mx.length > rows*cols) {
+ [rows,cols]=[j-i+1,mx.length]
+ }
+ }
+}
+
+console.log(Array(rows).fill('0'.repeat(cols)).join("\n"))
diff --git a/challenge-128/stuart-little/node/ch-2.js b/challenge-128/stuart-little/node/ch-2.js
new file mode 100755
index 0000000000..f5b520df07
--- /dev/null
+++ b/challenge-128/stuart-little/node/ch-2.js
@@ -0,0 +1,15 @@
+#!/usr/bin/env node
+
+// run <script> <starting arrivals followed by departures, all space-separated>
+
+const times = process.argv.slice(2).map((v,ix) => [v, ix % Math.floor(process.argv.slice(2).length/2)]).sort()
+let sol=0
+let station = Array(Math.floor(process.argv.slice(2).length/2)).fill(0)
+
+times.forEach( tm => {
+ station[tm[1]]^=1
+ let sm = station.reduce((a,b) => a+b, 0)
+ if (sm > sol) {sol = sm}
+})
+
+console.log(sol)