## DEV Community 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.

Here's our second challenge on the advanced level:

``````function mode(x) {
let counts = {};
let mode = [];
let max = 0;
let n = x.length;
let i = -1;
let d, k;
while (++i < n) {
d = x[i]
if (d in counts)
k = ++counts[d];
else
k = counts[d] = 1;
if (k === max)
mode.push(d);
else if (k > max) {
max = k;
mode = [d];
}
}
return mode;
}
let inp = [2,4,8,8,2,2]
let out = mode(inp)
let A = out.length

// A = ? (number)
``````

We need to determine the value of `A`, which is the size of the array `out`, which is the output of the function `mode`.

If you briefly analyze this function, you are unlikely to recognize it, unless you explicitly wrote something very similar in the past. The name of the function `mode` is a well-known operation in statistics for determining the most occurring numbers in a set. In other words, the mode of a set of numbers is the number with the highest frequency.

What this function basically does is keep track of the most occurring numbers, these are stored in the internal array `mode`, do not confuse it with the function `mode`.

The while-loop iterates over each number in the input array `x`, each element is assigned to variable `d`. The first if-else statement keeps track of all the numbers as a key-value object; whereby variable `k` is the number of occurrences of the number `d`.

The second if-else checks if `k` is greater than the current highest occurring number (i.e. its frequency). It uses the variable `max` to keep track of the highest frequency. If `k == max` then `d` is added to the `mode` array. Because it's among the highest occurring numbers up to that point.
Else if `k > max`; meaning the number `d` has a higher frequency than all the numbers in `mode`, then it overrides `max` with `k`, and `mode` becomes a new array with `d` as the first number.

Let's put this all in pseudo-code:

``````x = [2, 4, 8, 8, 2, 2]
mode = []
max = 0

-> d = 2
k = 1
max = 1
mode = 

-> d = 4
k = 1
max = 1
mode = [2, 4]

-> d = 8
k = 1
max = 1
mode = [2, 4, 8]

-> d = 8
k = 2
max = 2
mode = 

-> d = 2
k = 2
max = 2
mode = [8, 2]

-> d = 2
k = 3
max = 3
mode = 
return mode;

--> out = mode(x) = 
A = out.length = 1
`````` 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. Join me on the Road to Genius and upgrade your programming skills, at https://nevolin.be/codr/