aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.freedom.nl>2022-02-07 23:07:38 +0100
committerAbigail <abigail@abigail.freedom.nl>2022-02-07 23:07:38 +0100
commitdfe3d0c53a5e090bb2784fb9487463656fa72387 (patch)
tree9f5af35342d5f78c3aff9da52c5af9d19f346785
parentf1bc02f8fcc156205b2a8ccabaf0063f32ab8106 (diff)
downloadperlweeklychallenge-club-dfe3d0c53a5e090bb2784fb9487463656fa72387.tar.gz
perlweeklychallenge-club-dfe3d0c53a5e090bb2784fb9487463656fa72387.tar.bz2
perlweeklychallenge-club-dfe3d0c53a5e090bb2784fb9487463656fa72387.zip
Week 151: Node.js solutions
-rw-r--r--challenge-151/abigail/node/ch-1.js33
-rw-r--r--challenge-151/abigail/node/ch-2.js26
2 files changed, 59 insertions, 0 deletions
diff --git a/challenge-151/abigail/node/ch-1.js b/challenge-151/abigail/node/ch-1.js
new file mode 100644
index 0000000000..bf67eda21e
--- /dev/null
+++ b/challenge-151/abigail/node/ch-1.js
@@ -0,0 +1,33 @@
+#!/usr/local/bin/node
+
+//
+// See https://theweeklychallenge.org/blog/perl-weekly-challenge-151
+//
+
+//
+// Run as: node ch-1.js < input-file
+//
+
+ require ('readline')
+. createInterface ({input: process . stdin})
+. on ('line', line => {
+ let tree = line . split ("\|") . map (row => row . trim () . split (/ +/))
+
+ for (let d = 0; d < tree . length; d ++) {
+ if (d == tree . length - 1) {
+ return
+ }
+ let c_row = tree [d]
+ let n_row = tree [d + 1]
+ for (let i = 0; i < c_row . length; i ++) {
+ let ch1 = 2 * i
+ let ch2 = 2 * i + 1
+ if (c_row [i] != "*" &&
+ (ch1 >= n_row . length || n_row [ch1] == "*") &&
+ (ch2 >= n_row . length || n_row [ch2] == "*")) {
+ console . log (d + 1)
+ return;
+ }
+ }
+ }
+})
diff --git a/challenge-151/abigail/node/ch-2.js b/challenge-151/abigail/node/ch-2.js
new file mode 100644
index 0000000000..f4d698ec49
--- /dev/null
+++ b/challenge-151/abigail/node/ch-2.js
@@ -0,0 +1,26 @@
+#!/usr/local/bin/node
+
+//
+// See https://theweeklychallenge.org/blog/perl-weekly-challenge-151
+//
+
+//
+// Run as: node ch-2.js < input-file
+//
+
+ require ('readline')
+. createInterface ({input: process . stdin})
+. on ('line', line => {
+ let houses = line . trim () . split (/ +/) . map (n => +n)
+ let best = []
+ for (let i = houses . length - 1; i >= 0; i --) {
+ best [i] =
+ 2 > houses . length ? houses [i]
+ : i == houses . length - 1 ? houses [i]
+ : i == 0 ? houses [i] + best [i + 2]
+ : i == houses . length - 2 ? Math . max (houses [i], best [i + 1])
+ : Math . max (houses [i] + best [i + 2],
+ best [i + 1])
+ }
+ console . log (best [0])
+})