我正在研究Ruby程序,正在其中创建单词搜索难题。我有10x10双数组“ arr
”,我使用一种方法来找到随机的起始位置(例如:)arr[5][9]
,然后选择一个方向,但是在超出范围时遇到问题。
示例:需要放入拼图中的单词之一是“狗”。我得到起始位置arr[5][9]
并遍历“ dog”,一次将其水平放置在数组中一个字母。所以arr[5][9]
是“d”,arr[5][10]
是“O”,但是当它尝试把“G”我的程序崩溃,我得到错误说“ no method [] for nil: nil class (no method error)
”。我知道这是因为它超出了范围,但是如何阻止它这样做呢?谢谢你
编辑:如果该单词不适合,我希望我的程序选择一个新的开始位置,直到该单词适合为止。我也想防止它越界
如果您有10 x 10的数组,则所有索引都应在0到9之间。您需要保证单词在任何一个维度上都不会超出数组的范围。
因此,例如,如果您有一个单词dog,那么起始索引必须在0到7之间。
这是可以用于此目的的方法,并带有以下示例:
2.3.0 :001 > def random_x_value(word)
2.3.0 :002?> rand(10 - word.length)
2.3.0 :003?> end
=> :random_x_value
2.3.0 :004 > 16.times { print "#{random_x_value('dog')} "}; puts
4 1 5 1 5 6 3 0 4 5 4 5 2 3 3 5
=> nil
[我以前使用过,(0..(10-word.length)).to_a.sample
但后来意识到我可以使用rand(10 - word.length)
更简单明了的方法。]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句