加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

数组 – 如何从数组中删除相反的值?

发布时间:2020-12-17 04:23:58 所属栏目:百科 来源:网络整理
导读:我有一个问题,我正在尝试创建一个方向数组,其中每个方向都不是多余的. plan = ["NORTH","SOUTH","EAST","WEST","NORTH","WEST"] 正如您所看到的,此计划中的大多数值都是多余的,您也可以简单地告诉该人去“西部”. plan = ["NORTH","EAST"] 我还希望上面的计
我有一个问题,我正在尝试创建一个方向数组,其中每个方向都不是多余的.
plan = ["NORTH","SOUTH","EAST","WEST","NORTH","WEST"]

正如您所看到的,此计划中的大多数值都是多余的,您也可以简单地告诉该人去“西部”.

plan = ["NORTH","EAST"]

我还希望上面的计划返回一个空数组.

解决方法

鉴于一系列方向:
plan = %w[NORTH SOUTH SOUTH EAST WEST NORTH WEST]
#=> ["NORTH","WEST"]

我会将方向转换为x和y坐标:

x,y = 0,0

plan.each do |direction|
  case direction
  when 'NORTH' then y += 1
  when 'EAST'  then x += 1
  when 'SOUTH' then y -= 1
  when 'WEST'  then x -= 1
  end
end

‘NORTH’递增y,’SOUTH’递减y,同样对’EAST’/’WEST’和x递减.

使用示例数组,它给出:

x #=> -1
y #=> 0

这些必须转换回一系列方向:

[
  *Array.new(y.abs) { y.positive? ? 'NORTH' : 'SOUTH' },*Array.new(x.abs) { x.positive? ? 'EAST' : 'WEST' }
]
#=> ["WEST"]

虽然这不是最短的代码,但掌握IMO相对容易.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读