Swedish software company Multisoft does a code challenge each month, where it provides a fun little challenge for developers to solve. They do this in hopes of finding new candidates for potential employment.
In this post, we will go over and solve this month's following code challenge.
input = "0219247151", output = "" for (i in 1 .. length(input)) if (input[i]%2 == input[i-1]%2) output += max(input[i], input[i-1])
The challenge is written in pseudo-code and we want to know what will be stored in the
output variable when the algorithm is finished.
The algorithm in itself is relatively simple and doesn't have very many working parts, but can be tricky if you're not paying close attention to the setup.
The setup for the algorithm creates two variables, we will call them
output for simplicity. Our
input stores our initial numbers, and
output will store the result set of our
The algorithm will step over each number in the
input string starting from the second index through to the last number, in each iteration we will check if the current and previous index have the same remainder when divided by
When both indexes have the same remainder, we add the maximum value to our
Given the above algorithm, we could expect different results based on how a language handles string and integer concatenation.
If for instance, our language coerces the string returned from
max to integers during the concatenation assignment, we could end up adding each result to each other instead of concatenating them.
+= usually indicated an arithmetic addition of the previous value added to our new value. In this instance though it indicated a string concatenation assignment.
Given that, stepping through the algorithm will look something like this.
Storing the final string value of 294755 in to the
This was a fun little challenge done by Multisoft, and I look forward to next month's challenge.
If you're interested is solving coding challenges, check out some of the links below.