gpt4 book ai didi

ruby - 回文数

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

这是工作代码:

p = (10..14).map { |a|
(a..14).map { |b|
a * b
}
flatten.select { |p|
p.to_s == p.to_s.reverse
}

但我想保留产生“a * b”的“a”和“b”的信息:

p = (10..14).map { |a|
(a..14).map { |b|
[a, b, a * b, '=']
}
}.select { |v|
v[2].to_s == v[2].to_s.reverse
}

puts p

此代码打印的不是回文数。我想原因是数组变平了。我需要如何更改代码才能获得回文数?

最佳答案

您只想展平一层,因此请改用 flatten(1)

(10..14).map { |a|
(a..14).map { |b|
[a, b, a * b, '=']
}
}.flatten(1).select { |v|
v[2].to_s == v[2].to_s.reverse
}

或者,用 flat_map 替换你的外部 map :

(10..14).flat_map { |a|
(a..14).map { |b|
[a, b, a * b, '=']
}
}.select { |v|
v[2].to_s == v[2].to_s.reverse
}

注意:flatten 从 Ruby 1.8.7 开始接受一个参数。 flat_map是 Ruby 1.9.2 的新功能。确保你有正确的版本,或 require "backports/1.9.2/enumerable/flat_map"需要“backports/1.8.7/array/flatten”

关于ruby - 回文数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5438098/

24 4 0