December 10, 2014
Interview Cake Problem #11
I was on the right track with breaking down the problem. I was ready to start looking for sequences of matching cards across the deck and 2 piles, but the hint suggested to break the problem down further to matching individual cards. With that hint, I was able to implement a good solution.
I chose to actually pop and push elements from the arrays when doing comparisons between the piles instead of just incrementing an index every time a match was found. It is slower, but I think it is less prone to human off-by-one errors.
Neat JS stuff that came in handy
Need to make a shallow copy an array quickly? Try slice
var copy = original.slice(0);
Need to combine 2 arrays without creating a new array (like with concat()
) ? Try using apply
with push
. push
usually expects to receive a list of values as arguments instead of 1 array of values. apply
helps with that.
original.push.apply(original, additional);
This says to run the push
function in the scope of the array original
, and will treat the array additional
as a list of arguments the way push
usually expects to receive values. The result is that the values in additional
will be added to original
.