aboutsummaryrefslogtreecommitdiff
path: root/challenge-078/abigail/node/ch-1.js
diff options
context:
space:
mode:
author冯昶 <seaker@qq.com>2020-09-21 14:20:42 +0800
committer冯昶 <seaker@qq.com>2020-09-21 14:20:42 +0800
commitbca0c362c212fc0dadc5ed7d9a5e4fa1aece4bfb (patch)
tree877181cfde26b706346d3468269e4674d75da772 /challenge-078/abigail/node/ch-1.js
parentec09b571a6f2186fec8870a071a8d5d38596c850 (diff)
parent5ac16ac7e9826137e0da5597e954f4992c66205d (diff)
downloadperlweeklychallenge-club-bca0c362c212fc0dadc5ed7d9a5e4fa1aece4bfb.tar.gz
perlweeklychallenge-club-bca0c362c212fc0dadc5ed7d9a5e4fa1aece4bfb.tar.bz2
perlweeklychallenge-club-bca0c362c212fc0dadc5ed7d9a5e4fa1aece4bfb.zip
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-078/abigail/node/ch-1.js')
-rw-r--r--challenge-078/abigail/node/ch-1.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/challenge-078/abigail/node/ch-1.js b/challenge-078/abigail/node/ch-1.js
new file mode 100644
index 0000000000..eba11fd3b3
--- /dev/null
+++ b/challenge-078/abigail/node/ch-1.js
@@ -0,0 +1,52 @@
+//
+// Exercise:
+// You are given an array @A containing distinct integers.
+// Write a script to find all leader elements in the array @A.
+// Print (0) if none found. An element is leader if it is greater
+// than all the elements to its right side.
+//
+
+//
+// Note:
+// - The only way no leader element can be found is if the array is empty.
+// - We will read the array from STDIN.
+//
+
+//
+// Read a line from STDIN, turn it into a string, strip off the
+// trailing newline (and any leading or trailing whitespace),
+// and then split in on spaces. Store the result into an array "arry".
+//
+let fs = require ("fs");
+let line = fs . readFileSync (0) . toString () . trim ();
+let arry = line . split (" ");
+
+if (line . length == 0) {
+ //
+ // Special case, if the line is empty, output 0
+ //
+ console . log (0);
+}
+else {
+ //
+ // Iterate backwards over the array. Keep track of the largest
+ // element so far in an array 'out'. If we find a new largest
+ // element, put this first in 'out' (so, the largest element
+ // seen so far is always in 'out [0]'.
+ //
+ let out = [arry [arry . length - 1]];
+ for (let i = arry . length - 2; i >= 0; i --) {
+ //
+ // Note that we have strings in arry (and hence, out).
+ // An unary + casts them to numbers.
+ //
+ if (+arry [i] > +out [0]) {
+ out . unshift (arry [i]);
+ }
+ }
+
+ //
+ // Print the result.
+ //
+ console . log (out . join (" "));
+}