查找给定状态的所有邻居

时间:2019-10-14 18:14:56

标签: python python-3.x list

状态是从0到4的随机整数的列表。示例= [1, 0, 2, 3, 2]。邻居被描述为列表中整数之一的变化。例如,[0, 0, 2, 3, 2][1, 0, 2, 3, 2]的邻居。我如何找到给定状态的所有可能邻居?

1 个答案:

答案 0 :(得分:0)

您可以使用公式n^r查找序列的排列总数,其中n是您使用的数字数,r是序列中的元素数。您的情况是5^5You can read more about this and see all the possible permutations here.

从列表中,您可以根据我们刚刚计算出的内容进行创建,您可以确定这些排列中的哪些是邻居,并对所遇到的每个排列进行计数。您可以使用for循环(for each permutation, check if it's a neighbor)

我添加了一个名为isNeighbor的方法,该方法根据情况返回true或false。尽管这是在Java中,但我使用的相同原理也适用于python。希望您仍然能够按照我提供的评论进行操作。如果没有,我可以尝试进一步解释。

int[] cell = {1,0,2,3,1}; 
int[] cell = {0,0,2,3,1}; //example cells (stored as array of integers)

static boolean isNeighbor(int[] cell, int [] cell2)
    {
        int count = 0;
        for(int i = 0; i < cell.length;i++) //for each number in array
            if(!(cell[i] == cell2[i])) //if the number at the same index isn't the same
                if(Math.abs(cell[i] - cell2[i]) != 1) //if the difference isn't 1
                    count+=2;
                else
                    count++;
        if(count > 1)
            return false; // is not a neighbor
        else
            return true; // is a neighbor
    }

如果您需要有关此方法的任何说明,或者从此处出发,请随时提出疑问! :)