aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchirvasitua <chirvasitua@gmail.com>2021-08-30 19:35:01 -0400
committerchirvasitua <chirvasitua@gmail.com>2021-08-30 19:35:01 -0400
commitd9a9da2897a7dc1dd0f90c8438bbde176fb554a4 (patch)
treef3ea55b4178f491e03b3aee17d9a98f2fd8c1f8a
parentc1673fc2265c06f3d635f9781f9ca9b2bfa934ef (diff)
downloadperlweeklychallenge-club-d9a9da2897a7dc1dd0f90c8438bbde176fb554a4.tar.gz
perlweeklychallenge-club-d9a9da2897a7dc1dd0f90c8438bbde176fb554a4.tar.bz2
perlweeklychallenge-club-d9a9da2897a7dc1dd0f90c8438bbde176fb554a4.zip
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)