diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-07-25 01:57:46 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-07-25 01:57:46 +0100 |
| commit | 87106c1e85af6f8badcfa08c41442f01fa9f5b8e (patch) | |
| tree | 14c9a162dcafd47a1c64ff6ecdca0410f442a7a7 /challenge-070/arne-sommer/node/gray-code-seq-node | |
| parent | 62f1563a6c3108747a9b950e784f1419aebdf253 (diff) | |
| download | perlweeklychallenge-club-87106c1e85af6f8badcfa08c41442f01fa9f5b8e.tar.gz perlweeklychallenge-club-87106c1e85af6f8badcfa08c41442f01fa9f5b8e.tar.bz2 perlweeklychallenge-club-87106c1e85af6f8badcfa08c41442f01fa9f5b8e.zip | |
- Added solutions by Arne Sommer.
Diffstat (limited to 'challenge-070/arne-sommer/node/gray-code-seq-node')
| -rwxr-xr-x | challenge-070/arne-sommer/node/gray-code-seq-node | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/challenge-070/arne-sommer/node/gray-code-seq-node b/challenge-070/arne-sommer/node/gray-code-seq-node new file mode 100755 index 0000000000..c3e831c06f --- /dev/null +++ b/challenge-070/arne-sommer/node/gray-code-seq-node @@ -0,0 +1,62 @@ +#! /usr/bin/env node + +var N = process.argv[2] || 3; + +var verbose = false; + +if (N == '--verbose') +{ + verbose = true; + N = process.argv[3] || 3; +} + +let die = (message) => { + console.log(message); + process.kill(process.pid); +}; + +var NN = parseInt(N); + +if (NN != N || NN < 2 || NN > 5) + die('N: Integer 2,3,4,5 only'); + +var sequence = [0,1,3,2]; + +let asBinary = (value, length) => { + var binary = value.toString(2); + + while (binary.length < length) + binary = "0" + binary; + + return binary; +} + +let generate2bgcs = (array, level) => { + var S1a = array.map(x => asBinary(x,level-1) ); + var S2a = S1a.slice(); S2a.reverse(); + var S1 = S1a.map(x => '0' + x); + var S2 = S2a.map(x => '1' + x); + var S3 = S1; for (x of S2) { S3.push(x); } + var out = S3.map( x => parseInt(x, 2) ); + + if (verbose) + { + console.log(': in: ' + array); + console.log(': a) S1 = ' + S1a); + console.log(': b) S2 = ' + S2a); + console.log(': c) S1 = ' + S1); + console.log(': d) S2 = ' + S2); + console.log(': e) S3 = ' + S3); + console.log(': out: ' + out); + } + + return out; +} + +for (level = 3; level <= NN; level++) +{ + sequence = generate2bgcs(sequence, level); +} + +console.log(sequence); + |
