将数组值与另一个数组进行比较,并根据使用ruby的组合返回值

时间:2015-01-05 07:41:36

标签: ruby arrays

我有以下数组

prime_arr = [2,3,5,7,11,13]

我需要检查数组是否有3,5,7并根据状态返回值(

如果它有3个单独返回“是”并且5个单独返回“它是”并且7单独返回“完成”和

如果[3,5]返回“是的话”

如果[3,5,7]返回“是,则完成”

返回值应根据组合

而有所不同

提前致谢。

3 个答案:

答案 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)}