aboutsummaryrefslogtreecommitdiff
path: root/challenge-003
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.be>2021-01-28 13:01:50 +0100
committerAbigail <abigail@abigail.be>2021-01-28 13:01:50 +0100
commit62ad2b057e0439e47759711b6fc7dfcffcecf348 (patch)
treee0152c085ee823cbc905ce6e13a29eb27a99d8cd /challenge-003
parent50255b3d3d1cc4a5fdd4e57be0b369a8ec003f79 (diff)
downloadperlweeklychallenge-club-62ad2b057e0439e47759711b6fc7dfcffcecf348.tar.gz
perlweeklychallenge-club-62ad2b057e0439e47759711b6fc7dfcffcecf348.tar.bz2
perlweeklychallenge-club-62ad2b057e0439e47759711b6fc7dfcffcecf348.zip
Node.js solution for week 3, part 2
Diffstat (limited to 'challenge-003')
-rw-r--r--challenge-003/abigail/README.md1
-rw-r--r--challenge-003/abigail/node/ch-2.js43
2 files changed, 44 insertions, 0 deletions
diff --git a/challenge-003/abigail/README.md b/challenge-003/abigail/README.md
index 3f55d0e383..f0b9e8222f 100644
--- a/challenge-003/abigail/README.md
+++ b/challenge-003/abigail/README.md
@@ -41,4 +41,5 @@ rows from the command line. The Pascal Triangle should have at least
* [AWK](awk/ch-2.awk)
* [C](c/ch-2.c)
* [Lua](lua/ch-2.lua)
+* [Node.js](node/ch-2.js)
* [Perl](perl/ch-2.pl)
diff --git a/challenge-003/abigail/node/ch-2.js b/challenge-003/abigail/node/ch-2.js
new file mode 100644
index 0000000000..ab629fcb86
--- /dev/null
+++ b/challenge-003/abigail/node/ch-2.js
@@ -0,0 +1,43 @@
+#!/usr/local/bin/node
+
+//
+// See ../README.md
+//
+
+//
+// Run as: node ch-1.js < input-file
+//
+
+require ('readline')
+. createInterface ({input: process . stdin})
+. on ('line', _ => triangle (+_))
+;
+
+
+function triangle (rows) {
+ //
+ // Create and print the 0th row
+ //
+ let row = [1]
+ process . stdout . write ("1\n")
+ for (let r = 1; r <= rows; r ++) {
+ //
+ // Calculate a new row
+ //
+ let new_row = []
+ for (i = 0; i <= r; i ++) {
+ new_row [i] = (i == 0 ? 0 : row [i - 1]) +
+ (i == r ? 0 : row [i]);
+ if (i > 0) {
+ process . stdout . write (" ")
+ }
+ process . stdout . write ("" + new_row [i])
+ }
+ process . stdout . write ("\n")
+
+ //
+ // New row becomes current row
+ //
+ row = new_row
+ }
+}