gpt4 book ai didi

arrays - 使用 .each 在交易数组中找到最小的负数和最小的正数

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

我有一组交易数据:

transactions = [50_000, -2_000, -25_000, 4_000, -12_000, 5_000, -800, -900, 43_000, -30_000, 15_000, 62_000, -50_000, 42_000]

我想从该列表中检索最大的负数(最小提款)和最小的正数(最小存款)。提款以负数表示。存款都是正数。

我无法理解获得预期结果(最小取款和最小存款)所需的逻辑

下面,我目前从数组中得到最大取款和最大存款:

smallest_withdrawal = 0
transactions.each do |transaction|
if transaction < smallest_withdrawal
smallest_withdrawal = transaction
end
end
puts smallest_withdrawal

smallest_deposit = 0
transactions.each do |transaction|
if transaction > smallest_deposit
smallest_deposit = transaction
end
end
puts smallest_deposit

我没有收到错误消息,但没有得到我想要的结果,而是得到了相反的结果。我需要逻辑运算符方面的帮助。

最佳答案

如何利用 Ruby 的内置操作来定义合适的取款和存款子集?

smallest_withdrawal = transactions.select { |x| x < 0 }.max
smallest_deposit = transactions.select { |x| x > 0 }.min

这也可以写成:

smallest_withdrawal = transactions.select(&:negative?).max
smallest_deposit = transactions.select(&:positive?).min

另一种变体是:

negatives, positives = transactions.partition(&:negative?)
smallest_withdrawal = negatives.max
smallest_deposit = positives.min

最后,如果您愿意神秘地获得一条线:

smallest_withdrawal, smallest_deposit = transactions.partition(&:negative?).map(&:minmax).flatten[1..2]

不过,出于可读性原因,我不建议这样做。

关于arrays - 使用 .each 在交易数组中找到最小的负数和最小的正数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57384436/

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