gpt4 book ai didi

ruby - 我如何使用 Ruby 找到数组或字符串中每三个数字的乘积?

转载 作者:太空宇宙 更新时间:2023-11-03 17:24:06 24 4
gpt4 key购买 nike

这只是我在脑海中想到的一个随机场景,如果我有这个数组的话:

[3,2,5,6,7,8,9,1,2]

和这个字符串:

'325678912'

我将使用 Ruby 编写什么代码,它会产生以下内容:

3*2*5 = 30, 6*7*8 = 336, and 9*1*2 = 18 

并将其放入一个数组中:

[30,336,18]

抱歉,我忘记输入返回错误答案的代码:

b = [3,2,5,6,7,8,9,1,2]


first = 0
third = first + 2
array = []
while first<b.length
prod=1
b[first..third].each do |x|
prod*=x.to_i
array<<prod
end
first+=2
third = first + 2
end

print array

还有我的另一段字符串代码:

a = '325678912'

number = a.split('')
first = 0
third = first + 2
array = []
while first<number.length
prod=1
number[first..third].each do |x|
prod*=x.to_i
array<<prod
end
first+=2
third = first + 2
end

print array

对于这两段代码,我得到了这个答案:[3, 6, 30, 5, 30, 210, 7, 56, 504, 9, 9, 18, 2],我想要的是:[30,336, 18]

谁能告诉我我的代码有什么问题?

提前致谢!

最佳答案

使用Enumerable#each_slice :

[3,2,5,6,7,8,9,1,2].each_slice(3).map { |a,b,c| a*b*c }
# => [30, 336, 18]
[3,2,5,6,7,8,9,1,2].each_slice(3).map { |x| x.reduce(:*) }
# => [30, 336, 18]

使用String#chars将字符串转换为单个字符串数组。然后使用上面的代码得到结果:

'325678912'.chars
# => ["3", "2", "5", "6", "7", "8", "9", "1", "2"]
'325678912'.chars.map(&:to_i)
# => [3, 2, 5, 6, 7, 8, 9, 1, 2]
'325678912'.chars.map(&:to_i).each_slice(3).map { |a,b,c| a*b*c }
# => [30, 336, 18]

关于ruby - 我如何使用 Ruby 找到数组或字符串中每三个数字的乘积?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19298710/

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