DEV Community

Cover image for AdventJS 2023: Day 4 Challenge

AdventJS 2023: Day 4 Challenge

Fenriuz on December 04, 2023

The solution to Challenge #4 of AdventJS 2023 The solution to the previous challenge The solution to the next challenge Challenge Descr...
Collapse
 
lesterpaz99 profile image
Obed Paz

Here's my solution, a bit long but I'll refactor it:

function decode(message) {
  // Code here

  let level = 0;
  let textToDecode = '';
  let protectedContent = '';
  let result = '';

  for (let char of message) {
    if (char === '(') {
      level += 1;
      continue;
    }

    if (char === ')' && level === 1) {
      level -= 1;
      textToDecode = textToDecode.split('').reverse().join('');
      result += textToDecode;
      textToDecode = '';
      continue;
    }

    // max level
    if (char === ')' && level === 2) {
      level -= 1;
      protectedContent = protectedContent.split('').reverse().join('');
      textToDecode += protectedContent;
      protectedContent = '';
      continue;
    }

    if (level === 1) {
      textToDecode += protectedContent;
      protectedContent = '';
      textToDecode += char;
      continue;
    }

    // max level
    if (level === 2) {
      protectedContent += char;
      continue;
    }

    // level 0
    result += textToDecode;
    textToDecode = ''; // reset
    result += char;
  }
  return result;
}
Enter fullscreen mode Exit fullscreen mode