読者です 読者をやめる 読者になる 読者になる

トランプを配る遊び

難易度 激簡単 目標時間10分以内 あなたはこれからトランプを配っていきます。 あなたにはトランプを配る人数、 そしてトランプが渡されます。 今回はとても簡単なので例題で説明します。 例) 2つの引数がもらえます。 3 "123123123" 最初の3はプレイヤーの人数を示しています。 "123123123" はトランプの並びを示しています。あなたはこのなかのトランプを 配っていかなければなりません。 この場合、あなたのプログラムは {"111","222","333"} を返さなければなりません。 "111"は一番めのプレイヤーが受け取るトランプです。 "222"が2番目のプレイヤーが受け取るトランプです。 "333"が2番目のプレイヤーが受け取るトランプです。 ところが、以下のような場合もあります。 すべてのプレイヤーは同じ数だけのトランプを受け取らなければなりません。 ですので 4 "123123123" この場合、あなたのプログラムは {"12","23","31","12"} を返さなければなりません。

int main (int argc, char **argv) {
  int players = 6;
  char* cards = "01234501234501234578";
  int ncards = strlen(cards);

  int i, j;
  for (i = 0; i < players; i++) {
    for (j = i; j < (ncards - (ncards % players)); j += players) {
      putc(cards[j], stdout);
    }
    printf("\n");
  }
  return 0;
}

http://codepad.org/fwE5wGhx

5分くらいだけど、":t C言語 文字列長" とかやってしまった。
忘れすぎである。

パクリコード

こういうコードだと、関数型っぽくていいかも?

id:teramako さんのをパクって twitter 用に短くしてみた。

[].reduce に index が渡されるのは知らなかった―!
基本はこのままでももう少し工夫できそうな気がする。