我有以下数组
prime_arr = [2,3,5,7,11,13]
我需要检查数组是否有3,5,7并根据状态返回值(
)如果它有3个单独返回“是”并且5个单独返回“它是”并且7单独返回“完成”和
如果[3,5]返回“是的话”
如果[3,5,7]返回“是,则完成”
返回值应根据组合
而有所不同提前致谢。
答案 0 :(得分:2)
因为这看起来很像家庭作业(因为这里没有人为你编写代码而付钱),所以我不打算给你实际答案。然而,我会给你一些指向拼图的部分 - 希望你能把它们拼凑起来。
您可以使用#&
方法找到两个数组之间的交集。所以:
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语句可以切换Array值,如下所示:
a = [1,2]
case a
when [1]; "just one"
when [1,2]; "both"
end
# => "both"
祝你好运!
答案 1 :(得分:0)
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
中没有任何键匹配时,你会得到一个零。
答案 2 :(得分:0)
不确定你还没有弄清楚的其他三个案例,所以我猜。
[[3, 5, 7], ["Yes ", "it is ", "done"]]
.transpose.each.with_object(""){|(i, w), s| s << w if prime_arr.include?(i)}