明日から本気出す

ただの備忘録

Re: Re: 10分でコーディング

会社の先輩がやっていたので自分も。

難易度 激簡単 目標時間10分以内


あなたはこれからトランプを配っていきます。
あなたにはトランプを配る人数、
そしてトランプが渡されます。
今回はとても簡単なので例題で説明します。


例)
2つの引数がもらえます。

3
"123123123"

最初の3はプレイヤーの人数を示しています。

"123123123" はトランプの並びを示しています。あなたはこのなかのトランプを
配っていかなければなりません。

この場合、あなたのプログラムは

{"111","222","333"}

を返さなければなりません。

"111"は一番めのプレイヤーが受け取るトランプです。
"222"が2番目のプレイヤーが受け取るトランプです。
"333"が2番目のプレイヤーが受け取るトランプです。


ところが、以下のような場合もあります。

すべてのプレイヤーは同じ数だけのトランプを受け取らなければなりません。
ですので

4
"123123123"

この場合、あなたのプログラムは

{"12","23","31","12"}

を返さなければなりません。

{"123","23","31","12"} は駄目です。

では、以下にもうすこし例をのせます。

例1)
6
"012345012345012345"
Returns: {"000", "111", "222", "333", "444", "555" }

例2)
4
"111122223333"
Returns: {"123", "123", "123", "123" }

例3)
1
"012345012345012345"
Returns: {"012345012345012345" }

例4)
6
"01234"
Returns: {"", "", "", "", "", "" }

例5)
2
""
Returns: {"", "" }


クラス名、などは以下のとおりです。

Class:    Cards
Method:    deal
Parameters:  int, String
Returns:   String
Method signature: String
deal(int numPlayers, String deck)

10分でコーディング|プログラミングに自信があるやつこい!!

久々にrubyを書いてみた。
久々すぎて文法忘れてました (ノω・)テヘ

class Cards
  def deal(numPlayers, deck)
    cards = Array.new(numPlayers, "")
    return cards if numPlayers > deck.length
    deck.split(//).each_with_index do |c, i|
      break if i >= deck.length - deck.length % numPlayers
      cards[i%numPlayers] += c
    end
    return cards
  end
end

エレガントに書けるようになりたいぜぇщ(゚д゚щ)