Re:Most candidates cannot solve this interview problem
by sammy533 on Sunday February 07, 2021 @12:19AM
(#26052852)
This is trivial for me to solve, sitting here at my computer. Would I be a me to solve it on a whiteboard in front of a group of interviewers? Maybe not. The stress and anxiety may get the best of me.
Re:Most candidates cannot solve this interview problem
by zzo38computer on Sunday February 07, 2021 @12:50AM
(#26052972)
I agree with you; it is easy solving sitting at the computer, but in front of a group of interviewers might be stressful like that.
The method to solve it depends on the programming language. In this case, I would use Haskell; however, this would likely be a part of a larger program, and in that case the programming language that the larger program is written in would be used instead.
Re:Most candidates cannot solve this interview problem
by pcthrowaway on Sunday February 07, 2021 @04:22AM
(#26053768)
possibly because it's much harder (maybe impossible?) to do in languages that don't have native tuples, which appear to be the ask.
The input string is quoted, so the output appears to be an array (not a string type).
My stab at it in Javascript resulted in:
function collapse(a) {
collapsedArray = [];
for (let i=0; i<a.length; i++) {
let count = 1;
let currentchar = a[i];
while (i+1 < a.length && a[i+1] == currentchar) {
i++;
count++;
}
collapsedArray.push([a[i], count]);
}
return (collapsedArray);
}
console.log(JSON.stringify(collapse("aabbcdde")));
This outputs `[["a",2],["b",2],["c",1],["d",2],["e",1]]`. Without native tuples in Javascript (or JSON), I could construct a string which replaces the inner brackets with parens, but that would be pretty contrived, as the output requested isn't quoted.
Re:Most candidates cannot solve this interview problem
by Supermancho on Sunday February 07, 2021 @04:41AM
(#26053844)
> the output requested isn't quoted.
Input: "aaaabbbcca"
Output: [("a", 4), ("b", 3), ("c", 2), ("a", 1)]
The input and output is explicit. The interpretation is a talking point.
Serialization into parens is not native for most? scripting languages. Creating a string would probably be most efficient for the output format, for sure. It's important to remember that interview questions are not just about the algorithm (for which this is trivial) but the requirements. Asking if the double quotes are representing strings (and what kind of strings for some languages) is part of the natural back-and-forth of an interview.
Re:Most candidates cannot solve this interview problem
by pensatoio on Sunday February 07, 2021 @04:09AM
(#26053717)
If I gave a correct answers to a question like this and they responded as you suggest, I’d leave immediately. The purpose of this line of questioning is to weed out incompetent programmers, not be petty. If the latter is a priority, then working with them will undoubtedly be a trial.
Re:Most candidates cannot solve this interview problem
by IgorBog61650384 on Sunday February 07, 2021 @01:58AM
(#26053238)
I think this approach might backfire: If purpose of the question is to test the candidate's knowledge of common libraries, then it probably is way to easy to be indicative, this kind of knowledge should be tested for something the candidate can't find by googling for 5 minutes. If the purpose is to test algorithm design, its also way to basic.
Re:Most candidates cannot solve this interview problem
by fr2null on Sunday February 07, 2021 @05:57AM
(#26054125)
While most of the comments on the Twitter thread use fancy functions from common libraries, you should be able to solve this problem without the need for googling and without those fancy functions.
While I agree that this is way to basic to test AD skills, if it's really true that there is a sizable percentage of people that is unable to solve this problem, this might be a good way to weed those out, before starting with the 'real' questions.
Re:Most candidates cannot solve this interview problem
by xupybd on Sunday February 07, 2021 @04:19AM
(#26053757)
If nothing else this makes me feel better about my own abilities. Unfortunately I find it's not my ability to solve tricky puzzles but my ability to solve business problems in minimal time. Often the hard part is not the algorithm design but extracting the requirements that will bring the most benefit to the business.
Re:Most candidates cannot solve this interview problem
by hyperrealgopher on Sunday February 07, 2021 @02:29AM
(#26053343)
Hello, Hacker News! I'm new to the community. I just saw this and thought it'd be fun to solve in Haskell. The first solution I thought of was done in under a couple minutes. The second solution (I wanted to implement `group` myself) took a lot longer because I messed up a pattern match!
Re:Most candidates cannot solve this interview problem
by zzo38computer on Sunday February 07, 2021 @02:53AM
(#26053418)
My own first idea was actually similar to yours, although I wrote:
map (head &&& length) . group
(Also, it took me only a few seconds, because it just seemed obvious to me, even though Haskell is not the programming language I normally use for my projects, but it seems the right thing for this.)
And no, I don't write code like this normally, but I guess this is me when I'm under time pressure... anyway, I could refactor it nicely afterwards in the 25 minutes allocated.
Re:Most candidates cannot solve this interview problem
by jwilber on Sunday February 07, 2021 @01:37AM
(#26053167)
This is seemingly the software equivalent of those trivial order of operations problems you see reposted over and over again on Facebook/Twitter.
I can never tell if the objective is to give novel solutions to the problem or to just publicly show that you can solve it. In any case, I always chuckle when I see how some of those in the comments can reply so smugly to others.
result = []
prev, count = None, 0
for c in s+"\0": # note: assuming "\0" can't be in `s`
if c != prev: # starting new sequence
if count: # save count for old sequence
result.append((prev, count))
prev, count = c, 1 # reset count
else: # continuation of old sequence
count += 1
Re:Most candidates cannot solve this interview problem
by raymondh on Sunday February 07, 2021 @12:44AM
(#26052949)
Given that those exact words are the first line of the tweet and that it is almost the entire point of the post, what alternative title would have been better?
The method to solve it depends on the programming language. In this case, I would use Haskell; however, this would likely be a part of a larger program, and in that case the programming language that the larger program is written in would be used instead.
The input string is quoted, so the output appears to be an array (not a string type).
My stab at it in Javascript resulted in:
This outputs `[["a",2],["b",2],["c",1],["d",2],["e",1]]`. Without native tuples in Javascript (or JSON), I could construct a string which replaces the inner brackets with parens, but that would be pretty contrived, as the output requested isn't quoted.Input: "aaaabbbcca"
Output: [("a", 4), ("b", 3), ("c", 2), ("a", 1)]
The input and output is explicit. The interpretation is a talking point.
Serialization into parens is not native for most? scripting languages. Creating a string would probably be most efficient for the output format, for sure. It's important to remember that interview questions are not just about the algorithm (for which this is trivial) but the requirements. Asking if the double quotes are representing strings (and what kind of strings for some languages) is part of the natural back-and-forth of an interview.
If so, this can, too.
While I agree that this is way to basic to test AD skills, if it's really true that there is a sizable percentage of people that is unable to solve this problem, this might be a good way to weed those out, before starting with the 'real' questions.
https://gist.github.com/hyperrealgopher/19730725804ba8825d50...
Thanks for sharing!
> input = "aaaabbbcca"
> r :: String -> (Char,Int) -> [(String, Int)]
> r [] (c,n) = [([c],n)]
> r (x:xs) (c,n)
> | c == x = r xs (c,n+1)
> | otherwise = (([c],n): r xs (x,1))
> main = putStrLn (show (r (tail input) (head input, 1) ))
4 minutes 42 seconds.
And no, I don't write code like this normally, but I guess this is me when I'm under time pressure... anyway, I could refactor it nicely afterwards in the 25 minutes allocated.
I can never tell if the objective is to give novel solutions to the problem or to just publicly show that you can solve it. In any case, I always chuckle when I see how some of those in the comments can reply so smugly to others.
This is a massive waste of everyone's time and tells you nothing about the candidate's ability to do the job. Try again.
While I agree that such interview questions are bad, they also give the interviewer a view on how the interviewee attempts to solve a problem.
Edit: typo
Here's solution that doesn't use itertools.groupby() https://docs.python.org/3/library/itertools.html?highlight=i... :