LoginSignup
6
6

More than 5 years have passed since last update.

「これが10分でできない人は自分がかなりプログラミングができないというつらい事実を認識しましょう」のRuby解

Last updated at Posted at 2015-03-17

問題

FizzBuzz - これが10分でできない人は自分がかなりプログラミングができないというつらい事実を認識しましょう。 - Qiita

人数とカードが与えられたとき、分配後のカードを配列として返す関数を作成せよ。
カードは与えられた文字列の前から順番に配られ、配られるカードの枚数は均等で余りは無視することとする。

解答

def deal(people, cards)
  cards.chars.each_slice(people).take(cards.size / people).transpose
end

deal(5, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
=> [["a", "f", "k", "p", "u", "z", "E", "J", "O", "T"], ["b", "g", "l", "q", "v", "A", "F", "K", "P", "U"], ["c", "h", "m", "r", "w", "B", "G", "L", "Q", "V"], ["d", "i", "n", "s", "x", "C", "H", "M", "R", "W"], ["e", "j", "o", "t", "y", "D", "I", "N", "S", "X"]]

解答2

問題文が曖昧なので、文字列の配列で渡される場合の解答も。
.charsを取ればいいだけ。

def deal(people, cards)
  cards.each_slice(people).take(cards.size / people).transpose
end

トランプ作る

cards = %w[♥ ♣ ♦ ♠].product(["Ace", *2..10, *%w[Jack Queen King]]).map(&:join).push *["JOKER"] * 2

deal 5, cards
=> [["♥Ace", "♥6", "♥Jack", "♣3", "♣8", "♣King", "♦5", "♦10", "♠2", "♠7"], ["♥2", "♥7", "♥Queen", "♣4", "♣9", "♦Ace", "♦6", "♦Jack", "♠3", "♠8"], ["♥3", "♥8", "♥King", "♣5", "♣10", "♦2", "♦7", "♦Queen", "♠4", "♠9"], ["♥4", "♥9", "♣Ace", "♣6", "♣Jack", "♦3", "♦8", "♦King", "♠5", "♠10"], ["♥5", "♥10", "♣2", "♣7", "♣Queen", "♦4", "♦9", "♠Ace", "♠6", "♠Jack"]]

Rubyだとチートすぎる気がする

追記

え、えっとさっき変なことになってたけどtransposeつけ忘れただけです。
(消したい・・・)

参考

Python - 10分でできないとつらいらしいやつ - Qiita

6
6
0

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
6
6