根据使用 ruby 的组合,将数组值与另一个数组和 return 值进行比较
Compare array values with another array and return value depending on combinations using ruby
我有以下数组
prime_arr = [2,3,5,7,11,13]
我需要检查数组是否有 3、5、7 和 return 值因存在而异
如果它有3个单独return "Yes"和5个单独return "it is "和7个单独return "done"和
如果有[3,5] return "Yes it is "
如果它有 [3,5,7] return "Yes it is done"
return 值应因组合而异
提前致谢。
words = ['Yes', 'it is', 'done']
prime_arr = [2, 3, 5, 7, 11, 13]
target = [3, 5, 7]
words.take((prime_arr & target).size).join(" ")
已编辑:
prime_arr = [2, 3, 5, 7, 11, 13]
mapping = {
[3] => 'Yes',
[3, 5] => 'Yes it is',
[3, 5, 7] => 'Yes it is done'
}
mapping[prime_arr & [3, 5, 7]] # => 'Yes it is done'
mapping[prime_arr & [3, 5]] # => 'Yes it is'
mapping[prime_arr & [3]] # => 'Yes'
当 mapping
中的 none 个键匹配时,你得到一个 nil。
因为这看起来很像家庭作业(而且因为这里没有人为您编写代码而得到报酬),所以我不会给您实际的答案。然而,我会给你一些关于拼图碎片的指示 - 希望你能够将它们拼凑起来。
您可以使用#&
方法找到两个数组之间的交集。所以:
prime_arr = [2,3,5,7,11,13]
# => [2, 3, 5, 7, 11, 13]
prime_arr & [3]
# => [3]
prime_arr & [3,5]
# => [3, 5]
prime_arr & [3,5,7]
# => [3, 5, 7]
prime_arr & [4]
# => []
case 语句可以切换数组值,如下所示:
a = [1,2]
case a
when [1]; "just one"
when [1,2]; "both"
end
# => "both"
祝你好运!
其他三种情况你没说清楚,我猜的。
[[3, 5, 7], ["Yes ", "it is ", "done"]]
.transpose.each.with_object(""){|(i, w), s| s << w if prime_arr.include?(i)}
我有以下数组
prime_arr = [2,3,5,7,11,13]
我需要检查数组是否有 3、5、7 和 return 值因存在而异
如果它有3个单独return "Yes"和5个单独return "it is "和7个单独return "done"和
如果有[3,5] return "Yes it is "
如果它有 [3,5,7] return "Yes it is done"
return 值应因组合而异
提前致谢。
words = ['Yes', 'it is', 'done']
prime_arr = [2, 3, 5, 7, 11, 13]
target = [3, 5, 7]
words.take((prime_arr & target).size).join(" ")
已编辑:
prime_arr = [2, 3, 5, 7, 11, 13]
mapping = {
[3] => 'Yes',
[3, 5] => 'Yes it is',
[3, 5, 7] => 'Yes it is done'
}
mapping[prime_arr & [3, 5, 7]] # => 'Yes it is done'
mapping[prime_arr & [3, 5]] # => 'Yes it is'
mapping[prime_arr & [3]] # => 'Yes'
当 mapping
中的 none 个键匹配时,你得到一个 nil。
因为这看起来很像家庭作业(而且因为这里没有人为您编写代码而得到报酬),所以我不会给您实际的答案。然而,我会给你一些关于拼图碎片的指示 - 希望你能够将它们拼凑起来。
您可以使用#&
方法找到两个数组之间的交集。所以:
prime_arr = [2,3,5,7,11,13]
# => [2, 3, 5, 7, 11, 13]
prime_arr & [3]
# => [3]
prime_arr & [3,5]
# => [3, 5]
prime_arr & [3,5,7]
# => [3, 5, 7]
prime_arr & [4]
# => []
case 语句可以切换数组值,如下所示:
a = [1,2]
case a
when [1]; "just one"
when [1,2]; "both"
end
# => "both"
祝你好运!
其他三种情况你没说清楚,我猜的。
[[3, 5, 7], ["Yes ", "it is ", "done"]]
.transpose.each.with_object(""){|(i, w), s| s << w if prime_arr.include?(i)}