python - 从件号获取位置id的算法

标签 python algorithm

我将用一个例子来描述有问题的算法:

我有一 block ,假设 block 号 7

我有一个带有 id 的 4 x 4 大小的拼图

00 01 02 03
10 11 12 13
20 21 22 23
30 31 32 33

我需要确定 block 7 的正确位置

位置将是 12

我正在用 Python 编写此代码,我认为我可以使用强力法。我试过计数并到达我需要的位置。

有什么关于简单算法的想法吗?由于我使用的是遗留代码,所以输出必须相同。

最佳答案

修订

使用取模和除法运算求出 x 和 y 坐标 piecenumber/columns 的整数是 x 坐标 piecenumber%columns 的整数是 y 坐标 #i.e.件号/列的其余部分

注意:请记住,python 中的行和列以 0 而不是 1 开头。因此第三行实际上是行号 2。坐标 0,0 中的图 block 是数字 1,因此您从 y 坐标中减去 1。因此你的算法是这样的:

valueyouwant=grid[tilenumber/numberofcolumns][tilenumber%numberofcolumns-1]

即6x7 网格上的第 34 个图 block =

34/6 =5 (ignore remainder)
34%6 =4 -1 = 3

x=5
y=3

00 01 02 03 04 05
10 11 12 13 14 15
20 21 22 23 24 25
30 31 32 33 34 35
40 41 42 43 44 45
50 51 52 53 54 55
60 61 62 63 64 65

Answer is 53

或者以你为例:

piecenum=7
row=piecenum/4
column=piecenum%4-1
value you want = puzzle[row][column] 

关于python - 从件号获取位置id的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23327230/

相关文章:

python - 类型错误 : Object of type 'ndarray' is not JSON serializable

python - 在 Python 中验证 (X)HTML

algorithm - 以最小差异对数组进行分区

java - 合并步骤后的一些更大的元素不在枢轴的右侧

algorithm - 为什么深度优先搜索的空间复杂度不用O(n)表示?

android - Android 中远程服务器与本地数据库(缓存)同步的智能算法,分页支持离线

python - 在一行中创建和扩展列表

python - 按大写字母拆分字符串但忽略 AAA Python Regex

python - 如何在构造时使用参数覆盖 Python 类的 __str__ 方法?

用于发现流量数据中的异常 ("spikes") 的算法