难以理解这个嵌套循环问题:
你有 10 颗鹅卵石(编号为 1-10)。它们默认为黑色。如果它们是黑色的,您必须通过将它们涂成白色或如果它们是白色的将它们涂成黑色来改变它们。有10轮。每一轮,你必须改变当前轮数倍数的鹅卵石。鹅卵石默认为黑色。
- 第一轮,你改变每一块鹅卵石(把它们涂成白色)。
- 第二轮,你改变所有其他的鹅卵石(你把#2、4、6、8、10的鹅卵石涂成黑色)。
- 第三轮,你改变卵石#3,6,9。
- 第四轮你改变卵石#4,8。
- ...
- ...
- 第 10 轮,你改变了 10 号卵石。
第 10 轮之后,哪些鹅卵石涂黑,哪些鹅卵石涂白?
下面是我没有运行的解决方案(我尝试通过制作一个数字数组(变成字符串)来做到这一点,如果涂成白色则添加“w”,如果涂成黑色则删除“w”。
(我已经尝试对其进行编辑以使其运行,但是我是嵌套循环的新手,我只是没有掌握这个概念)。如果有人可以向我解释我做错了什么并提供更好的解决方案,我将不胜感激。
pebbles = (1..10).map {|element| element.to_s}
pebble_colors = (1..10).map {|element| element.to_s}
(1..10).each do |round|
pebbles_to_paint = []
pebbles.each_with_index {|element, index| pebbles_to_paint << index if element % round == 0}
pebbles_to_paint.each do |pebble_number|
if pebble_color[pebble_number].include?("w")
pebble_color[pebble_number].delete!("w")
else
pebble_color[pebble_number] << "w"
end
end
end