下のように「a」が6つ「nil」が4つ文字列があった時
3番目から9番目(m[2..8])にaがいくつあるか。
m = [ "a" , "a" , "a" , "a" , "a" , "a" , nil , nil , nil, nil ]
m[2..8].count("a") => 4
文字列の中に文字列がある場合は
m = [[ "a" , "a" , "a" , "a" , "a" , "a" , nil , nil , nil , nil ],
[ nil , nil , nil , nil , "a" , "a" , "a" , "a" , "a" , "a" ]]
# 上段
m[0][2..8].count("a") => 4
# 下段
m[1][2..8].count("a") => 5
*縦に調べたい場合、同じようにすると間違います。(失敗例)
(m[0][0]とm[0][1]でaの数を調べる)
# 左から1番目の列
m[0..1][0].count("a") => 6
同じようにするとなぜか6になります。(上段のaの数になる)
*理由を知っている方がいたら教えてください。
mapを使って一段ずつ呼び出して、今回は一番左の列の情報が欲しいので、i[0]としています。
m.map{|i|i[0]}.count("a") => 1
配列の中に条件(i > 4)に当てはまった数を返す。
a=[1,2,3,4,5]
a.count{|i|i > 4} => 1
もっと良い方法があったり、こういう考え方もあると思った人はコメントしていただけると助かります。