我正在使用回溯实现数独求解器。它以以下形式读取数独板:
027800061000030008910005420500016030000970200070000096700000080006027000030480007
我知道如何通过做index % 9
(然后做一个简单的比率为 9 的算术级数)来计算列上的元素,以及通过使用来计算一行上的元素index/9
(然后添加一个直到我得到每个元素)来计算列上的元素,其中index 是 [0,80] 范围内的数字。
我无法弄清楚的是,如果我在该框中有一个元素的索引,如何获取该框的起始索引。
所以我用谷歌搜索得到:http: //jakevdp.github.io/blog/2013/04/15/code-golf-in-python-sudoku/
这家伙正在这样的框中获取起始索引:
start = 27 * int(i / 27) + 3 * int((i % 9) / 3)
i
我的元素列表中的索引在
哪里。
我无法理解他是如何计算出这个公式的,我该如何自己推导出来,所以请给我解释一下。
我理解这个公式之后的列表理解,这一切都有意义,只是不是这个公式。
PS:我写这篇文章是为了学习 Haskell,但这真的没关系,因为现在我想了解那个公式的要点。