前提・実現したいこと
Rubyでビンゴゲームを作成していたらQiitaの回答でわからない箇所があったので、どなたか解説お願い致します。
該当のソースコード
card[-3..-1]="\n"
上記のコードの解説をお願い致します。
-3〜-1の範囲。つまり後ろから3番目までを改行に置き換える??ということでしょうか?
しかし、cardの後ろから3番目まではBINGOのなかのOGNの5列目最後〜最後から3番目の数字になりませんか?
それでなぜ改行できているのがわからないです。
Ruby
1 2class Bingo 3 def self.generate_card 4 5 b = (1..15).to_a.sample(5) 6 i = (16..30).to_a.sample(5) 7 n = (31..45).to_a.sample(5) 8 n[2] = "" 9 g = (46..60).to_a.sample(5) 10 o = (61..75).to_a.sample(5) 11 card = " B | I | N | G | O\n" 12 13 14 5.times do |j| 15 [b,i,n,g,o].each do |column| 16 card += column[j].to_s + " | " 17 end 18 19 card[-3..-1]="\n" # 右端の' | 'を改行に置換 20 end 21 return card 22 end 23end 24 25puts Bingo.generate_card
現在の私の認識ですが、
①ビンゴでランダムな数字を5つ作成。配列にした後、sampleメソッドの引数でユニークな数字を5つ取り出す
②BINGOの文字列(card)を用意
③処理を5回繰り返すtimesメソッドを使用してcardの文字列BINGOの下に数字を挿入していく。その際、文字列に変換して|と結合できるようにしている
④改行処理をしている。(ここがわからない)
⑤returnでクラスメソッドに返している
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/22 02:05 編集
2021/03/21 10:27
2021/03/22 02:06
2021/03/22 03:55
2021/04/02 14:30 編集