commit c392ad05e623204f3ba8a87025892b57bae8ef2e Author: aleandro Date: Fri Jun 12 20:49:22 2026 +0200 Initial commit diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..08d9005 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,28 @@ +{ + "tasks": [ + { + "type": "cppbuild", + "label": "C/C++: gcc build active file", + "command": "/usr/bin/gcc", + "args": [ + "-fdiagnostics-color=always", + "-g", + "${file}", + "-o", + "${fileDirname}/${fileBasenameNoExtension}" + ], + "options": { + "cwd": "${fileDirname}" + }, + "problemMatcher": [ + "$gcc" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "detail": "Task generated by Debugger." + } + ], + "version": "2.0.0" +} \ No newline at end of file diff --git a/main b/main new file mode 100644 index 0000000..1156f45 Binary files /dev/null and b/main differ diff --git a/main (SFConflict a.pagani.it 2026-01-22-12-21-01) b/main (SFConflict a.pagani.it 2026-01-22-12-21-01) new file mode 100644 index 0000000..e5286c9 Binary files /dev/null and b/main (SFConflict a.pagani.it 2026-01-22-12-21-01) differ diff --git a/main (SFConflict a.pagani.it 2026-01-22-12-21-01).c b/main (SFConflict a.pagani.it 2026-01-22-12-21-01).c new file mode 100644 index 0000000..3b410d4 --- /dev/null +++ b/main (SFConflict a.pagani.it 2026-01-22-12-21-01).c @@ -0,0 +1,110 @@ +#include + +#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_face(int mat[3][3]) { + 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]; + } + } +} + +void rotate_edge_corner (Cube *cube, char side[10]) { + // TODO + // Note: unify rotate_edge_corner with rotate_face +} + +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); + +} \ No newline at end of file diff --git a/main.c b/main.c new file mode 100644 index 0000000..a374c5f --- /dev/null +++ b/main.c @@ -0,0 +1,261 @@ +#include + +#define UP 0 +#define DOWN 1 +#define LEFT 2 +#define RIGHT 3 +#define FRONT 4 +#define BACK 5 + + + +typedef struct Cube { + int x, y, z; + char sticker[6]; +} Cube; + + +void initialize(Cube* array, int pos[3][3][3]) { + for (int i=0; i<27; i++) { + // Calcolo le coordinate in base agli indici e le assegno ai cubetti + int x=i%3; + int y=(i/9); + int z=(i/3)%3; + + array[i].x=x; + array[i].y=y; + array[i].z=z; + + + // Inizializzo tutti gli sticker e associo i colori ai cubetti + array[i].sticker[DOWN] = 'W'; + array[i].sticker[UP] = 'Y'; + array[i].sticker[LEFT] = 'B'; + array[i].sticker[RIGHT] = 'G'; + array[i].sticker[BACK] = 'O'; + array[i].sticker[FRONT] = 'R'; + + + // Mi salvo che cubetto ho per ogni coordinata + pos[x][y][z]=i; + } +} + +void print(Cube* array, int pos[3][3][3]) { + printf(" %c %c %c\n %c %c %c\n %c %c %c", array[pos[0][2][2]].sticker[BACK], array[pos[1][2][2]].sticker[BACK], array[pos[2][2][2]].sticker[BACK], array[pos[0][1][2]].sticker[BACK], array[pos[1][1][2]].sticker[BACK], array[pos[2][1][2]].sticker[BACK], array[pos[0][0][2]].sticker[BACK], array[pos[1][0][2]].sticker[BACK], array[pos[2][0][2]].sticker[BACK]); + + printf("\n\n %c %c %c\n %c %c %c\n %c %c %c", array[pos[0][0][2]].sticker[UP], array[pos[1][0][2]].sticker[UP], array[pos[2][0][2]].sticker[UP], array[pos[0][0][1]].sticker[UP], array[pos[1][0][1]].sticker[UP], array[pos[2][0][1]].sticker[UP], array[pos[0][0][0]].sticker[UP], array[pos[1][0][0]].sticker[UP], array[pos[2][0][0]].sticker[UP]); + + printf("\n\n%c %c %c %c %c %c %c %c %c", array[pos[0][0][2]].sticker[LEFT], array[pos[0][0][1]].sticker[LEFT], array[pos[0][0][0]].sticker[LEFT], array[pos[0][0][0]].sticker[FRONT], array[pos[1][0][0]].sticker[FRONT], array[pos[2][0][0]].sticker[FRONT], array[pos[2][0][0]].sticker[RIGHT], array[pos[2][0][1]].sticker[RIGHT], array[pos[2][0][2]].sticker[RIGHT]); + printf("\n%c %c %c %c %c %c %c %c %c", array[pos[0][1][2]].sticker[LEFT], array[pos[0][1][1]].sticker[LEFT], array[pos[0][1][0]].sticker[LEFT], array[pos[0][1][0]].sticker[FRONT], array[pos[1][1][0]].sticker[FRONT], array[pos[2][1][0]].sticker[FRONT], array[pos[2][1][0]].sticker[RIGHT], array[pos[2][1][1]].sticker[RIGHT], array[pos[2][1][2]].sticker[RIGHT]); + printf("\n%c %c %c %c %c %c %c %c %c", array[pos[0][2][2]].sticker[LEFT], array[pos[0][2][1]].sticker[LEFT], array[pos[0][2][0]].sticker[LEFT], array[pos[0][2][0]].sticker[FRONT], array[pos[1][2][0]].sticker[FRONT], array[pos[2][2][0]].sticker[FRONT], array[pos[2][2][0]].sticker[RIGHT], array[pos[2][2][1]].sticker[RIGHT], array[pos[2][2][2]].sticker[RIGHT]); + + printf("\n\n %c %c %c\n %c %c %c\n %c %c %c\n\n\n\n", array[pos[0][2][0]].sticker[DOWN], array[pos[1][2][0]].sticker[DOWN], array[pos[2][2][0]].sticker[DOWN], array[pos[0][2][1]].sticker[DOWN], array[pos[1][2][1]].sticker[DOWN], array[pos[2][2][1]].sticker[DOWN], array[pos[0][2][2]].sticker[DOWN], array[pos[1][2][2]].sticker[DOWN], array[pos[2][2][2]].sticker[DOWN]); + + +} + + +void rotate(Cube* array, int pos[3][3][3], char rotazione) { + int involved_cubes[9]; + int index=0; + int tmp_x, tmp_y, tmp_z; + + // z=0 + if (rotazione == 'F') { + for (int i=0; i<3; i++) { + for (int j=0; j<3; j++) { + involved_cubes[index]=pos[i][j][0]; + index++; + } + } + + for (index=0; index<9; index++) { + int i=involved_cubes[index]; + tmp_x = array[i].x; + tmp_y = array[i].y; + + array[i].x=2-tmp_y; + array[i].y=tmp_x; + + pos[array[i].x][array[i].y][0]=i; + + + + char tmp = array[i].sticker[UP]; + array[i].sticker[UP] = array[i].sticker[LEFT]; + array[i].sticker[LEFT] = array[i].sticker[DOWN]; + array[i].sticker[DOWN] = array[i].sticker[RIGHT]; + array[i].sticker[RIGHT] = tmp; + } + + + + } + + // z=2 + if (rotazione == 'B') { + for (int i=0; i<3; i++) { + for (int j=0; j<3; j++) { + involved_cubes[index]=pos[i][j][2]; + index++; + } + } + + for (index=0; index<9; index++) { + int i=involved_cubes[index]; + tmp_x = array[i].x; + tmp_y = array[i].y; + + array[i].x=tmp_y; + array[i].y=2-tmp_x; + + pos[array[i].x][array[i].y][2]=i; + + + + char tmp = array[i].sticker[DOWN]; + array[i].sticker[DOWN] = array[i].sticker[LEFT]; + array[i].sticker[LEFT] = array[i].sticker[UP]; + array[i].sticker[UP] = array[i].sticker[RIGHT]; + array[i].sticker[RIGHT] = tmp; + } + } + + // y=0 + if (rotazione == 'U') { + for (int i=0; i<3; i++) { + for (int j=0; j<3; j++) { + involved_cubes[index]=pos[i][0][j]; + index++; + } + } + + for (index=0; index<9; index++) { + int i=involved_cubes[index]; + tmp_x = array[i].x; + tmp_z = array[i].z; + + array[i].x=tmp_z; + array[i].z=2-tmp_x; + + pos[array[i].x][0][array[i].z]=i; + + + + char tmp = array[i].sticker[FRONT]; + array[i].sticker[FRONT] = array[i].sticker[RIGHT]; + array[i].sticker[RIGHT] = array[i].sticker[BACK]; + array[i].sticker[BACK] = array[i].sticker[LEFT]; + array[i].sticker[LEFT] = tmp; + + } + } + + // y=2 + if (rotazione == 'D') { + for (int i=0; i<3; i++) { + for (int j=0; j<3; j++) { + involved_cubes[index]=pos[i][2][j]; + index++; + } + } + + for (index=0; index<9; index++) { + int i=involved_cubes[index]; + tmp_x = array[i].x; + tmp_z = array[i].z; + + array[i].x=2-tmp_z; + array[i].z=tmp_x; + + pos[array[i].x][2][array[i].z]=i; + + + + char tmp = array[i].sticker[FRONT]; + array[i].sticker[FRONT] = array[i].sticker[LEFT]; + array[i].sticker[LEFT] = array[i].sticker[BACK]; + array[i].sticker[BACK] = array[i].sticker[RIGHT]; + array[i].sticker[RIGHT] = tmp; + } + } + + // x=0 + if (rotazione == 'L') { + for (int i=0; i<3; i++) { + for (int j=0; j<3; j++) { + involved_cubes[index]=pos[0][i][j]; + index++; + } + } + + for (index=0; index<9; index++) { + int i=involved_cubes[index]; + tmp_y = array[i].y; + tmp_z = array[i].z; + + array[i].y=2-tmp_z; + array[i].z=tmp_y; + + pos[0][array[i].y][array[i].z]=i; + + + + char tmp = array[i].sticker[UP]; + array[i].sticker[UP] = array[i].sticker[BACK]; + array[i].sticker[BACK] = array[i].sticker[DOWN]; + array[i].sticker[DOWN] = array[i].sticker[FRONT]; + array[i].sticker[FRONT] = tmp; + } + } + + + // x=2 + if (rotazione == 'R') { + for (int i=0; i<3; i++) { + for (int j=0; j<3; j++) { + involved_cubes[index]=pos[2][i][j]; + index++; + } + } + + for (index=0; index<9; index++) { + int i=involved_cubes[index]; + tmp_y = array[i].y; + tmp_z = array[i].z; + + array[i].y=tmp_z; + array[i].z=2-tmp_y; + + pos[2][array[i].y][array[i].z]=i; + + + + char tmp = array[i].sticker[UP]; + array[i].sticker[UP] = array[i].sticker[FRONT]; + array[i].sticker[FRONT] = array[i].sticker[DOWN]; + array[i].sticker[DOWN] = array[i].sticker[BACK]; + array[i].sticker[BACK] = tmp; + } + } + + +} + + + +int main() { + Cube array[27]; + int pos[3][3][3]; + + initialize(array, pos); + + + rotate(array, pos, 'F'); + print(array, pos); + + rotate(array, pos, 'U'); + print(array, pos); + +} \ No newline at end of file diff --git a/main_bak.c b/main_bak.c new file mode 100644 index 0000000..bf49d86 --- /dev/null +++ b/main_bak.c @@ -0,0 +1,114 @@ +#include + +#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); + +} \ No newline at end of file