aboutsummaryrefslogtreecommitdiff
path: root/challenge-119/dave-jacoby/node/ch-2.js
diff options
context:
space:
mode:
authorDave Jacoby <jacoby.david@gmail.com>2021-06-28 15:58:12 -0400
committerDave Jacoby <jacoby.david@gmail.com>2021-06-28 15:58:12 -0400
commitb61107f1bb11bbca80bbda7c0f9a63221eec1bbe (patch)
treedd24c28fbb1e5871c394e8d6b8db7bf3d5dd0db1 /challenge-119/dave-jacoby/node/ch-2.js
parent6856b37c0c18ff1c8a330db9be7dcfd41d6ab9a1 (diff)
downloadperlweeklychallenge-club-b61107f1bb11bbca80bbda7c0f9a63221eec1bbe.tar.gz
perlweeklychallenge-club-b61107f1bb11bbca80bbda7c0f9a63221eec1bbe.tar.bz2
perlweeklychallenge-club-b61107f1bb11bbca80bbda7c0f9a63221eec1bbe.zip
All but Blogging
Diffstat (limited to 'challenge-119/dave-jacoby/node/ch-2.js')
-rw-r--r--challenge-119/dave-jacoby/node/ch-2.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/challenge-119/dave-jacoby/node/ch-2.js b/challenge-119/dave-jacoby/node/ch-2.js
new file mode 100644
index 0000000000..7386e2a0db
--- /dev/null
+++ b/challenge-119/dave-jacoby/node/ch-2.js
@@ -0,0 +1,51 @@
+"use strict";
+
+// let list = Array(20).fill();
+// for (let i in list) {
+// let j = first_pass(i);
+// let s = get_sequence(i * 2);
+// let v = solve_sequence(i);
+// console.log(["", "i", i, "j", j, "v", v].join("\t"));
+// }
+
+let list = [2, 5, 10, 60, 200];
+
+for (let i in list) {
+ let n = list[i];
+ let s = solve_sequence(n);
+ console.log(["", n, s].join("\t"));
+}
+
+function solve_sequence(n) {
+ let j = n * 2;
+ let s = get_sequence(1 + j);
+ while (s[n] == undefined) {
+ j = j * 2;
+ s = get_sequence(j);
+ }
+ return s[n];
+}
+
+function get_sequence(n) {
+ n = parseInt(n);
+ let sequence = Array(n)
+ .fill("")
+ .map((x, i) => first_pass(i + 1))
+ .filter((x) => !x.toString().match(/0/))
+ .filter((x) => !x.toString().match(/11/));
+ sequence.unshift(0);
+ return sequence;
+}
+
+function first_pass(n) {
+ if (n == 0) {
+ return 0;
+ }
+ let output = [];
+ while (n) {
+ let i = n % 4;
+ n = parseInt(n / 4);
+ output.push(i);
+ }
+ return output.reverse().join("");
+}