gpt4 book ai didi

ruby - 每隔一个删除一个元素,直到剩下一个 ruby

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

我试图删除每个第二个元素,直到只剩下一个。所以它从 1 开始跳过,删除,跳过,删除等等。

到目前为止我有这样的东西

   l =* (1..10)
until l.length == 1
l = l.each_slice(2).map(&:first)
puts l
end

这有几个问题。而 each_slice 实际上只是挑选每第二个元素而不是删除第二个元素。最后的结果应该是5。

我寻找的不一定是最漂亮的解决方案,而是最简单的解决方案。

感谢你的帮助

最佳答案

l =* (1..10)
until l.length == 1
l.rotate!(2).pop
end
puts "#{l}"

轮换,我想因为我不确定它是如何实现的,会减慢它的速度。虽然,我宁愿为这个问题创建一个双向循环链表,因为这是著名的 Flavius Josephus problem 的特例。 .

HTH

编辑:@MarkThomas 建议的单行

l =* (1..10)
l.rotate!(2).pop until l.length.one?
puts "#{l}"

关于ruby - 每隔一个删除一个元素,直到剩下一个 ruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26567711/

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