【发布时间】:2023-03-22 09:36:01
【问题描述】:
我被这个代码问题困住了——我需要遍历一个布尔数组 100 次。说明:
戴帽子的猫
你有 100 只猫。你的规则很简单:每当你拜访一只猫时,你切换它的帽子状态(如果它已经有一顶帽子,你把它拿掉。如果它没有帽子,你戴上一顶)。所有的猫都开始不戴帽子。您循环 100 轮来访的猫。在第一轮,你拜访每只猫。在第二轮中,你拜访了其他所有的猫。在第 n 轮中,您访问每 n 只猫......直到第 100 轮,您只访问第 100 只猫。在 100 轮结束时,哪些猫有帽子?
从 JS 开始接触 Ruby 并坚持如何实现这一点。我认为我的逻辑是正确的,我只是无法改变数组中布尔值的值。
非常感谢任何建议!
谢谢
def cats_in_hats
cats = []
i = 0
while i< 100
cats << false
i = i + 1
end
puts cats
round = 1;
while round < 10
#
cats = cats.each_with_index do |cat, idx|
if idx % round == 0
puts "toggle index #{idx} divisible by round #{round}"
cat = !cat
puts cat
end
end
round = round + 1
end
puts cats
end
puts "------Cats in Hats------"
puts cats_in_hats == [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
【问题讨论】:
标签: arrays ruby boolean iteration