Representing seconds in HH:MM:SS in JavaScript



Problem

We are required to write a JavaScript function that takes in an array of single characters, arr, as the first and the only argument.

The array can contain only 4 characters, they are −

  • ‘N’ → stands for North direction
  • ‘S’ → stands for South direction
  • ‘W’ → stands for West direction
  • ‘E’ → stands for East direction

Each character specifies a move of unit distance in that particular direction. And if anywhere in the array, two opposite directions, [(‘S’ and ‘N’) or (‘E’ and ‘W’)] appear adjacently, they cancel out the movement of each other. Therefore, our function is supposed to find the resulting direction of movement of the whole array.

For example, if the input to the function is −

Input

const arr = ['N', 'S', 'S', 'E', 'W', 'N', 'W'];

Output

const output = 'W';

Output Explanation

‘N’ and ‘S’ will cancel each other ‘E’ and ‘W’ will cancel each other and then finally ‘N’ and ‘S’ again cancels each other to leave behind only ‘W’.

Example

Following is the code −

 Live Demo

const arr = ['N', 'S', 'S', 'E', 'W', 'N', 'W'];
const cancelDirections = (arr = []) => {

   let str = arr.join('');
   while(str.includes('NS') || str.includes('SN') || str.includes('EW') || str.includes('WE')){
      str = str.replace('NS', '');
      str = str.replace('SN', '');
      str = str.replace('EW', '');
      str = str.replace('WE', '');
   };
   return str.split('');
};
console.log(cancelDirections(arr));

Output

['W']

Advertisements