From 62ad2b057e0439e47759711b6fc7dfcffcecf348 Mon Sep 17 00:00:00 2001 From: Abigail Date: Thu, 28 Jan 2021 13:01:50 +0100 Subject: Node.js solution for week 3, part 2 --- challenge-003/abigail/README.md | 1 + challenge-003/abigail/node/ch-2.js | 43 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 challenge-003/abigail/node/ch-2.js 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 + } +} -- cgit