Поиск в Ruby через многомерный массив - PullRequest
3 голосов
/ 01 октября 2011

Изучая всю прелесть кода на Ruby, мне стало интересно, есть ли простой / прямой поиск в многомерном массиве. У меня есть мульти-массив с 4 индексами, которые содержат разные номера. Я хочу найти хотя бы один индекс, соответствующий содержимому, другой массив ... seudo codez

multi_array = [ [1,3,7], [3,1,4], [1,3,4], [0,9,2]]
numbers_looking_to_match = [1,5,9]
multi_array.each do | elmt |
  elmt.each_with_index do |elmt, idx|
    if elmt == numbers_looking_to_match.each { |e| puts "match" }
  end 
end

Я хочу, чтобы это возвращало новый мульти-массив со всеми несоответствующими символами, удаленными для исходного мульти-массива.

Ответы [ 3 ]

6 голосов
/ 02 октября 2011

Использование Array#& для пересечения,

multi_array.map {|a| a & numbers_looking_to_match }
1 голос
/ 02 октября 2011

Чтобы очистить каждый элемент от нежелательных символов:

require 'set'
multi_array=[ [1,3,7], [3,1,4], [1,3,4], [0,9,2]]
numbers_looking_to_match=Set.new([1,5,9])

scrubbed=multi_array.collect{ |el|
  numbers_looking_to_match.intersection(el).to_a
}

puts scrubbed.inspect
# prints [[1], [1], [1], [9]]
1 голос
/ 02 октября 2011

multi_array.each { |elem| numbers_looking_to_match.each { |x| elem.delete(x) if elem.include?(x)}}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...