2016-08-21 8 views
-1

の数を見つけますか?アレイは、私はこのような配列を持つたとえば同じ要素

ありがとうございます。ここで

+0

2つのポインタ(前と現行)を維持し、それらの2つのポインタを比較する配列を反復処理します。 –

+1

配列が 'arr = [" b "、" b "、" a "、" a "、" a "、" b "、" a "]'で、 '' a ''の最初の実行が数えれば、答えは「3」になります。正しい?もしそうなら、あなたの配列が '' a "'で始まらなかった方が良いでしょう。混乱してしまいました。ちなみに、例を挙げると、各入力オブジェクト(例えば 'arr = [" a "、" a "....')に変数を代入することで、読者は答えやコメントで変数を参照することができますそれを定義する。 –

答えて

1
def nbr_consecutive(arr, str) 
    start_ndx = arr.index(str) 
    return 0 if start_ndx.nil? 
    a = arr[start_ndx..-1]  
    a.index { |s| s != str } || a.size 
end 

arr = %w| e e a a a a b c d a a a | 
    #=> ["e", "e", "a", "a", "a", "a", "b", "c", "d", "a", "a", "a"] 

nbr_consecutive(arr, "e") 
    #=> 2 
nbr_consecutive(arr, "a") 
    #=> 4 
nbr_consecutive(arr, "b") 
    #=> 1 
nbr_consecutive(arr, "z") 
    #=> 0 
+0

あなたの手紙店は母音を使い果たしましたか? :-P –

+0

@Jörg、はい、私は東ヨーロッパに行ったことがありますが、そこには莫大な不足があります。 –

-2
array = ["a","a","a","a","b","c","d","a","a","a"] 

array.chunk{|char| char}.map{|char, a| a.size if char == "a"}.first 
+0

ありがとうございますが、私の予想される結果は '4'です。なぜなら最初の4つの 'a'は 'b'に変わるまで計算するからです。 – pyfl88

+0

これに別の文字を追加すると、数は4ではなく5になります。リストには4つの一意の文字があるため、偶然にのみ4になります。 – Makoto

+0

指定された要素の数を検索しますか?例えば ​​"a"は、7を返しますか? –

0

は、アイデアは、あなたが欲しいの手紙を見つけるまで、最初の文字を削除して、あなたの手紙を数えることである私が

list.drop_while { |letter| letter != letter_to_find }.take_while { |letter| letter == letter_to_find }.count 

と考えることができる最もルビーっぽい方法ですあなたの手紙ではない手紙に達するまでしたい。

だからたとえばあなただけtake_whileがあなたの具体的な例のために必要ですが、あなたが欲しいの文字の前の文字を持っている場合drop_whileが必要であることはない

["a","a","a","a","b","c","d","a","a","a"].drop_while { |letter| letter != "a" }.take_while { |letter| letter == "a" }.count 

を行うだろう。

1
letters = ["a","a","a","a","b","c","d","a","a","a"] 
letters.take_while { |letter| letter == letters.first }.count 
=> 4 
+0

私はあなたがその質問を誤解しているかもしれないと思います。私の読みはそれです。一致する値が '' b ''ならば、その数は1になります。 –

1
array = ["a","a","a","a","b","c","d","a","a","a"] 

あなただけに関係なく、それが何であるか、最初の値を気にしない場合:

p array.slice_when(&:!=).first.size #=> 4 

# same as array.slice_when{|x,y| x != y }.first.size #=> 4 

あなたが特定の値を探すために必要がある場合:

p array.slice_when(&:!=).find{|x| x.first == 'b' }.size #=> 1 

またはおそらく:

p array.slice_when(&:!=).to_a.assoc('a').size #=> 4 
関連する問題