# Cycling through some numbers

I posted a question about Rubik's cube here (You don't need to read it though): A simple console Rubik's cube in C (No need to solve, only design)

Basically, I just need help with this, so I can implement this in my Rubik's cube program. Suppose, there are 4 numbers like this [1,2,3,4] and I *push* from the left, so now it becomes [4,1,2,3]. If I push it again, it should become [3,4,1,2].

Basically, what I'm trying to achieve is rotating a row on the cube. And my rotating function is something like this (I'm still changing this because this doesn't work that well):

void swapRow(int row) { int placeHolder[3]; //Consider it as a 'blank' row for(int j=0; j<3; j++) placeHolder[j] = cube[front][row][j]; for(int j=0; j<3; j++) cube[front][row][j] = cube[front+1][row][j]; for(int j=0; j<3; j++) cube[front-1][row][j] = placeHolder[j]; }

This is my cube array:

int cube[6][3][3] = {{{1,1,1},{1,1,1},{1,1,1}}, {{2,2,2},{2,2,2},{2,2,2}}, {{3,3,3},{3,3,3},{3,3,3}}, {{4,4,4},{4,4,4},{4,4,4}}, {{5,5,5},{5,5,5},{5,5,5}}, {{6,6,6},{6,6,6},{6,6,6}}};

front is a variable and is 1. This is where the problem lies, If I swap again and again, it will go to 4, then 5, then 6 etc. when I want it to go to 4, then 1, then 2, then 3, then 4, then 1 again because that's how much sides it has (not considering top and bottom).

How do you think I can accomplish this? I'm using C, not C++. I'll add any other information required. :)

## Answers

Suggest to use a rotator object like:

typedef struct { int *values; int mod; int size; //if you want to generalize the rubiks.. }rotator; void rotate(rotator *rotator) { rotator->mod = (rotator->mod + 1) % rotator->size; } void print_rotator(rotator *rotator) { int index; fprintf(stdout, "["); for(index = 0; index < rotator->size; ++index) { fprintf(stdout, "%d,", rotator->values[(index + rotator->mod) % rotator->size]); } fprintf(stdout, "]\n"); }

Then you can have a think about how to build this into a n-ary cube..