2013-11-30 4 views
0

У меня есть этот код:Проверьте массив содержит число из другого массива

tickets = Array.new(10) {rand(99999)+1} 

list = [] 
(list << '%05i' % (rand(99999)+1)).uniq! while list.length < 5 
number1, number2, number3, number4, number5 = list 

Как я могу проверить, если ticket имеет выигрышный номер? Есть пять выигрышных номеров, потому что у каждого есть разные призы.

+0

Как это, 'list' содержит строки, а' билеты' содержат строки. – steenslag

+0

Что такое «выигрышный номер»? Что такое «приз»? К чему относится «одно»? – sawa

+0

@sawa - например, если массив 'tickets' состоит из' number1', то приз за этот билет составляет 40 $, если 'билеты' состоят из' number2', то приз за этот билет составляет 20 $. –

ответ

1

Может быть что-то, как показано ниже:

[number1, number2, number3, number4, number5].find{|e| tickets.include? e } 
4

Массив Руби включает &:

Set Intersection - возвращает новый массив, содержащий элементы, общие для двух массивов, за исключением каких-либо дубликатов. Порядок сохраняется из исходного массива.

Он сравнивает элементы, используя их хэш и eql? методы эффективности.

ary1 = [1,2,3] 
ary2 = [2,4,6] 

ary1 & ary2 # => [2] 

Это работает с любым типом объекта:

ary1 = %w[a b c] 
ary2 = %w[c d e] 

ary1 & ary2 # => ["c"] 

Так что, если у вас есть список билетов, а также один выигрышный билет:

tickets = [1,2,3] 
winning_ticket = [2] 

tickets & winning_ticket # => [2] 
Смежные вопросы