aboutsummaryrefslogtreecommitdiff
path: root/challenge-078/abigail/Part1/solution.js
blob: eba11fd3b3759d17ca353fb6f444f3432cb64328 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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 (" "));
}