gpt4 book ai didi

ruby - 在 ruby​​ 中迭代多个数组的优雅简洁的方法是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 07:40:54 25 4
gpt4 key购买 nike

我喜欢 Ruby 的地方在于它的优雅:如果我们使用 injectmap 以及 take_whileselect,我们可以将 block 链接在一起,实现很多,而写的很少。

坚持单行解决方案的想法,如何在 Ruby 中编写嵌套的 for 循环而不编写整个嵌套的 for 循环?我觉得这一定是可能的,我只是无法终生弄清楚它是什么。我正在寻找这样的东西:

10.times {|a| 10.times {|b| a*b}}

我能想出的唯一优雅的解决方案是嵌套的 for 循环。有没有人有更好的解决方案?

array = []
for a in (1..10)
for b in (1..10)
array << a*b
end
end

最佳答案

数组有一些很酷的方法。

 Array(1..10).repeated_permutation(2).map {|a, b| a*b }

#repeated_permutation 将获取一个数组并生成该数组的所有排列的给定长度(在本例中为 2)的数组,允许重复(即 [1, 1])。然后我们可以将每对的乘积映射到最终数组中。

您可以使用 inject(:*) 对此进行概括。这将采用结果排列并将每个排列的所有元素相乘。例如,要生成 (1*1*1*1)..(10*10*10*10)(产生 10,000 个元素的输出集!):

Array(1..10).repeated_permutation(4).map {|v| v.inject :*}

关于ruby - 在 ruby​​ 中迭代多个数组的优雅简洁的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17539681/

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