http://jsfiddle.net/htsign/S6n3c/98/Forkしてみました。私自身JSFiddleをまともに使うのが初めてで、Runを押さずにひたすらUpdateしていたらリビジョン番号がえらいことに…。実装がめちゃめちゃなので、恐らく読んでも理解しにくいかも。申し訳ないです。問題文のシャッフルアルゴリズムは目から鱗でしたので参考にさせていただきました。