これが10分でできない人は自分がかなりプログラミングができないというつらい事実を認識しましょう。
Underscore.jsで解いてみました。
var distributeCards = function(num, cards){
// カードを人数で分配する
var distributed = _(cards).groupBy(function(card, index){
return (index % num);
});
// 分配したカードの最小枚数を調べる
var min_number = _(distributed).chain()
.map(function(cards){
return cards.length;
})
.min()
.value();
// 最小枚数で出力する
return _(distributed).map(function(cards){
return _(cards).first(min_number);
});
};
distributeCards(3, ['SA', 'S2', 'S3', 'S4', 'S5', 'S6', 'S7', 'S8', 'S9', 'S10', 'SJ', 'SQ', 'SK']);
// [['SA', 'S4', 'S7', 'S10'], ['S2', 'S5', 'S8', 'SJ'], ['S3', 'S6', 'S9', 'SQ']]
問題読んで設計するのに2分くらい、コード書いて動くまでが8分。
あとがき
戻り値は配列とか書いてるのに、入力値は分からんとか、仕様が適当すぎじゃね?(解いてみた:これが10分でできない人は自分がかなりプログラミングができないというつらい事実を認識しましょう。にならって配列にしました)
これで、「10分でできない人は・・・」とか上から目線すぎる。「こんな適当な仕様でも10分でプログラミングできて欲しい(主にPMやSEには)」くらいが妥当だよね。