gpt4 book ai didi

arrays - 来自多个数组的元素的组合

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

我正在从事一个化学研究项目,我需要为各种角度创建文件。我想要以下所有组合:

angle1 can be from [0, -36, -72, -108, -144, -180]
angle2 can be from [-180, -108, -36]
angle3 can be from [0, -36, -72, -108, -144, -180]
angle4 can be from [-180, -108, -36]

我为此编写了一些 Ruby 代码,但它似乎只提供了预期组合数量的一半。我的编程技能不是很好,所以我想知道是否有人可以告诉我我做错了什么。

非常感谢您提供的任何帮助:

phi1 = [0, -36, -72, -108, -144, -180]
psi1 = [-180, -108, -36]

phi2 = [0, -36, -72, -108, -144, -180]
psi2 = [-180, -108, -36]

psi1.each do |a|
psi2.each do |b|
phi1.each do |c|
psi2.each do |d|

line1 = 'select' + "#{b}" + '}}'
line2 = 'select' + "#{a}" + '}}'
line3 = 'select' + "#{d}" + '}}'
line4 = 'select' + "#{c}" + '}}'

filename = "angles#{b}_#{a}_#{d}_#{c}"
puts filename
puts line1
puts line2
puts line3
puts line4
end
end
end
end

预期输出将是“puts filename”,其中文件名将是 phi1、psi1、phi2、psi2 的每个组合。我预计它会放 324 次,但它只放了 162 次。

最佳答案

你应该使用 Array#product在这里。

phi1 = [0, -36, -72, -108, -144, -180]
psi1 = [-180, -108, -36]
phi2 = [0, -36, -72, -108, -144, -180]
psi2 = [-180, -108, -36]

phi1.product(psi1, phi2, psi2).each do |arr|
puts "angles#{ arr.join("_") }"
arr.each { |angle| puts "select #{angle}" }
end

angles0_-180_0_-180
select 0
select -180
select 0
select -180
angles0_-180_0_-108
select 0
select -180
select 0
select -108
...
angles-180_-36_-180_-108
select -180
select -36
select -180
select -108
angles-180_-36_-180_-36
select -180
select -36
select -180
select -36

phi1.product(psi1, phi2, psi2).count
#=> 324

关于arrays - 来自多个数组的元素的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38835200/

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