114 lines
3.4 KiB
C
114 lines
3.4 KiB
C
#include <stdio.h>
|
|
|
|
#define W 0
|
|
#define Y 1
|
|
#define O 2
|
|
#define R 3
|
|
#define B 4
|
|
#define G 5
|
|
|
|
|
|
|
|
typedef struct Cube {
|
|
int front[3][3];
|
|
int back[3][3];
|
|
int top[3][3];
|
|
int bottom[3][3];
|
|
int right[3][3];
|
|
int left[3][3];
|
|
} Cube;
|
|
|
|
|
|
void initialize(Cube *cube) {
|
|
|
|
for (int i=0; i<3; i++) {
|
|
for (int j=0; j<3; j++) {
|
|
cube->front[i][j] = W;
|
|
cube->back[i][j] = Y;
|
|
cube->top[i][j] = O;
|
|
cube->bottom[i][j] = R;
|
|
cube->right[i][j] = B;
|
|
cube->left[i][j] = G;
|
|
}
|
|
}
|
|
}
|
|
|
|
void print(Cube *cube) {
|
|
char colors[] = {'W', 'Y', 'O', 'R', 'B', 'G'};
|
|
|
|
printf(" %c, %c, %c, \n", colors[cube->back[0][0]], colors[cube->back[0][1]], colors[cube->back[0][2]]);
|
|
printf(" %c, %c, %c, \n", colors[cube->back[1][0]], colors[cube->back[1][1]], colors[cube->back[1][2]]);
|
|
printf(" %c, %c, %c, \n", colors[cube->back[2][0]], colors[cube->back[2][1]], colors[cube->back[2][2]]);
|
|
|
|
printf("\n");
|
|
printf(" %c, %c, %c, \n", colors[cube->top[0][0]], colors[cube->top[0][1]], colors[cube->top[0][2]]);
|
|
printf(" %c, %c, %c, \n", colors[cube->top[1][0]], colors[cube->top[1][1]], colors[cube->top[1][2]]);
|
|
printf(" %c, %c, %c, \n", colors[cube->top[2][0]], colors[cube->top[2][1]], colors[cube->top[2][2]]);
|
|
|
|
printf("\n");
|
|
printf("%c, %c, %c, ", colors[cube->left[0][0]], colors[cube->left[0][1]], colors[cube->left[0][2]]);
|
|
printf("%c, %c, %c, ", colors[cube->front[0][0]], colors[cube->front[0][1]], colors[cube->front[0][2]]);
|
|
printf("%c, %c, %c, ", colors[cube->right[0][0]], colors[cube->right[0][1]], colors[cube->right[0][2]]);
|
|
|
|
printf("\n");
|
|
printf("%c, %c, %c, ", colors[cube->left[1][0]], colors[cube->left[1][1]], colors[cube->left[1][2]]);
|
|
printf("%c, %c, %c, ", colors[cube->front[1][0]], colors[cube->front[1][1]], colors[cube->front[1][2]]);
|
|
printf("%c, %c, %c, ", colors[cube->right[1][0]], colors[cube->right[1][1]], colors[cube->right[1][2]]);
|
|
|
|
printf("\n");
|
|
printf("%c, %c, %c, ", colors[cube->left[2][0]], colors[cube->left[2][1]], colors[cube->left[2][2]]);
|
|
printf("%c, %c, %c, ", colors[cube->front[2][0]], colors[cube->front[2][1]], colors[cube->front[2][2]]);
|
|
printf("%c, %c, %c, ", colors[cube->right[2][0]], colors[cube->right[2][1]], colors[cube->right[2][2]]);
|
|
|
|
printf("\n\n");
|
|
printf(" %c, %c, %c, \n", colors[cube->bottom[0][0]], colors[cube->bottom[0][1]], colors[cube->bottom[0][2]]);
|
|
printf(" %c, %c, %c, \n", colors[cube->bottom[1][0]], colors[cube->bottom[1][1]], colors[cube->bottom[1][2]]);
|
|
printf(" %c, %c, %c, \n", colors[cube->bottom[2][0]], colors[cube->bottom[2][1]], colors[cube->bottom[2][2]]);
|
|
|
|
printf("----------------------------\n");
|
|
}
|
|
|
|
void rotate_90(int mat[3][3]) {
|
|
|
|
// Rotate the single face
|
|
int temp[3][3];
|
|
|
|
for(int i=0;i<3;i++){
|
|
for(int j=0;j<3;j++){
|
|
temp[j][3-1-i] = mat[i][j];
|
|
}
|
|
}
|
|
|
|
for(int i=0;i<3;i++) {
|
|
for(int j=0;j<3;j++) {
|
|
mat[i][j] = temp[i][j];
|
|
}
|
|
}
|
|
|
|
|
|
// Rotate the other 4 faces
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void main (){
|
|
|
|
Cube cube;
|
|
initialize(&cube);
|
|
|
|
cube.back[0][1]=3;
|
|
cube.back[2][2]=4;
|
|
|
|
print(&cube);
|
|
|
|
//rotate_90(cube.back);
|
|
|
|
print(&cube);
|
|
|
|
// rotate_90(cube.back);
|
|
|
|
print(&cube);
|
|
|
|
} |