aboutsummaryrefslogtreecommitdiff
path: root/challenge-070/arne-sommer/node/gray-code-seq-node
diff options
context:
space:
mode:
authorMyoungjin JEON <jeongoon@gmail.com>2020-07-27 16:10:03 +1000
committerMyoungjin JEON <jeongoon@gmail.com>2020-07-27 16:10:03 +1000
commit9f5aee78a5569f7e0c8f742dd907663bd1e04642 (patch)
tree8f864d8438c06983ab9438e1e9839628cfe18520 /challenge-070/arne-sommer/node/gray-code-seq-node
parentfde6b9fbc1e5fa1378acd6b1b5c6aed854f4f156 (diff)
parent450eab302dee5452d66be1f388cea4fafb0b5a31 (diff)
downloadperlweeklychallenge-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-xchallenge-070/arne-sommer/node/gray-code-seq-node62
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);
+