【问题标题】:Making 2d grids in ruby and solving the puzzle用红宝石制作二维网格并解决难题
【发布时间】:2015-07-21 01:53:01
【问题描述】:

我对学习用 Ruby 编写代码非常感兴趣,只是因为我想从事 Web 开发,但我还有一个小型项目,我实际上是在纸上手动计算的。

我正在制作一个正方形,并简单地计算从左上角到右下角的路径,同时只能向右和向下移动。

现在在 1x1 网格中只有 2 个解决方案。 当你制作一个 2x2 网格时,你实际上是在制作 4 个正方形(或一个 2 的大 1x1 网格,但你将它分成两半)

这个谜题的答案是 6。

所以我打算选择 3x3、4x4 等并手动计算。为什么我做了你可能会问的所有事情?好吧,我实际上是在寻找要输入到整数序列数据库(oeis.org)中的数字序列,并试图找到这个谜题的数学公式。这是成功的,但是我想通过简单地更改规则来更进一步,例如你不能向右移动超过两次,或者向下移动......或者你只能向左移动一次等等。

然后我意识到手动计算所有可能性会非常困难,所以我决定尝试编写一个可以暴力破解的代码。

我知道 Ruby 可能不是最好的语言(也许是 c++?),但我对 Ruby 真的很感兴趣,并希望使用这种语言来解决这个问题。

问题是我不知道从哪里开始:(

【问题讨论】:

    标签: ruby math grid


    【解决方案1】:

    对于 n 大小的网格,您必须移动 2*n 次,n 次 left 和 n 次 down。您可以通过多少种方式组合 lldd、ldld、lddl 等? Here 是一个专门用于这些计算的网站:C(4,2) 表示 2x2 网格,C(6,3) 表示 3x3 等。谷歌搜索二项式系数,了解如何自己计算。不要为oeis 这样做。

    【讨论】:

    • 是的,但是如果我想改变拼图的规则怎么办?例如,您只能向某个方向移动两次,第三次您必须向其他方向移动。或者如果我提出一些其他规则呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    相关资源
    最近更新 更多