But for FizzBuzz I explain the problem, explain that there is no trick and the simplest answer that produces the correct output will be fine. To solve it you need to know about building a loop, what the mod operator does, and maybe keeping state depending on how you build it. I tell them to write it in the language they know best. None of those things should be "gotchas" in your favorite language.
local remove = table.remove
local insert = table.insert
local print = print
local sequence = {
false , false , 'Fizz' , false , 'Buzz',
'Fizz' , false , false , 'Fizz' , 'Buzz' ,
false , 'Fizz' , false , false , 'FizzBuzz'
}
local function o(v)
local name = remove(sequence,1)
insert(sequence,name)
print(name or v)
return v + 1
end
local function t(v)
return o(o(o(o(o(o(o(o(o(o(v))))))))))
end
local function h(v)
t(t(t(t(t(t(t(t(t(t(v))))))))))
end
h(1)
It does rely upon state (the sequence table) but even that could probably be worked around if Lua had a slice syntax.Although we could debate that the way you call o and t is just you manually expanding a loop. In which case I would question why you didn't just use a loop. :)
I could also debate with you that you had to at least understand what mod is to build the sequence.
I would also give you bonus points for detecting that it is a repeating pattern.
But the point is, you solved it, you wrote code that could solve it. So now I know that you're at least capable of writing basic code, and we've got a couple of things to talk about!
I head the "what if they do it this other weird way?" question off by giving them a simple problem, having them solve it (or at least convince me their solution solves it), and then asking them to solve it a different way. My screens mostly follow the ideas from https://sites.google.com/site/steveyegge2/five-essential-pho... I allocate about 10 minutes max for "basic coding" where I just ask them (lately) to write a function that returns true if the given input int (which is assumed to be > 0) is even and false if odd. Then I ask them to do it in different ways. If they use bit-and, I figure they know enough about the "bits and bytes" section too for my team's purposes. Last time someone couldn't recall using bit-and but surprised me with a way I didn't consider, which was convert to string and check the last character. I'm sure there are other ways to do it I haven't considered either. Maybe someone will give me a solution with tensorflow someday, but what would be really impressive is if they bust that out within a few minutes. :) All I'm really after is "can you write code?", if the answer is no then very little time was wasted, if the answer was yes we can go into variations and other questions to rank the other yeses / find other red flags.
Console.Write(String.Join("\r\n", Enumerable.Range(1, 100).Select(x => x % 15 == 0 ? "FizzBuzz" : x % 5 == 0 ? "Buzz" : x % 3 == 0 ? "Fizz" : x.ToString()))); Array.from(Array(100).keys()).map(k => k + 1).map(i => !(i % 15) && 'fizbizz' || !(i % 5) && 'buzz' || !(i % 3) && 'fizz' || i) Array.from(Array(100).keys()).map(k => k + 1).map(i => [i,'Fizz','Buzz','FizzBuzz'][!(i%3)+2*!(i%5)])Because it was an unconventional solution, the interviewer didn't like it.
for x in xrange(1,101):
if not x % 3:
print "Fizz",
if not x % 5:
print "Buzz",
if (x % 3) and (x % 5):
print x
else:
print ""And fifteen.
for(var i = 1; i <= 100; i++) {
a[fizz +=3] = "fizz" + (a[fizz] || "");
a[buzz +=5] = "buzz";
print(a[i] || i);
}Wie waere es fuer dich, wenn ich in einer Sprache antworte, die du wahrscheinlich nicht verstehst?