Я думаю, что это то, что вы хотите:
a = [1,2,3,4]
b = [5,6,7,8]
a.map.each do |x|
b.map.each do |y|
if !(x == 1 && y == 7) && !(x == 4 && y == 8)
puts "#{x} and #{y}"
end
end
end
(проверено на кодовой панели )
Ваш старый код проверял только то, что !(x == 1 && y == 7)
было правдой ИЛИ !(x == 4 && y == 8)
было правдой - он не проверял их обоих. Поэтому, когда x равнялся 1, а y равнялся 7, первый puts
не выполнялся, а второй выполнялся. Выполните этот код, чтобы лучше отследить его:
a = [1,2,3,4]
b = [5,6,7,8]
a.map.each do |x|
b.map.each do |y|
if !(x == 1 && y == 7)
puts "First #{x} and #{y}"
elsif !(x == 4 && y == 8)
puts "SEcond #{x} and #{y}"
end
end
end