diff options
| author | Myoungjin JEON <jeongoon@gmail.com> | 2020-07-27 16:10:03 +1000 |
|---|---|---|
| committer | Myoungjin JEON <jeongoon@gmail.com> | 2020-07-27 16:10:03 +1000 |
| commit | 9f5aee78a5569f7e0c8f742dd907663bd1e04642 (patch) | |
| tree | 8f864d8438c06983ab9438e1e9839628cfe18520 /challenge-070/arne-sommer/node/gray-code-seq-node | |
| parent | fde6b9fbc1e5fa1378acd6b1b5c6aed854f4f156 (diff) | |
| parent | 450eab302dee5452d66be1f388cea4fafb0b5a31 (diff) | |
| download | perlweeklychallenge-club-9f5aee78a5569f7e0c8f742dd907663bd1e04642.tar.gz perlweeklychallenge-club-9f5aee78a5569f7e0c8f742dd907663bd1e04642.tar.bz2 perlweeklychallenge-club-9f5aee78a5569f7e0c8f742dd907663bd1e04642.zip | |
Merge remote-tracking branch 'upstream/master'
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); + |
