1

ソートされた要素の配列があります(一意で連続していません):

array= ["AAA", "BBB", "CCC", "DDD", "EEE"]

一連の要素を定義しました。

range_1 = ("CC" .. "DD")
range_2 = ("B" .. "E")

要素の範囲は、要素を参照する単なる文字列ですが、これらの要素のarray場合のみです。例:starts_with?true

"C", "CC" and "CCC" in range - fits to "CCC" in array
"D", "DD" and "DDD" in range - fits to "DDD" in array

range_1との望ましい結果は次のrange_2ようになります。

result_1 = ["CCC", "DDD"]
result_2 = ["BBB", "CCC", "DDD", "EEE"]

これをRubyで実装する方法は?

4

2 に答える 2

3

別の方法:

def git_em(array, range)
  array.select {|e| range.any? {|r| e.start_with? r}}
end

array= ["AAA", "BBB", "CCC", "DDD", "EEE"]
range_1 = ("CC" .. "DD")
range_2 = ("B" .. "E")

git_em(array,range_1) # => ["CCC", "DDD"]
git_em(array,range_2) # => ["BBB", "CCC", "DDD", "EEE"] 
于 2013-11-01T21:22:08.683 に答える
1

コンセプトは前の質問と同じです。

array= ["AAA", "BBB", "CCC", "DDD", "EEE"]

range_1 = ("CC" .. "DD")
range_2 = ("B" .. "E")

def subarray(array, range)
  from = range.first
  to = range.last
  idx_from = array.index{ |e| e.start_with?(from) }
  idx_to = array.index{ |e| e.start_with?(to) }
  array[idx_from..idx_to]
end

p subarray(array, range_1)
#=> ["CCC", "DDD"]

p subarray(array, range_2)
#=> ["BBB", "CCC", "DDD", "EEE"]
于 2013-11-01T19:43:11.797 に答える