比较数组并为每个相等元素打印符号

时间:2017-12-16 10:33:45

标签: arrays ruby

我想比较两个数组AB,例如:

A = [3,1,4,5]
B = [3,6,4,1]

并打印出符号'^'(数组B)以匹配元素,'+'用于匹配与其他数组位于同一索引位置的元素(数组{{ 1}})。输出应该是这样的:

A

2 个答案:

答案 0 :(得分:2)

在ruby中有许多方法可以做到这一点。这是一种非常灵活和富有表现力的语言。以下是一些:

yarn add vue-router --dev

一些小调:

  • 您应该将此逻辑移动到单独的方法中,然后仅将A = [3,1,4,5] B = [3,6,4,1] # 1. puts( B.map.with_index do |b_item, index| if A[index] == b_item '+' elsif A.include?(b_item) '^' else ' ' end end.join ) # 2. B.each_with_index do |b_item, index| print( if A[index] == b_item '+' elsif A.include?(b_item) '^' else ' ' end ) end # 3. puts( A.zip(B).map do |a_item, b_item| if a_item == b_item '+' elsif A.include?(b_item) '^' else ' ' end end.join ) / puts移动到该方法调用的结果中。这会使print / puts看起来不那么不合适,并允许您将结果用于其他事情。
  • 解决方案print略有不同,因为最后不会打印换行符。 (你没有在问题中指明这个?)

就个人而言,我会采用第一种方法,因为它最容易理解。

答案 1 :(得分:0)

B.map.with_index do |e, i|
  next '+' if A[i] == e
  A.index(e) ? '^' : ' '
end.join