DEV Community

Cover image for Road to Genius: superior #59
Ilya Nevolin
Ilya Nevolin

Posted on

1 2

Road to Genius: superior #59

Each day I solve several coding challenges and puzzles from Codr's ranked mode. The goal is to reach genius rank, along the way I explain how I solve them. You do not need any programming background to get started, and you will learn a ton of new and interesting things as you go.

function RPN(tokens) {
  const stack = [];
  for (let index = 0; index < tokens.length; index++) {
    const token = tokens[index];
    if (!Number.isNaN(Number(token))) {
      stack.push(token);
    } else {
      const a = Number(stack.pop());
      const b = Number(stack.pop());
      if (token === '*') {
        stack.push(b * a);
      } else if (token === '/') {
        stack.push(b / a);
      } else if (token === '+') {
        stack.push(b + a);
      } else if (token === '-') {
        stack.push(b - a);
      }
    }
  }
  return stack.pop();
}

let arr = ['1', '8', '5', '6', '+', '5', '*', '/', '*', '6', '+', '7', '+']
let A = RPN(arr);
A = Math.floor(A)

// A = ? (number)
Enter fullscreen mode Exit fullscreen mode

Our good old friend the Reverse Polish Notation (RPN) is back again. To complete the challenge we have to solve the notation, let's do that in pseudo-code:

arr = 1 8 5 6 + 5 * / * 6 + 7 +
stack = []

index: 0, 1, 2 & 3
stack = [1 8 5 6]

index: 4
token: +
push(5 + 6 = 11)
stack = [1 8 11]

index: 5
stack = [1 8 11 5]

index: 5
token: *
push(11 * 5 = 55)
stack = [1 8 55]

index: 6
token: /
push(8 / 55 = 0.145)
stack = [1 0.145]

index: 7
token: *
push(0.145 * 1 = 0.145)
stack = [0.145]

index: 8
stack = [0.145 6]

index: 9
token: +
push(0.145 + 6 = 6.145)
stack = [6.145]

index: 10
stack = [6.145 7]

index: 11
token: +
push(6.145 + 7 = 13.145)
stack = [13.145]

A = Floor(stack.pop())
A == 13
Enter fullscreen mode Exit fullscreen mode

coding challenge answer

By solving these challenges you train yourself to be a better programmer. You'll learn newer and better ways of analyzing, debugging and improving code. As a result you'll be more productive and valuable in business. Get started and become a certified Codr today at https://nevolin.be/codr/

Top comments (0)

SurveyJS custom survey software

JavaScript Form Builder UI Component

Generate dynamic JSON-driven forms directly in your JavaScript app (Angular, React, Vue.js, jQuery) with a fully customizable drag-and-drop form builder. Easily integrate with any backend system and retain full ownership over your data, with no user or form submission limits.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay