gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 06:57:46 24 4
gpt4 key购买 nike

我在尝试创建方向数组时遇到问题,其中每个方向都不是多余的。

plan = ["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]

如您所见,此计划中的大部分值都是多余的,您也可以简单地告诉此人去 “WEST”

plan = ["NORTH", "WEST", "SOUTH", "EAST"]

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

最佳答案

给定一个方向数组:

plan = %w[NORTH SOUTH SOUTH EAST WEST NORTH WEST]
#=> ["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]

我会将方向转换为 xy 坐标:

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 相对容易。

关于arrays - 如何从数组中删除相反的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39747442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com