Нахождение всех соседей данного государства - PullRequest
0 голосов
/ 14 октября 2019

Состояние - это список случайных целых чисел от 0 до 4. Пример = [1, 0, 2, 3, 2]. Сосед описывается как изменение одного из целых чисел в списке. Например, [0, 0, 2, 3, 2] является соседом [1, 0, 2, 3, 2]. Как бы я найти всех возможных соседей данного государства?

1 Ответ

0 голосов
/ 14 октября 2019

Вы можете найти общее количество перестановок для вашей последовательности, используя формулу n^r, где n - это число чисел, которое вы используете, а r - количество элементов в вашей последовательности. В вашем случае это будет 5^5. Вы можете прочитать больше об этом и увидеть все возможные перестановки здесь.

Из списка, который вы можете создать из того, что мы только что рассчитали, вы можете определить, какие из этих перестановок являются соседями, и сохранитьколичество каждого, с которым вы сталкиваетесь. Вы можете сделать это, используя цикл 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
    }

Если вам нужны какие-либо разъяснения относительно этого метода или того, куда идти, не стесняйтесь спрашивать! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...