diff options
| author | chirvasitua <chirvasitua@gmail.com> | 2021-08-30 19:35:01 -0400 |
|---|---|---|
| committer | chirvasitua <chirvasitua@gmail.com> | 2021-08-30 19:35:01 -0400 |
| commit | d9a9da2897a7dc1dd0f90c8438bbde176fb554a4 (patch) | |
| tree | f3ea55b4178f491e03b3aee17d9a98f2fd8c1f8a | |
| parent | c1673fc2265c06f3d635f9781f9ca9b2bfa934ef (diff) | |
| download | perlweeklychallenge-club-d9a9da2897a7dc1dd0f90c8438bbde176fb554a4.tar.gz perlweeklychallenge-club-d9a9da2897a7dc1dd0f90c8438bbde176fb554a4.tar.bz2 perlweeklychallenge-club-d9a9da2897a7dc1dd0f90c8438bbde176fb554a4.zip | |
1st commit on 128_node
| -rwxr-xr-x | challenge-128/stuart-little/node/ch-1.js | 22 | ||||
| -rwxr-xr-x | challenge-128/stuart-little/node/ch-2.js | 15 |
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) |
