ビンゴカード作成問題を写経しつつわからないところを調べてみる

  • このエントリーをはてなブックマークに追加
ruby

問題は下記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に書いたらいいんだろうけど少々ビビってます!

おすすめテキスト

テストを書かれた伊藤さんのチェリー本で勉強しています。

SNSでもご購読できます。

コメントを残す

*