LoginSignup
2
2

More than 5 years have passed since last update.

Underscore.jsで解いてみた:これが10分でできない人は自分がかなりプログラミングができないというつらい事実を認識しましょう。

Last updated at Posted at 2015-03-17

これが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には)」くらいが妥当だよね。

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2