Javascript Algorithmic Challenges