很容易将数字向左旋转。我会做以下事情:
int numberCount = 4;
int rotationCount = 2 * numberCount;
for(int i = 0; i < rotationCount; i++)
{
for(int j = 0; j < numberCount; j++)
{
System.out.print((i+j) % numberCount + " ");
}
System.out.println();
}
在此示例中,将打印以下内容:
0 1 2 3
1 2 3 0
2 3 0 1
3 0 1 2
0 1 2 3
1 2 3 0
2 3 0 1
3 0 1 2
你会如何做同样的事情,但将数字向右旋转?
答案 0 :(得分:0)
一旦我想到它,答案就很明显了 - 向左移动一个数字,你加上它,所以向右移动,你从中减去它。我认为这个公式会发生很大的变化,所以我想到的公式比解决方案要复杂得多。
// ensures mod is positive
int mod(int a, int b)
{ return (a%b+b)%b; }
int numberCount = 4;
int rotationCount = 2 * numberCount;
for(int i = 0; i < rotationCount; i++)
{
for(int j = 0; j < numberCount; j++)
{
System.out.print(mod((j-i), numberCount) + " ");
}
System.out.println();
}