Вы можете найти общее количество перестановок для вашей последовательности, используя формулу 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
}
Если вам нужны какие-либо разъяснения относительно этого метода или того, куда идти, не стесняйтесь спрашивать! :)