From 56ffc768907c32368dc19583cc4768affd0bba84 Mon Sep 17 00:00:00 2001 From: gle6a6y Date: Wed, 4 Feb 2026 14:22:37 +0300 Subject: [PATCH 1/7] not done, just for git pull for some json --- .../hse/java/practice/task1/RubiksCube.java | 111 +++++++++++++++++- 1 file changed, 110 insertions(+), 1 deletion(-) diff --git a/src/main/java/hse/java/practice/task1/RubiksCube.java b/src/main/java/hse/java/practice/task1/RubiksCube.java index 3f605191..9bc26d05 100644 --- a/src/main/java/hse/java/practice/task1/RubiksCube.java +++ b/src/main/java/hse/java/practice/task1/RubiksCube.java @@ -27,10 +27,119 @@ public RubiksCube() { } } + public Edge[] deepCloneEdges() { + Edge[] edgesClone = new Edge[EDGES_COUNT]; + for (int i = 0; i < EDGES_COUNT; i++) { + edgesClone[i] = new Edge(CubeColor.BLUE); + } + for (int i = 0; i < 6; i++) { + CubeColor[][] orig = edges[i].getParts(); + CubeColor[][] edge = new CubeColor[3][3]; + for (int j = 0; j < 3; j++) { + for (int k = 0; k < 3; k++) { + edge[j][k] = orig[j][k]; + } + } + edgesClone[i].setParts(edge); + } + return edgesClone; + } + public void front(RotateDirection direction) { + Edge[] edgesCopy = deepCloneEdges(); // Пусть копия будет хранить копию оригинала, а обновлять будем + // сразу оригинал, беря значения из копии + // Для передней грани + CubeColor[][] edgeFrontOriginal = edges[4].getParts(); + CubeColor[][] edgeFrontCopy = edgesCopy[4].getParts(); + + // Для смежных граней + CubeColor[][] edgeUpOriginal = edges[0].getParts(); + CubeColor[][] edgeRightOriginal = edges[3].getParts(); + CubeColor[][] edgeDownOriginal = edges[1].getParts(); + CubeColor[][] edgeLeftOriginal = edges[1].getParts(); + CubeColor[][] edgeUpCopy = edgesCopy[0].getParts(); + CubeColor[][] edgeRightCopy = edgesCopy[3].getParts(); + CubeColor[][] edgeDownCopy = edgesCopy[1].getParts(); + CubeColor[][] edgeLeftCopy = edgesCopy[1].getParts(); + + if (direction == RotateDirection.CLOCKWISE) { + for (int i = 0; i < 3; i++) { + // Меняем переднюю грань + edgeFrontOriginal[0][i] = edgeFrontCopy[2-i][0]; + edgeFrontOriginal[i][2] = edgeFrontCopy[0][i]; + edgeFrontOriginal[2][i] = edgeFrontCopy[2-i][2]; + edgeFrontOriginal[i][0] = edgeFrontCopy[2][i]; + // Меняем смежные грани + edgeUpOriginal[2][i] = edgeLeftCopy[2-i][2]; + edgeRightOriginal[i][0] = edgeUpCopy[2][i]; + edgeDownOriginal[0][i] = edgeRightCopy[2-i][0]; + edgeLeftOriginal[i][2] = edgeDownCopy[0][i]; + } + } else { + for (int j = 0; j < 3; j++) { + for (int i = 0; i < 3; i++) { + // Меняем переднюю грань + edgeFrontOriginal[0][i] = edgeFrontCopy[2 - i][0]; + edgeFrontOriginal[i][2] = edgeFrontCopy[0][i]; + edgeFrontOriginal[2][i] = edgeFrontCopy[2 - i][2]; + edgeFrontOriginal[i][0] = edgeFrontCopy[2][i]; + // Меняем смежные грани + edgeUpOriginal[2][i] = edgeLeftCopy[2 - i][2]; + edgeRightOriginal[i][0] = edgeUpCopy[2][i]; + edgeDownOriginal[0][i] = edgeRightCopy[2 - i][0]; + edgeLeftOriginal[i][2] = edgeDownCopy[0][i]; + } + } + } + } + + public void back(RotateDirection direction) { + Edge[] edgesCopy = deepCloneEdges(); // Пусть копия будет хранить копию оригинала, а обновлять будем + // сразу оригинал, беря значения из копии + // Для передней грани + CubeColor[][] edgeBackOriginal = edges[5].getParts(); + CubeColor[][] edgeBackCopy = edgesCopy[5].getParts(); + + // Для смежных граней + CubeColor[][] edgeUpOriginal = edges[0].getParts(); + CubeColor[][] edgeRightOriginal = edges[3].getParts(); + CubeColor[][] edgeDownOriginal = edges[1].getParts(); + CubeColor[][] edgeLeftOriginal = edges[1].getParts(); + CubeColor[][] edgeUpCopy = edgesCopy[0].getParts(); + CubeColor[][] edgeRightCopy = edgesCopy[3].getParts(); + CubeColor[][] edgeDownCopy = edgesCopy[1].getParts(); + CubeColor[][] edgeLeftCopy = edgesCopy[1].getParts(); + + if (direction == RotateDirection.CLOCKWISE) { + for (int i = 0; i < 3; i++) { + // Меняем переднюю грань + edgeBackOriginal[0][i] = edgeBackCopy[i][2]; + edgeBackOriginal[i][2] = edgeBackCopy[2][2-i]; + edgeBackOriginal[2][i] = edgeBackCopy[i][0]; + edgeBackOriginal[i][0] = edgeBackCopy[0][2-i]; + // Меняем смежные грани + edgeUpOriginal[2][i] = edgeRightCopy[i][0]; + edgeRightOriginal[i][0] = edgeDownCopy[0][2-i]; + edgeDownOriginal[0][i] = edgeRightCopy[2-i][0]; + edgeLeftOriginal[i][2] = edgeUpCopy[2][2-i]; + } + } else { + for (int i = 0; i < 3; i++) { + // Меняем переднюю грань + edgeBackOriginal[0][i] = edgeBackCopy[2-i][0]; + edgeBackOriginal[i][2] = edgeBackCopy[0][i]; + edgeBackOriginal[2][i] = edgeBackCopy[2-i][2]; + edgeBackOriginal[i][0] = edgeBackCopy[2][i]; + // Меняем смежные грани + edgeUpOriginal[2][i] = edgeLeftCopy[2-i][2]; + edgeRightOriginal[i][0] = edgeUpCopy[2][i]; + edgeDownOriginal[0][i] = edgeRightCopy[2-i][0]; + edgeLeftOriginal[i][2] = edgeDownCopy[0][i]; + } + } } - + public Edge[] getEdges() { return edges; } From 23fcbf678476b2c65e3334a77eccbb54fa5c2bba Mon Sep 17 00:00:00 2001 From: gle6a6y Date: Wed, 4 Feb 2026 17:30:42 +0300 Subject: [PATCH 2/7] done --- .../hse/java/practice/task1/RubiksCube.java | 263 +++++++++++++++--- 1 file changed, 218 insertions(+), 45 deletions(-) diff --git a/src/main/java/hse/java/practice/task1/RubiksCube.java b/src/main/java/hse/java/practice/task1/RubiksCube.java index 2fd08884..af0a7404 100644 --- a/src/main/java/hse/java/practice/task1/RubiksCube.java +++ b/src/main/java/hse/java/practice/task1/RubiksCube.java @@ -25,7 +25,7 @@ public RubiksCube() { edges[i] = new Edge(colors[i]); } } - + public Edge[] deepCloneEdges() { Edge[] edgesClone = new Edge[EDGES_COUNT]; for (int i = 0; i < EDGES_COUNT; i++) { @@ -48,18 +48,18 @@ public void front(RotateDirection direction) { Edge[] edgesCopy = deepCloneEdges(); // Пусть копия будет хранить копию оригинала, а обновлять будем // сразу оригинал, беря значения из копии // Для передней грани - CubeColor[][] edgeFrontOriginal = edges[4].getParts(); - CubeColor[][] edgeFrontCopy = edgesCopy[4].getParts(); + CubeColor[][] edgeFrontOriginal = edges[EdgePosition.FRONT.ordinal()].getParts(); + CubeColor[][] edgeFrontCopy = edgesCopy[EdgePosition.FRONT.ordinal()].getParts(); // Для смежных граней - CubeColor[][] edgeUpOriginal = edges[0].getParts(); - CubeColor[][] edgeRightOriginal = edges[3].getParts(); - CubeColor[][] edgeDownOriginal = edges[1].getParts(); - CubeColor[][] edgeLeftOriginal = edges[1].getParts(); - CubeColor[][] edgeUpCopy = edgesCopy[0].getParts(); - CubeColor[][] edgeRightCopy = edgesCopy[3].getParts(); - CubeColor[][] edgeDownCopy = edgesCopy[1].getParts(); - CubeColor[][] edgeLeftCopy = edgesCopy[1].getParts(); + CubeColor[][] edgeUpOriginal = edges[EdgePosition.UP.ordinal()].getParts(); + CubeColor[][] edgeRightOriginal = edges[EdgePosition.RIGHT.ordinal()].getParts(); + CubeColor[][] edgeDownOriginal = edges[EdgePosition.DOWN.ordinal()].getParts(); + CubeColor[][] edgeLeftOriginal = edges[EdgePosition.LEFT.ordinal()].getParts(); + CubeColor[][] edgeUpCopy = edgesCopy[EdgePosition.UP.ordinal()].getParts(); + CubeColor[][] edgeRightCopy = edgesCopy[EdgePosition.RIGHT.ordinal()].getParts(); + CubeColor[][] edgeDownCopy = edgesCopy[EdgePosition.DOWN.ordinal()].getParts(); + CubeColor[][] edgeLeftCopy = edgesCopy[EdgePosition.LEFT.ordinal()].getParts(); if (direction == RotateDirection.CLOCKWISE) { for (int i = 0; i < 3; i++) { @@ -93,50 +93,223 @@ public void front(RotateDirection direction) { } public void back(RotateDirection direction) { - Edge[] edgesCopy = deepCloneEdges(); // Пусть копия будет хранить копию оригинала, а обновлять будем - // сразу оригинал, беря значения из копии - // Для передней грани - CubeColor[][] edgeBackOriginal = edges[5].getParts(); - CubeColor[][] edgeBackCopy = edgesCopy[5].getParts(); + Edge[] edgesCopy = deepCloneEdges(); - // Для смежных граней - CubeColor[][] edgeUpOriginal = edges[0].getParts(); - CubeColor[][] edgeRightOriginal = edges[3].getParts(); - CubeColor[][] edgeDownOriginal = edges[1].getParts(); - CubeColor[][] edgeLeftOriginal = edges[1].getParts(); - CubeColor[][] edgeUpCopy = edgesCopy[0].getParts(); - CubeColor[][] edgeRightCopy = edgesCopy[3].getParts(); - CubeColor[][] edgeDownCopy = edgesCopy[1].getParts(); - CubeColor[][] edgeLeftCopy = edgesCopy[1].getParts(); + CubeColor[][] edgeBackOriginal = edges[EdgePosition.BACK.ordinal()].getParts(); + CubeColor[][] edgeBackCopy = edgesCopy[EdgePosition.BACK.ordinal()].getParts(); - if (direction == RotateDirection.CLOCKWISE) { - for (int i = 0; i < 3; i++) { - // Меняем переднюю грань - edgeBackOriginal[0][i] = edgeBackCopy[i][2]; - edgeBackOriginal[i][2] = edgeBackCopy[2][2-i]; - edgeBackOriginal[2][i] = edgeBackCopy[i][0]; - edgeBackOriginal[i][0] = edgeBackCopy[0][2-i]; - // Меняем смежные грани - edgeUpOriginal[2][i] = edgeRightCopy[i][0]; - edgeRightOriginal[i][0] = edgeDownCopy[0][2-i]; - edgeDownOriginal[0][i] = edgeRightCopy[2-i][0]; - edgeLeftOriginal[i][2] = edgeUpCopy[2][2-i]; - } - } else { + CubeColor[][] edgeUpOriginal = edges[EdgePosition.UP.ordinal()].getParts(); + CubeColor[][] edgeRightOriginal = edges[EdgePosition.RIGHT.ordinal()].getParts(); + CubeColor[][] edgeDownOriginal = edges[EdgePosition.DOWN.ordinal()].getParts(); + CubeColor[][] edgeLeftOriginal = edges[EdgePosition.LEFT.ordinal()].getParts(); + CubeColor[][] edgeUpCopy = edgesCopy[EdgePosition.UP.ordinal()].getParts(); + CubeColor[][] edgeRightCopy = edgesCopy[EdgePosition.RIGHT.ordinal()].getParts(); + CubeColor[][] edgeDownCopy = edgesCopy[EdgePosition.DOWN.ordinal()].getParts(); + CubeColor[][] edgeLeftCopy = edgesCopy[EdgePosition.LEFT.ordinal()].getParts(); + + if (direction == RotateDirection.COUNTERCLOCKWISE) { // возможно тут ошибка ! for (int i = 0; i < 3; i++) { - // Меняем переднюю грань edgeBackOriginal[0][i] = edgeBackCopy[2-i][0]; edgeBackOriginal[i][2] = edgeBackCopy[0][i]; edgeBackOriginal[2][i] = edgeBackCopy[2-i][2]; edgeBackOriginal[i][0] = edgeBackCopy[2][i]; - // Меняем смежные грани - edgeUpOriginal[2][i] = edgeLeftCopy[2-i][2]; - edgeRightOriginal[i][0] = edgeUpCopy[2][i]; - edgeDownOriginal[0][i] = edgeRightCopy[2-i][0]; - edgeLeftOriginal[i][2] = edgeDownCopy[0][i]; + + edgeUpOriginal[0][i] = edgeRightCopy[i][2]; + edgeRightOriginal[i][2] = edgeDownCopy[0][2-i]; + edgeDownOriginal[0][i] = edgeLeftCopy[i][0]; + edgeLeftOriginal[i][0] = edgeUpCopy[0][2-i]; + } + } else { + for (int j = 0; j < 3; j++) { + for (int i = 0; i < 3; i++) { + edgeBackOriginal[0][i] = edgeBackCopy[2-i][0]; + edgeBackOriginal[i][2] = edgeBackCopy[0][i]; + edgeBackOriginal[2][i] = edgeBackCopy[2-i][2]; + edgeBackOriginal[i][0] = edgeBackCopy[2][i]; + + edgeUpOriginal[0][i] = edgeRightCopy[i][2]; + edgeRightOriginal[i][2] = edgeDownCopy[0][2-i]; + edgeDownOriginal[0][i] = edgeLeftCopy[i][0]; + edgeLeftOriginal[i][0] = edgeUpCopy[0][2-i]; + } + } + } + } + + public void up(RotateDirection direction) { + Edge[] edgesCopy = deepCloneEdges(); + + CubeColor[][] edgeUpOriginal = edges[EdgePosition.UP.ordinal()].getParts(); + CubeColor[][] edgeUpCopy = edgesCopy[EdgePosition.UP.ordinal()].getParts(); + + CubeColor[][] edgeFrontOriginal = edges[EdgePosition.FRONT.ordinal()].getParts(); + CubeColor[][] edgeBackOriginal = edges[EdgePosition.BACK.ordinal()].getParts(); + CubeColor[][] edgeRightOriginal = edges[EdgePosition.RIGHT.ordinal()].getParts(); + CubeColor[][] edgeLeftOriginal = edges[EdgePosition.LEFT.ordinal()].getParts(); + CubeColor[][] edgeFrontCopy = edgesCopy[EdgePosition.FRONT.ordinal()].getParts(); + CubeColor[][] edgeBackCopy = edgesCopy[EdgePosition.BACK.ordinal()].getParts(); + CubeColor[][] edgeRightCopy = edgesCopy[EdgePosition.RIGHT.ordinal()].getParts(); + CubeColor[][] edgeLeftCopy = edgesCopy[EdgePosition.LEFT.ordinal()].getParts(); + + if (direction == RotateDirection.CLOCKWISE) { + for (int i = 0; i < 3; i++) { + edgeUpOriginal[0][i] = edgeUpCopy[2-i][0]; + edgeUpOriginal[i][2] = edgeUpCopy[0][i]; + edgeUpOriginal[2][i] = edgeUpCopy[2-i][2]; + edgeUpOriginal[i][0] = edgeUpCopy[2][i]; + + edgeBackOriginal[0][i] = edgeLeftCopy[0][i]; + edgeLeftOriginal[0][i] = edgeFrontCopy[0][i]; + edgeFrontOriginal[0][i] = edgeRightCopy[0][i]; + edgeRightOriginal[0][i] = edgeBackCopy[0][i]; + } + } else { + for (int j = 0; j < 3; j++) { + for (int i = 0; i < 3; i++) { + edgeUpOriginal[0][i] = edgeUpCopy[2-i][0]; + edgeUpOriginal[i][2] = edgeUpCopy[0][i]; + edgeUpOriginal[2][i] = edgeUpCopy[2-i][2]; + edgeUpOriginal[i][0] = edgeUpCopy[2][i]; + + edgeBackOriginal[0][i] = edgeLeftCopy[0][i]; + edgeLeftOriginal[0][i] = edgeFrontCopy[0][i]; + edgeFrontOriginal[0][i] = edgeRightCopy[0][i]; + edgeRightOriginal[0][i] = edgeBackCopy[0][i]; + } } } + } + + public void down(RotateDirection direction) { + Edge[] edgesCopy = deepCloneEdges(); + + CubeColor[][] edgeDownOriginal = edges[EdgePosition.DOWN.ordinal()].getParts(); + CubeColor[][] edgeDownCopy = edgesCopy[EdgePosition.DOWN.ordinal()].getParts(); + CubeColor[][] edgeFrontOriginal = edges[EdgePosition.FRONT.ordinal()].getParts(); + CubeColor[][] edgeBackOriginal = edges[EdgePosition.BACK.ordinal()].getParts(); + CubeColor[][] edgeRightOriginal = edges[EdgePosition.RIGHT.ordinal()].getParts(); + CubeColor[][] edgeLeftOriginal = edges[EdgePosition.LEFT.ordinal()].getParts(); + CubeColor[][] edgeFrontCopy = edgesCopy[EdgePosition.FRONT.ordinal()].getParts(); + CubeColor[][] edgeBackCopy = edgesCopy[EdgePosition.BACK.ordinal()].getParts(); + CubeColor[][] edgeRightCopy = edgesCopy[EdgePosition.RIGHT.ordinal()].getParts(); + CubeColor[][] edgeLeftCopy = edgesCopy[EdgePosition.LEFT.ordinal()].getParts(); + + if (direction == RotateDirection.COUNTERCLOCKWISE) { + for (int i = 0; i < 3; i++) { + edgeDownOriginal[0][i] = edgeDownCopy[2-i][0]; + edgeDownOriginal[i][2] = edgeDownCopy[0][i]; + edgeDownOriginal[2][i] = edgeDownCopy[2-i][2]; + edgeDownOriginal[i][0] = edgeDownCopy[2][i]; + + edgeBackOriginal[2][i] = edgeRightCopy[2][i]; + edgeLeftOriginal[2][i] = edgeBackCopy[2][i]; + edgeFrontOriginal[2][i] = edgeLeftCopy[2][i]; + edgeRightOriginal[2][i] = edgeFrontCopy[2][i]; + } + } else { + for (int j = 0; j < 3; j++) { + for (int i = 0; i < 3; i++) { + edgeDownOriginal[0][i] = edgeDownCopy[2-i][0]; + edgeDownOriginal[i][2] = edgeDownCopy[0][i]; + edgeDownOriginal[2][i] = edgeDownCopy[2-i][2]; + edgeDownOriginal[i][0] = edgeDownCopy[2][i]; + + edgeBackOriginal[2][i] = edgeRightCopy[2][i]; + edgeLeftOriginal[2][i] = edgeBackCopy[2][i]; + edgeFrontOriginal[2][i] = edgeLeftCopy[2][i]; + edgeRightOriginal[2][i] = edgeFrontCopy[2][i]; + } + } + } + } + + public void right(RotateDirection direction) { + Edge[] edgesCopy = deepCloneEdges(); + + CubeColor[][] edgeRightOriginal = edges[EdgePosition.RIGHT.ordinal()].getParts(); + CubeColor[][] edgeRightCopy = edgesCopy[EdgePosition.RIGHT.ordinal()].getParts(); + + CubeColor[][] edgeFrontOriginal = edges[EdgePosition.FRONT.ordinal()].getParts(); + CubeColor[][] edgeBackOriginal = edges[EdgePosition.BACK.ordinal()].getParts(); + CubeColor[][] edgeDownOriginal = edges[EdgePosition.DOWN.ordinal()].getParts(); + CubeColor[][] edgeUpOriginal = edges[EdgePosition.UP.ordinal()].getParts(); + CubeColor[][] edgeFrontCopy = edgesCopy[EdgePosition.FRONT.ordinal()].getParts(); + CubeColor[][] edgeBackCopy = edgesCopy[EdgePosition.BACK.ordinal()].getParts(); + CubeColor[][] edgeDownCopy = edgesCopy[EdgePosition.DOWN.ordinal()].getParts(); + CubeColor[][] edgeUpCopy = edgesCopy[EdgePosition.UP.ordinal()].getParts(); + + if (direction == RotateDirection.CLOCKWISE) { + for (int i = 0; i < 3; i++) { + edgeRightOriginal[0][i] = edgeRightCopy[2-i][0]; + edgeRightOriginal[i][2] = edgeRightCopy[0][i]; + edgeRightOriginal[2][i] = edgeRightCopy[2-i][2]; + edgeRightOriginal[i][0] = edgeRightCopy[2][i]; + + edgeUpOriginal[i][2] = edgeFrontCopy[i][2]; + edgeFrontOriginal[i][2] = edgeDownCopy[i][2]; + edgeDownOriginal[i][2] = edgeBackCopy[2-i][0]; + edgeBackOriginal[i][0] = edgeUpCopy[2-i][2]; + } + } else { + for (int j = 0; j < 3; j++) { + for (int i = 0; i < 3; i++) { + edgeRightOriginal[0][i] = edgeRightCopy[2 - i][0]; + edgeRightOriginal[i][2] = edgeRightCopy[0][i]; + edgeRightOriginal[2][i] = edgeRightCopy[2 - i][2]; + edgeRightOriginal[i][0] = edgeRightCopy[2][i]; + + edgeUpOriginal[i][2] = edgeFrontCopy[i][2]; + edgeFrontOriginal[i][2] = edgeDownCopy[i][2]; + edgeDownOriginal[i][2] = edgeBackCopy[2 - i][0]; + edgeBackOriginal[i][0] = edgeUpCopy[2 - i][2]; + } + } + } + } + + public void left(RotateDirection direction) { + Edge[] edgesCopy = deepCloneEdges(); + + CubeColor[][] edgeLeftOriginal = edges[EdgePosition.LEFT.ordinal()].getParts(); + CubeColor[][] edgeLeftCopy = edgesCopy[EdgePosition.LEFT.ordinal()].getParts(); + + CubeColor[][] edgeFrontOriginal = edges[EdgePosition.FRONT.ordinal()].getParts(); + CubeColor[][] edgeBackOriginal = edges[EdgePosition.BACK.ordinal()].getParts(); + CubeColor[][] edgeDownOriginal = edges[EdgePosition.DOWN.ordinal()].getParts(); + CubeColor[][] edgeUpOriginal = edges[EdgePosition.UP.ordinal()].getParts(); + CubeColor[][] edgeFrontCopy = edgesCopy[EdgePosition.FRONT.ordinal()].getParts(); + CubeColor[][] edgeBackCopy = edgesCopy[EdgePosition.BACK.ordinal()].getParts(); + CubeColor[][] edgeDownCopy = edgesCopy[EdgePosition.DOWN.ordinal()].getParts(); + CubeColor[][] edgeUpCopy = edgesCopy[EdgePosition.UP.ordinal()].getParts(); + + if (direction == RotateDirection.CLOCKWISE) { + for (int i = 0; i < 3; i++) { + edgeLeftOriginal[0][i] = edgeLeftCopy[2-i][0]; + edgeLeftOriginal[i][2] = edgeLeftCopy[0][i]; + edgeLeftOriginal[2][i] = edgeLeftCopy[2-i][2]; + edgeLeftOriginal[i][0] = edgeLeftCopy[2][i]; + + edgeUpOriginal[i][0] = edgeBackCopy[2-i][2]; + edgeFrontOriginal[i][0] = edgeUpCopy[i][0]; + edgeDownOriginal[i][0] = edgeFrontCopy[i][0]; + edgeBackOriginal[i][2] = edgeDownCopy[2-i][0]; + } + } else { + for (int j = 0; j < 3; j++) { + for (int i = 0; i < 3; i++) { + edgeLeftOriginal[0][i] = edgeLeftCopy[2-i][0]; + edgeLeftOriginal[i][2] = edgeLeftCopy[0][i]; + edgeLeftOriginal[2][i] = edgeLeftCopy[2-i][2]; + edgeLeftOriginal[i][0] = edgeLeftCopy[2][i]; + + edgeUpOriginal[i][0] = edgeBackCopy[2-i][2]; + edgeFrontOriginal[i][0] = edgeUpCopy[i][0]; + edgeDownOriginal[i][0] = edgeFrontCopy[i][0]; + edgeBackOriginal[i][2] = edgeDownCopy[2-i][0]; + } + } + } } public Edge[] getEdges() { From eb647a680a842c50b7652b044fe22fcbc9e02238 Mon Sep 17 00:00:00 2001 From: gle6a6y Date: Wed, 4 Feb 2026 18:17:32 +0300 Subject: [PATCH 3/7] second try. back is change --- src/main/java/hse/java/practice/task1/RubiksCube.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/hse/java/practice/task1/RubiksCube.java b/src/main/java/hse/java/practice/task1/RubiksCube.java index af0a7404..b779a8ff 100644 --- a/src/main/java/hse/java/practice/task1/RubiksCube.java +++ b/src/main/java/hse/java/practice/task1/RubiksCube.java @@ -107,7 +107,7 @@ public void back(RotateDirection direction) { CubeColor[][] edgeDownCopy = edgesCopy[EdgePosition.DOWN.ordinal()].getParts(); CubeColor[][] edgeLeftCopy = edgesCopy[EdgePosition.LEFT.ordinal()].getParts(); - if (direction == RotateDirection.COUNTERCLOCKWISE) { // возможно тут ошибка ! + if (direction == RotateDirection.CLOCKWISE) { // возможно тут ошибка ! for (int i = 0; i < 3; i++) { edgeBackOriginal[0][i] = edgeBackCopy[2-i][0]; edgeBackOriginal[i][2] = edgeBackCopy[0][i]; From 59d4b2a36a6907a0cf32c8abc1ca19f84c7d6cf4 Mon Sep 17 00:00:00 2001 From: gle6a6y Date: Wed, 4 Feb 2026 18:32:09 +0300 Subject: [PATCH 4/7] third try --- src/main/java/hse/java/practice/task1/RubiksCube.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/hse/java/practice/task1/RubiksCube.java b/src/main/java/hse/java/practice/task1/RubiksCube.java index b779a8ff..d8d67673 100644 --- a/src/main/java/hse/java/practice/task1/RubiksCube.java +++ b/src/main/java/hse/java/practice/task1/RubiksCube.java @@ -107,7 +107,7 @@ public void back(RotateDirection direction) { CubeColor[][] edgeDownCopy = edgesCopy[EdgePosition.DOWN.ordinal()].getParts(); CubeColor[][] edgeLeftCopy = edgesCopy[EdgePosition.LEFT.ordinal()].getParts(); - if (direction == RotateDirection.CLOCKWISE) { // возможно тут ошибка ! + if (direction == RotateDirection.CLOCKWISE) { for (int i = 0; i < 3; i++) { edgeBackOriginal[0][i] = edgeBackCopy[2-i][0]; edgeBackOriginal[i][2] = edgeBackCopy[0][i]; @@ -115,8 +115,8 @@ public void back(RotateDirection direction) { edgeBackOriginal[i][0] = edgeBackCopy[2][i]; edgeUpOriginal[0][i] = edgeRightCopy[i][2]; - edgeRightOriginal[i][2] = edgeDownCopy[0][2-i]; - edgeDownOriginal[0][i] = edgeLeftCopy[i][0]; + edgeRightOriginal[i][2] = edgeDownCopy[2][2-i]; + edgeDownOriginal[2][i] = edgeLeftCopy[i][0]; edgeLeftOriginal[i][0] = edgeUpCopy[0][2-i]; } } else { From ca059ff3b64d53a15c07b539b9a9ec7b212964c6 Mon Sep 17 00:00:00 2001 From: gle6a6y Date: Wed, 4 Feb 2026 18:33:40 +0300 Subject: [PATCH 5/7] i hope thats all --- src/main/java/hse/java/practice/task1/RubiksCube.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/hse/java/practice/task1/RubiksCube.java b/src/main/java/hse/java/practice/task1/RubiksCube.java index d8d67673..9ba1e23f 100644 --- a/src/main/java/hse/java/practice/task1/RubiksCube.java +++ b/src/main/java/hse/java/practice/task1/RubiksCube.java @@ -128,8 +128,8 @@ public void back(RotateDirection direction) { edgeBackOriginal[i][0] = edgeBackCopy[2][i]; edgeUpOriginal[0][i] = edgeRightCopy[i][2]; - edgeRightOriginal[i][2] = edgeDownCopy[0][2-i]; - edgeDownOriginal[0][i] = edgeLeftCopy[i][0]; + edgeRightOriginal[i][2] = edgeDownCopy[2][2-i]; + edgeDownOriginal[2][i] = edgeLeftCopy[i][0]; edgeLeftOriginal[i][0] = edgeUpCopy[0][2-i]; } } From 832edfbb57c1b5b7e7409c304d30df9e425e9d96 Mon Sep 17 00:00:00 2001 From: gle6a6y Date: Wed, 4 Feb 2026 19:24:55 +0300 Subject: [PATCH 6/7] reduce number of lines of code. bugs were fixed. thats all i hope --- .../hse/java/practice/task1/RubiksCube.java | 274 ++++-------------- 1 file changed, 49 insertions(+), 225 deletions(-) diff --git a/src/main/java/hse/java/practice/task1/RubiksCube.java b/src/main/java/hse/java/practice/task1/RubiksCube.java index 9ba1e23f..e91c8a65 100644 --- a/src/main/java/hse/java/practice/task1/RubiksCube.java +++ b/src/main/java/hse/java/practice/task1/RubiksCube.java @@ -43,271 +43,95 @@ public Edge[] deepCloneEdges() { } return edgesClone; } - - public void front(RotateDirection direction) { + // Представим грань curr перед собой. Тогда up/right/down/left это номера граней, + // находящихся в соответствующей стороне от curr + public void rotateClockwise(int curr, int up, int right, int down, int left) { Edge[] edgesCopy = deepCloneEdges(); // Пусть копия будет хранить копию оригинала, а обновлять будем // сразу оригинал, беря значения из копии - // Для передней грани - CubeColor[][] edgeFrontOriginal = edges[EdgePosition.FRONT.ordinal()].getParts(); - CubeColor[][] edgeFrontCopy = edgesCopy[EdgePosition.FRONT.ordinal()].getParts(); - // Для смежных граней - CubeColor[][] edgeUpOriginal = edges[EdgePosition.UP.ordinal()].getParts(); - CubeColor[][] edgeRightOriginal = edges[EdgePosition.RIGHT.ordinal()].getParts(); - CubeColor[][] edgeDownOriginal = edges[EdgePosition.DOWN.ordinal()].getParts(); - CubeColor[][] edgeLeftOriginal = edges[EdgePosition.LEFT.ordinal()].getParts(); - CubeColor[][] edgeUpCopy = edgesCopy[EdgePosition.UP.ordinal()].getParts(); - CubeColor[][] edgeRightCopy = edgesCopy[EdgePosition.RIGHT.ordinal()].getParts(); - CubeColor[][] edgeDownCopy = edgesCopy[EdgePosition.DOWN.ordinal()].getParts(); - CubeColor[][] edgeLeftCopy = edgesCopy[EdgePosition.LEFT.ordinal()].getParts(); + CubeColor[][] edgeFrontOriginal = edges[curr].getParts(); // Front, потому что мы curr представляем перед нами + CubeColor[][] edgeFrontCopy = edgesCopy[curr].getParts(); + + CubeColor[][] edgeUpOriginal = edges[up].getParts(); + CubeColor[][] edgeUpCopy = edgesCopy[up].getParts(); + CubeColor[][] edgeRightOriginal = edges[right].getParts(); + CubeColor[][] edgeRightCopy = edgesCopy[right].getParts(); + CubeColor[][] edgeDownOriginal = edges[down].getParts(); + CubeColor[][] edgeDownCopy = edgesCopy[down].getParts(); + CubeColor[][] edgeLeftOriginal = edges[left].getParts(); + CubeColor[][] edgeLeftCopy = edgesCopy[left].getParts(); + + for (int i = 0; i < 3; i++) { + // Меняем переднюю грань + edgeFrontOriginal[0][i] = edgeFrontCopy[2-i][0]; + edgeFrontOriginal[i][2] = edgeFrontCopy[0][i]; + edgeFrontOriginal[2][i] = edgeFrontCopy[2-i][2]; + edgeFrontOriginal[i][0] = edgeFrontCopy[2][i]; + // Меняем смежные грани + edgeUpOriginal[2][i] = edgeLeftCopy[2-i][2]; + edgeRightOriginal[i][0] = edgeUpCopy[2][i]; + edgeDownOriginal[0][i] = edgeRightCopy[2-i][0]; + edgeLeftOriginal[i][2] = edgeDownCopy[0][i]; + } + + } + public void front(RotateDirection direction) { if (direction == RotateDirection.CLOCKWISE) { - for (int i = 0; i < 3; i++) { - // Меняем переднюю грань - edgeFrontOriginal[0][i] = edgeFrontCopy[2-i][0]; - edgeFrontOriginal[i][2] = edgeFrontCopy[0][i]; - edgeFrontOriginal[2][i] = edgeFrontCopy[2-i][2]; - edgeFrontOriginal[i][0] = edgeFrontCopy[2][i]; - // Меняем смежные грани - edgeUpOriginal[2][i] = edgeLeftCopy[2-i][2]; - edgeRightOriginal[i][0] = edgeUpCopy[2][i]; - edgeDownOriginal[0][i] = edgeRightCopy[2-i][0]; - edgeLeftOriginal[i][2] = edgeDownCopy[0][i]; - } + rotateClockwise(4, 0, 3, 1, 2); // заполняем относительно того, какие грани по бокам } else { - for (int j = 0; j < 3; j++) { - for (int i = 0; i < 3; i++) { - // Меняем переднюю грань - edgeFrontOriginal[0][i] = edgeFrontCopy[2 - i][0]; - edgeFrontOriginal[i][2] = edgeFrontCopy[0][i]; - edgeFrontOriginal[2][i] = edgeFrontCopy[2 - i][2]; - edgeFrontOriginal[i][0] = edgeFrontCopy[2][i]; - // Меняем смежные грани - edgeUpOriginal[2][i] = edgeLeftCopy[2 - i][2]; - edgeRightOriginal[i][0] = edgeUpCopy[2][i]; - edgeDownOriginal[0][i] = edgeRightCopy[2 - i][0]; - edgeLeftOriginal[i][2] = edgeDownCopy[0][i]; - } + for (int i = 0; i < 3; i++) { + rotateClockwise(4, 0, 3, 1, 2); } } } public void back(RotateDirection direction) { - Edge[] edgesCopy = deepCloneEdges(); - - CubeColor[][] edgeBackOriginal = edges[EdgePosition.BACK.ordinal()].getParts(); - CubeColor[][] edgeBackCopy = edgesCopy[EdgePosition.BACK.ordinal()].getParts(); - - CubeColor[][] edgeUpOriginal = edges[EdgePosition.UP.ordinal()].getParts(); - CubeColor[][] edgeRightOriginal = edges[EdgePosition.RIGHT.ordinal()].getParts(); - CubeColor[][] edgeDownOriginal = edges[EdgePosition.DOWN.ordinal()].getParts(); - CubeColor[][] edgeLeftOriginal = edges[EdgePosition.LEFT.ordinal()].getParts(); - CubeColor[][] edgeUpCopy = edgesCopy[EdgePosition.UP.ordinal()].getParts(); - CubeColor[][] edgeRightCopy = edgesCopy[EdgePosition.RIGHT.ordinal()].getParts(); - CubeColor[][] edgeDownCopy = edgesCopy[EdgePosition.DOWN.ordinal()].getParts(); - CubeColor[][] edgeLeftCopy = edgesCopy[EdgePosition.LEFT.ordinal()].getParts(); - if (direction == RotateDirection.CLOCKWISE) { - for (int i = 0; i < 3; i++) { - edgeBackOriginal[0][i] = edgeBackCopy[2-i][0]; - edgeBackOriginal[i][2] = edgeBackCopy[0][i]; - edgeBackOriginal[2][i] = edgeBackCopy[2-i][2]; - edgeBackOriginal[i][0] = edgeBackCopy[2][i]; - - edgeUpOriginal[0][i] = edgeRightCopy[i][2]; - edgeRightOriginal[i][2] = edgeDownCopy[2][2-i]; - edgeDownOriginal[2][i] = edgeLeftCopy[i][0]; - edgeLeftOriginal[i][0] = edgeUpCopy[0][2-i]; - } + rotateClockwise(5, 0, 2, 1, 3); } else { - for (int j = 0; j < 3; j++) { - for (int i = 0; i < 3; i++) { - edgeBackOriginal[0][i] = edgeBackCopy[2-i][0]; - edgeBackOriginal[i][2] = edgeBackCopy[0][i]; - edgeBackOriginal[2][i] = edgeBackCopy[2-i][2]; - edgeBackOriginal[i][0] = edgeBackCopy[2][i]; - - edgeUpOriginal[0][i] = edgeRightCopy[i][2]; - edgeRightOriginal[i][2] = edgeDownCopy[2][2-i]; - edgeDownOriginal[2][i] = edgeLeftCopy[i][0]; - edgeLeftOriginal[i][0] = edgeUpCopy[0][2-i]; - } + for (int i = 0; i < 3; i++) { + rotateClockwise(5, 0, 2, 1, 3); } } } public void up(RotateDirection direction) { - Edge[] edgesCopy = deepCloneEdges(); - - CubeColor[][] edgeUpOriginal = edges[EdgePosition.UP.ordinal()].getParts(); - CubeColor[][] edgeUpCopy = edgesCopy[EdgePosition.UP.ordinal()].getParts(); - - CubeColor[][] edgeFrontOriginal = edges[EdgePosition.FRONT.ordinal()].getParts(); - CubeColor[][] edgeBackOriginal = edges[EdgePosition.BACK.ordinal()].getParts(); - CubeColor[][] edgeRightOriginal = edges[EdgePosition.RIGHT.ordinal()].getParts(); - CubeColor[][] edgeLeftOriginal = edges[EdgePosition.LEFT.ordinal()].getParts(); - CubeColor[][] edgeFrontCopy = edgesCopy[EdgePosition.FRONT.ordinal()].getParts(); - CubeColor[][] edgeBackCopy = edgesCopy[EdgePosition.BACK.ordinal()].getParts(); - CubeColor[][] edgeRightCopy = edgesCopy[EdgePosition.RIGHT.ordinal()].getParts(); - CubeColor[][] edgeLeftCopy = edgesCopy[EdgePosition.LEFT.ordinal()].getParts(); - if (direction == RotateDirection.CLOCKWISE) { - for (int i = 0; i < 3; i++) { - edgeUpOriginal[0][i] = edgeUpCopy[2-i][0]; - edgeUpOriginal[i][2] = edgeUpCopy[0][i]; - edgeUpOriginal[2][i] = edgeUpCopy[2-i][2]; - edgeUpOriginal[i][0] = edgeUpCopy[2][i]; - - edgeBackOriginal[0][i] = edgeLeftCopy[0][i]; - edgeLeftOriginal[0][i] = edgeFrontCopy[0][i]; - edgeFrontOriginal[0][i] = edgeRightCopy[0][i]; - edgeRightOriginal[0][i] = edgeBackCopy[0][i]; - } + rotateClockwise(0, 5, 3, 4, 2); } else { - for (int j = 0; j < 3; j++) { - for (int i = 0; i < 3; i++) { - edgeUpOriginal[0][i] = edgeUpCopy[2-i][0]; - edgeUpOriginal[i][2] = edgeUpCopy[0][i]; - edgeUpOriginal[2][i] = edgeUpCopy[2-i][2]; - edgeUpOriginal[i][0] = edgeUpCopy[2][i]; - - edgeBackOriginal[0][i] = edgeLeftCopy[0][i]; - edgeLeftOriginal[0][i] = edgeFrontCopy[0][i]; - edgeFrontOriginal[0][i] = edgeRightCopy[0][i]; - edgeRightOriginal[0][i] = edgeBackCopy[0][i]; - } + for (int i = 0; i < 3; i++) { + rotateClockwise(0, 5, 3, 4, 2); } } } public void down(RotateDirection direction) { - Edge[] edgesCopy = deepCloneEdges(); - - CubeColor[][] edgeDownOriginal = edges[EdgePosition.DOWN.ordinal()].getParts(); - CubeColor[][] edgeDownCopy = edgesCopy[EdgePosition.DOWN.ordinal()].getParts(); - - CubeColor[][] edgeFrontOriginal = edges[EdgePosition.FRONT.ordinal()].getParts(); - CubeColor[][] edgeBackOriginal = edges[EdgePosition.BACK.ordinal()].getParts(); - CubeColor[][] edgeRightOriginal = edges[EdgePosition.RIGHT.ordinal()].getParts(); - CubeColor[][] edgeLeftOriginal = edges[EdgePosition.LEFT.ordinal()].getParts(); - CubeColor[][] edgeFrontCopy = edgesCopy[EdgePosition.FRONT.ordinal()].getParts(); - CubeColor[][] edgeBackCopy = edgesCopy[EdgePosition.BACK.ordinal()].getParts(); - CubeColor[][] edgeRightCopy = edgesCopy[EdgePosition.RIGHT.ordinal()].getParts(); - CubeColor[][] edgeLeftCopy = edgesCopy[EdgePosition.LEFT.ordinal()].getParts(); - - if (direction == RotateDirection.COUNTERCLOCKWISE) { - for (int i = 0; i < 3; i++) { - edgeDownOriginal[0][i] = edgeDownCopy[2-i][0]; - edgeDownOriginal[i][2] = edgeDownCopy[0][i]; - edgeDownOriginal[2][i] = edgeDownCopy[2-i][2]; - edgeDownOriginal[i][0] = edgeDownCopy[2][i]; - - edgeBackOriginal[2][i] = edgeRightCopy[2][i]; - edgeLeftOriginal[2][i] = edgeBackCopy[2][i]; - edgeFrontOriginal[2][i] = edgeLeftCopy[2][i]; - edgeRightOriginal[2][i] = edgeFrontCopy[2][i]; - } + if (direction == RotateDirection.CLOCKWISE) { + rotateClockwise(1, 4, 3, 5, 2); } else { - for (int j = 0; j < 3; j++) { - for (int i = 0; i < 3; i++) { - edgeDownOriginal[0][i] = edgeDownCopy[2-i][0]; - edgeDownOriginal[i][2] = edgeDownCopy[0][i]; - edgeDownOriginal[2][i] = edgeDownCopy[2-i][2]; - edgeDownOriginal[i][0] = edgeDownCopy[2][i]; - - edgeBackOriginal[2][i] = edgeRightCopy[2][i]; - edgeLeftOriginal[2][i] = edgeBackCopy[2][i]; - edgeFrontOriginal[2][i] = edgeLeftCopy[2][i]; - edgeRightOriginal[2][i] = edgeFrontCopy[2][i]; - } + for (int i = 0; i < 3; i++) { + rotateClockwise(1, 4, 3, 5, 2); } } } public void right(RotateDirection direction) { - Edge[] edgesCopy = deepCloneEdges(); - - CubeColor[][] edgeRightOriginal = edges[EdgePosition.RIGHT.ordinal()].getParts(); - CubeColor[][] edgeRightCopy = edgesCopy[EdgePosition.RIGHT.ordinal()].getParts(); - - CubeColor[][] edgeFrontOriginal = edges[EdgePosition.FRONT.ordinal()].getParts(); - CubeColor[][] edgeBackOriginal = edges[EdgePosition.BACK.ordinal()].getParts(); - CubeColor[][] edgeDownOriginal = edges[EdgePosition.DOWN.ordinal()].getParts(); - CubeColor[][] edgeUpOriginal = edges[EdgePosition.UP.ordinal()].getParts(); - CubeColor[][] edgeFrontCopy = edgesCopy[EdgePosition.FRONT.ordinal()].getParts(); - CubeColor[][] edgeBackCopy = edgesCopy[EdgePosition.BACK.ordinal()].getParts(); - CubeColor[][] edgeDownCopy = edgesCopy[EdgePosition.DOWN.ordinal()].getParts(); - CubeColor[][] edgeUpCopy = edgesCopy[EdgePosition.UP.ordinal()].getParts(); - if (direction == RotateDirection.CLOCKWISE) { - for (int i = 0; i < 3; i++) { - edgeRightOriginal[0][i] = edgeRightCopy[2-i][0]; - edgeRightOriginal[i][2] = edgeRightCopy[0][i]; - edgeRightOriginal[2][i] = edgeRightCopy[2-i][2]; - edgeRightOriginal[i][0] = edgeRightCopy[2][i]; - - edgeUpOriginal[i][2] = edgeFrontCopy[i][2]; - edgeFrontOriginal[i][2] = edgeDownCopy[i][2]; - edgeDownOriginal[i][2] = edgeBackCopy[2-i][0]; - edgeBackOriginal[i][0] = edgeUpCopy[2-i][2]; - } + rotateClockwise(3, 0, 5, 1, 4); } else { - for (int j = 0; j < 3; j++) { - for (int i = 0; i < 3; i++) { - edgeRightOriginal[0][i] = edgeRightCopy[2 - i][0]; - edgeRightOriginal[i][2] = edgeRightCopy[0][i]; - edgeRightOriginal[2][i] = edgeRightCopy[2 - i][2]; - edgeRightOriginal[i][0] = edgeRightCopy[2][i]; - - edgeUpOriginal[i][2] = edgeFrontCopy[i][2]; - edgeFrontOriginal[i][2] = edgeDownCopy[i][2]; - edgeDownOriginal[i][2] = edgeBackCopy[2 - i][0]; - edgeBackOriginal[i][0] = edgeUpCopy[2 - i][2]; - } + for (int i = 0; i < 3; i++) { + rotateClockwise(3, 0, 5, 1, 4); } } } public void left(RotateDirection direction) { - Edge[] edgesCopy = deepCloneEdges(); - - CubeColor[][] edgeLeftOriginal = edges[EdgePosition.LEFT.ordinal()].getParts(); - CubeColor[][] edgeLeftCopy = edgesCopy[EdgePosition.LEFT.ordinal()].getParts(); - - CubeColor[][] edgeFrontOriginal = edges[EdgePosition.FRONT.ordinal()].getParts(); - CubeColor[][] edgeBackOriginal = edges[EdgePosition.BACK.ordinal()].getParts(); - CubeColor[][] edgeDownOriginal = edges[EdgePosition.DOWN.ordinal()].getParts(); - CubeColor[][] edgeUpOriginal = edges[EdgePosition.UP.ordinal()].getParts(); - CubeColor[][] edgeFrontCopy = edgesCopy[EdgePosition.FRONT.ordinal()].getParts(); - CubeColor[][] edgeBackCopy = edgesCopy[EdgePosition.BACK.ordinal()].getParts(); - CubeColor[][] edgeDownCopy = edgesCopy[EdgePosition.DOWN.ordinal()].getParts(); - CubeColor[][] edgeUpCopy = edgesCopy[EdgePosition.UP.ordinal()].getParts(); - if (direction == RotateDirection.CLOCKWISE) { - for (int i = 0; i < 3; i++) { - edgeLeftOriginal[0][i] = edgeLeftCopy[2-i][0]; - edgeLeftOriginal[i][2] = edgeLeftCopy[0][i]; - edgeLeftOriginal[2][i] = edgeLeftCopy[2-i][2]; - edgeLeftOriginal[i][0] = edgeLeftCopy[2][i]; - - edgeUpOriginal[i][0] = edgeBackCopy[2-i][2]; - edgeFrontOriginal[i][0] = edgeUpCopy[i][0]; - edgeDownOriginal[i][0] = edgeFrontCopy[i][0]; - edgeBackOriginal[i][2] = edgeDownCopy[2-i][0]; - } + rotateClockwise(2, 0, 4, 1, 5); } else { - for (int j = 0; j < 3; j++) { - for (int i = 0; i < 3; i++) { - edgeLeftOriginal[0][i] = edgeLeftCopy[2-i][0]; - edgeLeftOriginal[i][2] = edgeLeftCopy[0][i]; - edgeLeftOriginal[2][i] = edgeLeftCopy[2-i][2]; - edgeLeftOriginal[i][0] = edgeLeftCopy[2][i]; - - edgeUpOriginal[i][0] = edgeBackCopy[2-i][2]; - edgeFrontOriginal[i][0] = edgeUpCopy[i][0]; - edgeDownOriginal[i][0] = edgeFrontCopy[i][0]; - edgeBackOriginal[i][2] = edgeDownCopy[2-i][0]; - } + for (int i = 0; i < 3; i++) { + rotateClockwise(2, 0, 4, 1, 5); } } } From 4a967a0cab2a4765885511bc4613c0d9161638b2 Mon Sep 17 00:00:00 2001 From: gle6a6y Date: Wed, 4 Feb 2026 20:57:53 +0300 Subject: [PATCH 7/7] sixth try --- .../hse/java/practice/task1/RubiksCube.java | 40 +++++++++++++++++-- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/src/main/java/hse/java/practice/task1/RubiksCube.java b/src/main/java/hse/java/practice/task1/RubiksCube.java index e91c8a65..dc57811b 100644 --- a/src/main/java/hse/java/practice/task1/RubiksCube.java +++ b/src/main/java/hse/java/practice/task1/RubiksCube.java @@ -68,10 +68,42 @@ public void rotateClockwise(int curr, int up, int right, int down, int left) { edgeFrontOriginal[2][i] = edgeFrontCopy[2-i][2]; edgeFrontOriginal[i][0] = edgeFrontCopy[2][i]; // Меняем смежные грани - edgeUpOriginal[2][i] = edgeLeftCopy[2-i][2]; - edgeRightOriginal[i][0] = edgeUpCopy[2][i]; - edgeDownOriginal[0][i] = edgeRightCopy[2-i][0]; - edgeLeftOriginal[i][2] = edgeDownCopy[0][i]; + if (curr == 0) { + edgeUpOriginal[0][i] = edgeLeftCopy[0][i]; + edgeRightOriginal[0][i] = edgeUpCopy[0][i]; + edgeDownOriginal[0][i] = edgeRightCopy[0][i]; + edgeLeftOriginal[0][i] = edgeDownCopy[0][i]; + } + else if (curr == 1){ + edgeUpOriginal[2][i] = edgeLeftCopy[2][i]; + edgeRightOriginal[2][i] = edgeUpCopy[2][i]; + edgeDownOriginal[2][i] = edgeRightCopy[2][i]; + edgeLeftOriginal[2][i] = edgeDownCopy[2][i]; + } + else if (curr == 2) { + edgeUpOriginal[i][0] = edgeLeftCopy[2 - i][2]; + edgeRightOriginal[i][0] = edgeUpCopy[i][0]; + edgeDownOriginal[i][0] = edgeRightCopy[i][0]; + edgeLeftOriginal[i][2] = edgeDownCopy[2-i][0]; + } + else if (curr == 3) { + edgeUpOriginal[i][2] = edgeLeftCopy[i][2]; + edgeRightOriginal[i][0] = edgeUpCopy[2 - i][2]; + edgeDownOriginal[i][2] = edgeRightCopy[2 - i][0]; + edgeLeftOriginal[i][2] = edgeDownCopy[i][2]; + } + else if (curr == 4) { + edgeUpOriginal[2][i] = edgeLeftCopy[2 - i][2]; + edgeRightOriginal[i][0] = edgeUpCopy[2][i]; + edgeDownOriginal[0][i] = edgeRightCopy[2 - i][0]; + edgeLeftOriginal[i][2] = edgeDownCopy[0][i]; + } + else if (curr == 5) { + edgeUpOriginal[0][i] = edgeLeftCopy[i][2]; + edgeRightOriginal[i][0] = edgeUpCopy[0][2 - i]; + edgeDownOriginal[2][i] = edgeRightCopy[i][0]; + edgeLeftOriginal[i][2] = edgeDownCopy[2][2 - i]; + } } }