gpt4 book ai didi

ruby-on-rails - 如何修改这个数组?

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:40 25 4
gpt4 key购买 nike

我有以下数组:

input_array = ["aa", "aa", "--", "--", "--", "aa", "--", "--"] 

如何用递增的数字替换上例中的“aa”值?喜欢下面的结果:

output_array = [1, 2, "--", "--", "--", 3, "--", "--"] 

我正在尝试维护一个计数器,然后针对给定的键循环多次:

这行得通,但我在寻找是否有更好的方法来解决这个问题 -


a = ["-W-", "-C-", "-A-", "-A-", "-W-", "-W-", "-C-", "-A-", "-A-", "-W-", "---", "---", "---", "-A-", "-W-"]
counts = {"-A-"=>0, "-C-"=>0, "-W-"=>0, "---"=>0 }
a.each { |e| counts[e] += 1 }

counter = 1
counts.each do |key, value|
ax = a.each_index.select{ |i| a[i] == key }
ax.each_with_index do |ss, si|
a[ss] = counter
counter += 1
end
end

p a

最佳答案

一个可能的选项,使用Array#slice计算切片数组的出现次数和 Enumerable#each_with_index :

ary = ["aa", "aa", "--", "--", "--", "aa", "--", "--", "aa"]

ary.map.with_index { |e, i| e == "aa" ? ary[0..i].count("aa") : e }
#=> [1, 2, "--", "--", "--", 3, "--", "--", 4]


对于第二部分,如果我明白了,你可以 Enumerable#group_by然后 Hash#transform_values :

a = ["-W-", "-C-", "-A-", "-A-", "-W-", "-W-", "-C-", "-A-", "-A-", "-W-", "---", "---", "---", "-A-", "-W-"]
a.group_by { |e| e }.transform_values { |v| v.size }
#=> {"-W-"=>5, "-C-"=>2, "-A-"=>5, "---"=>3}

关于ruby-on-rails - 如何修改这个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54480312/

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