【发布时间】:2013-06-10 03:15:43
【问题描述】:
很难理解这个嵌套循环问题:
你有 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
【问题讨论】:
-
你必须使用嵌套循环来解决这个问题吗?因为这是一个简单的问题,如果你尝试用翻转位来解决它。
标签: ruby iteration nested-loops