問題は下記URLを参照。
class Bingo
def self.generate_card
puts " B| I| N| G| O"
[[*1..15],[*16..30],[*31..45],[*46..60],[*61..75]].map{|s|
s.sample(5)
}.transpose.each_with_index{|array, i|
array[2] = ' ' if i == 2
puts array.map{|s| s.to_s.rjust(2)}.join('|')
}
end
end
Bingo.generate_card
模範解答はrubyすぎてわからないので、Qiitaで調べてわかりそうなものを選びつつ(それでもまったくわからん!)
目次
今日の積み上げ
[1..15] 連続する数字の配列を作るときは[..]Rangeクラスにをつけると展開できる。
.sample()
指定した個数の要素をランダムに取り出す。
例
[*1..15].sample(5) # => [12, 7, 4, 11, 10]というような形
.trancepose
複数の配列の1番目、2番めと言う形で配列を作り、
行と列の入れ換えをおこなう。
if 修飾子
後置if
ifの書き方がいろいろあるってことだけわかりました。
%2s
フォーマット文字列
‘s’は文字列を出力する
Qiitaに書いたらいいんだろうけど少々ビビってます!
おすすめテキスト
テストを書かれた伊藤さんのチェリー本で勉強しています。