2つの配列を比較したいと思います。配列と比較して一致しない要素を数える方法 - Ruby
arr1 = ["A", "B", "C"]
arr2 = ["A", "D", "E"]
その二つの要素があるので、私は2を返すメソッドが必要になります。一人一人には文字が異なっている場合、それは例えば一致しませんでした手紙に等しい数を返し、3つの文字を持っています一致しません。
2つの配列を比較したいと思います。配列と比較して一致しない要素を数える方法 - Ruby
arr1 = ["A", "B", "C"]
arr2 = ["A", "D", "E"]
その二つの要素があるので、私は2を返すメソッドが必要になります。一人一人には文字が異なっている場合、それは例えば一致しませんでした手紙に等しい数を返し、3つの文字を持っています一致しません。
Enumerable#zipとArray#countを使用できます。
arr1.zip(arr2).count { |a1,a2| a1!=a2 }
#=> 2
注
arr1.zip(arr2)
#=> [["A", "A"], ["B", "D"], ["C", "E"]]
同等に、Array#transposeを使用しています。あなたの配列は同じ長さであり、重複していないと仮定すると、
[arr1, arr2].transpose.count { |a1,a2| a1!=a2 }
#=> 2
あなたの答えは、いつものように、ルビーのように正確です。 –
また、それを徐々に煮詰めるには、 'arr1.zip(arr2).map(&:uniq).map(&:length).count(1)'を実行します。 – tadman
が、これは速くなるだろう:
arr1.length - (arr1 & arr2).length
# => 2
'arr1 = [1,2]'と 'arr2 = [2,1]'なら結果は2になると思うが、ゼロを得る。たぶん私たちはその質問を違った方法で解釈しました。 –
@CarySwovelandええ、それは言いたいことは言います。 「マッチ」とは何ですか?ポジションは重要かどうか? – coreyward
なぜあなたは単に行わない '(ARR1 - ARR2).length' ? –
"A"の場合、このエラーは '未定義のメソッド' - 'を返します:String' – Bitwise
[ここ](https://repl.it/FILI)はうまく動作します。 –