From 9ed04ddb79071a08818503edff22b68a804d0945 Mon Sep 17 00:00:00 2001 From: Mac Date: Sat, 31 Jan 2026 22:18:37 +0300 Subject: [PATCH 1/9] Testing test 1 --- .../java/hse/java/practice/task1/Edge.java | 58 +++++++++++++++ .../hse/java/practice/task1/RubiksCube.java | 74 ++++++++++++++++++- 2 files changed, 130 insertions(+), 2 deletions(-) diff --git a/src/main/java/hse/java/practice/task1/Edge.java b/src/main/java/hse/java/practice/task1/Edge.java index d95ba56b..d4182000 100644 --- a/src/main/java/hse/java/practice/task1/Edge.java +++ b/src/main/java/hse/java/practice/task1/Edge.java @@ -35,4 +35,62 @@ public void setParts(CubeColor[][] parts) { public String toString() { return Arrays.deepToString(parts); } + //TODO: + public void rotateFace(RotateDirection direction){ + + switch (direction){ + case CLOCKWISE: + rotateFaceClockwise(); + break; + case COUNTERCLOCKWISE: + rotateFaceCounterClockwise(); + break; + } + + } + + private void rotateFaceClockwise(){ + CubeColor[][] transpotedColors = new CubeColor[3][3]; + + for (int rowIndex = 0; rowIndex < 3; rowIndex++) { + for (int colIndex = 0; colIndex < 3; colIndex++) { + transpotedColors[rowIndex][colIndex] = parts[colIndex][rowIndex]; + } + } + + parts = transpotedColors.clone(); + } + + private void rotateFaceCounterClockwise(){ + for (int i = 0; i < 3; i++) { + rotateFaceClockwise(); + } + } + + public CubeColor[] getRow(int index) { + return parts[index]; + } + + + public void setRow(int index, CubeColor[] colors){ + parts[index] = colors; + } + + public CubeColor[] getCol(int index){ + CubeColor[] tmp = new CubeColor[3]; + + for (int rowIndex : new int[]{0, 1, 2}){ + tmp[rowIndex] = parts[rowIndex][index]; + } + + return tmp; + } + + public void setCol(int index, CubeColor[] colors){ + for (int rowIndex : new int[]{0,1,2}) { + parts[rowIndex][index] = colors[rowIndex]; + } + } + } + diff --git a/src/main/java/hse/java/practice/task1/RubiksCube.java b/src/main/java/hse/java/practice/task1/RubiksCube.java index 2091b657..0581e427 100644 --- a/src/main/java/hse/java/practice/task1/RubiksCube.java +++ b/src/main/java/hse/java/practice/task1/RubiksCube.java @@ -6,7 +6,7 @@ * Необходимо реализовать интерфейс Cube * При повороте передней грани, меняются верх низ право и лево */ -public class RubiksCube { +public class RubiksCube implements Cube{ private static final int EDGES_COUNT = 6; @@ -26,13 +26,83 @@ public RubiksCube() { } } + @Override + public void up(RotateDirection direction) { + edges[0].rotateFace(direction); + } + + @Override + public void down(RotateDirection direction) { + + } + + @Override + public void left(RotateDirection direction) { + + } + + @Override + public void right(RotateDirection direction) { + + } + + //TODO: + @Override public void front(RotateDirection direction) { + switch (direction){ + case CLOCKWISE: + rotateFrontClockwise(); + break; + case COUNTERCLOCKWISE: + rotateFrontCounterClockwise(); + break; + } + } + + @Override + public void back(RotateDirection direction) { + } - + public Edge[] getEdges() { return edges; } + //TODO: + public void rotateFrontClockwise(){ + edges[4].rotateFace(RotateDirection.CLOCKWISE); + + CubeColor[] upToRight = edges[0].getRow(2); + + CubeColor[] leftToUp = edges[2].getCol(2); + leftToUp = reverseArr(leftToUp); + edges[0].setRow(2, leftToUp); + + CubeColor[] downToLeft = edges[1].getRow(0); + edges[2].setCol(2,downToLeft); + + CubeColor[] rightToDown = edges[3].getCol(0); + rightToDown = reverseArr(rightToDown); + edges[1].setRow(0,rightToDown); + + edges[3].setCol(0, upToRight); + + } + + public void rotateFrontCounterClockwise(){ + rotateFrontClockwise(); + rotateFrontClockwise(); + rotateFrontClockwise(); + } + + private CubeColor[] reverseArr(CubeColor[] arr){ + CubeColor[] tmp = arr.clone(); + int len = arr.length; + for (int i = 0; i < len; i++){ + tmp[i] = arr[len - 1 - i]; + } + return tmp; + } @Override public String toString() { From f0527d4946fd0149f98083092a8413d13e37c2c4 Mon Sep 17 00:00:00 2001 From: Mac Date: Sat, 31 Jan 2026 22:25:11 +0300 Subject: [PATCH 2/9] Testing compilation --- .../java/hse/java/practice/task1/RubiksCube.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/hse/java/practice/task1/RubiksCube.java b/src/main/java/hse/java/practice/task1/RubiksCube.java index 0581e427..bfb60e81 100644 --- a/src/main/java/hse/java/practice/task1/RubiksCube.java +++ b/src/main/java/hse/java/practice/task1/RubiksCube.java @@ -33,20 +33,20 @@ public void up(RotateDirection direction) { @Override public void down(RotateDirection direction) { - + System.out.println("LOL"); } @Override public void left(RotateDirection direction) { - + System.out.println("LOL"); } @Override public void right(RotateDirection direction) { - + System.out.println("LOL"); } - //TODO: + @Override public void front(RotateDirection direction) { @@ -62,13 +62,13 @@ public void front(RotateDirection direction) { @Override public void back(RotateDirection direction) { - + System.out.println("LOL"); } public Edge[] getEdges() { return edges; } - //TODO: + public void rotateFrontClockwise(){ edges[4].rotateFace(RotateDirection.CLOCKWISE); From 586138b2a180210fb79430792e12bc683f2d36c5 Mon Sep 17 00:00:00 2001 From: Mac Date: Sat, 31 Jan 2026 22:33:59 +0300 Subject: [PATCH 3/9] Testing compilation #2 --- 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 bfb60e81..30f6b7d6 100644 --- a/src/main/java/hse/java/practice/task1/RubiksCube.java +++ b/src/main/java/hse/java/practice/task1/RubiksCube.java @@ -28,7 +28,7 @@ public RubiksCube() { @Override public void up(RotateDirection direction) { - edges[0].rotateFace(direction); + System.out.println("LOL"); } @Override From 8543143323037a04ad946e42f7af8093f0fd925b Mon Sep 17 00:00:00 2001 From: Mac Date: Sat, 31 Jan 2026 22:41:28 +0300 Subject: [PATCH 4/9] Testing compilation #3 --- 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 30f6b7d6..55289b0f 100644 --- a/src/main/java/hse/java/practice/task1/RubiksCube.java +++ b/src/main/java/hse/java/practice/task1/RubiksCube.java @@ -62,7 +62,7 @@ public void front(RotateDirection direction) { @Override public void back(RotateDirection direction) { - System.out.println("LOL"); + System.out.println("KEK"); } public Edge[] getEdges() { From 6cf39812e9d441f00c079d83a5989cf035795ab3 Mon Sep 17 00:00:00 2001 From: Mac Date: Mon, 2 Feb 2026 18:56:54 +0300 Subject: [PATCH 5/9] testing up() --- .../hse/java/practice/task1/RubiksCube.java | 52 ++++++++++++++++++- 1 file changed, 50 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 55289b0f..91dbad9f 100644 --- a/src/main/java/hse/java/practice/task1/RubiksCube.java +++ b/src/main/java/hse/java/practice/task1/RubiksCube.java @@ -28,7 +28,38 @@ public RubiksCube() { @Override public void up(RotateDirection direction) { - System.out.println("LOL"); + switch (direction){ + case CLOCKWISE: + rotateUpClockwise(); + break; + case COUNTERCLOCKWISE: + rotateUpCounterClockwise(); + break; + } + } + + public void rotateUpClockwise(){ + edges[0].rotateFace(RotateDirection.CLOCKWISE); + + CubeColor[] rightToFront = edges[3].getRow(0); + + CubeColor[] backToRight = edges[5].getRow(0); + edges[3].setRow(0,backToRight); + + CubeColor[] lefToBack = edges[2].getRow(0); + edges[5].setRow(0, lefToBack); + + CubeColor[] frontToLeft = edges[4].getRow(0); + edges[2].setRow(0, frontToLeft); + + edges[4].setRow(0, rightToFront); + + } + + public void rotateUpCounterClockwise(){ + rotateUpClockwise(); + rotateUpClockwise(); + rotateUpClockwise(); } @Override @@ -62,7 +93,24 @@ public void front(RotateDirection direction) { @Override public void back(RotateDirection direction) { - System.out.println("KEK"); + switch (direction){ + case CLOCKWISE: + rotateBackClockwise(); + break; + case COUNTERCLOCKWISE: + rotateBackCounterClockwise(); + break; + } + } + + public void rotateBackClockwise(){ + + } + + public void rotateBackCounterClockwise(){ + rotateBackClockwise(); + rotateBackClockwise(); + rotateBackClockwise(); } public Edge[] getEdges() { From c9392e3fb91de5acce0c4f5237ad47de125041fb Mon Sep 17 00:00:00 2001 From: Mac Date: Mon, 2 Feb 2026 19:09:50 +0300 Subject: [PATCH 6/9] testing left() --- .../hse/java/practice/task1/RubiksCube.java | 36 ++++++++++++++++++- 1 file changed, 35 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 91dbad9f..dfd991f6 100644 --- a/src/main/java/hse/java/practice/task1/RubiksCube.java +++ b/src/main/java/hse/java/practice/task1/RubiksCube.java @@ -69,7 +69,41 @@ public void down(RotateDirection direction) { @Override public void left(RotateDirection direction) { - System.out.println("LOL"); + switch (direction){ + case CLOCKWISE: + rotateLeftClockwise(); + break; + case COUNTERCLOCKWISE: + rotateLeftCounterClockwise(); + break; + } + } + + public void rotateLeftClockwise(){ + edges[2].rotateFace(RotateDirection.CLOCKWISE); + + CubeColor[] backToUp = edges[5].getCol(2); + + + CubeColor[] downToBack = edges[1].getCol(0); + downToBack = reverseArr(downToBack); + edges[5].setCol(2, downToBack); + + CubeColor[] frontToDown = edges[4].getCol(0); + edges[1].setCol(0, frontToDown); + + CubeColor[] upToFront = edges[0].getCol(0); + edges[4].setCol(0, upToFront); + + backToUp = reverseArr(backToUp); + edges[0].setCol(0, backToUp); + + } + + public void rotateLeftCounterClockwise(){ + rotateLeftClockwise(); + rotateLeftClockwise(); + rotateLeftClockwise(); } @Override From 5dec3e5bcb5551255fd920dc96fac27ad30bceda Mon Sep 17 00:00:00 2001 From: Mac Date: Mon, 2 Feb 2026 19:24:09 +0300 Subject: [PATCH 7/9] testing right() --- .../hse/java/practice/task1/RubiksCube.java | 34 +++++++++++++++++-- 1 file changed, 32 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 dfd991f6..f20b69c6 100644 --- a/src/main/java/hse/java/practice/task1/RubiksCube.java +++ b/src/main/java/hse/java/practice/task1/RubiksCube.java @@ -108,9 +108,40 @@ public void rotateLeftCounterClockwise(){ @Override public void right(RotateDirection direction) { - System.out.println("LOL"); + switch (direction){ + case CLOCKWISE: + rotateRightClockwise(); + break; + case COUNTERCLOCKWISE: + rotateRightCounterClockwise(); + break; + } + } + + public void rotateRightClockwise(){ + edges[3].rotateFace(RotateDirection.CLOCKWISE); + + CubeColor[] upToBack = edges[0].getCol(2); + + CubeColor[] frontToUp = edges[4].getCol(2); + edges[0].setCol(2,frontToUp); + + CubeColor[] downToFront = edges[1].getCol(2); + edges[4].setCol(2, downToFront); + + CubeColor[] backToDown = edges[5].getCol(0); + backToDown = reverseArr(backToDown); + edges[1].setCol(2, backToDown); + + upToBack = reverseArr(upToBack); + edges[5].setCol(0, upToBack); } + public void rotateRightCounterClockwise(){ + rotateRightClockwise(); + rotateRightClockwise(); + rotateRightClockwise(); + } @Override public void front(RotateDirection direction) { @@ -138,7 +169,6 @@ public void back(RotateDirection direction) { } public void rotateBackClockwise(){ - } public void rotateBackCounterClockwise(){ From 7a7fcc61173d3b1fc6b7bcc45fd1b391962ba36c Mon Sep 17 00:00:00 2001 From: Mac Date: Mon, 2 Feb 2026 21:17:12 +0300 Subject: [PATCH 8/9] testing down() --- .../hse/java/practice/task1/RubiksCube.java | 33 ++++++++++++++++++- 1 file changed, 32 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 f20b69c6..65450f9c 100644 --- a/src/main/java/hse/java/practice/task1/RubiksCube.java +++ b/src/main/java/hse/java/practice/task1/RubiksCube.java @@ -64,7 +64,38 @@ public void rotateUpCounterClockwise(){ @Override public void down(RotateDirection direction) { - System.out.println("LOL"); + switch (direction){ + case CLOCKWISE: + rotateDownClockwise(); + break; + case COUNTERCLOCKWISE: + rotateDownCounterClockwise(); + break; + } + } + + public void rotateDownClockwise(){ + edges[1].rotateFace(RotateDirection.CLOCKWISE); + + CubeColor[] rightToBack = edges[3].getRow(2); + + CubeColor[] frontToRight = edges[4].getRow(2); + edges[3].setRow(2, frontToRight); + + CubeColor[] leftToFront = edges[2].getRow(2); + edges[4].setRow(2, leftToFront); + + CubeColor[] backToLeft = edges[5].getRow(2); + edges[2].setRow(2, backToLeft); + + edges[5].setRow(2, rightToBack); + + } + + public void rotateDownCounterClockwise(){ + rotateDownClockwise(); + rotateDownClockwise(); + rotateDownClockwise(); } @Override From 06082ebe3c0044e8dc46426eb32edd706fa5e081 Mon Sep 17 00:00:00 2001 From: Mac Date: Mon, 2 Feb 2026 21:27:06 +0300 Subject: [PATCH 9/9] testing back() --- .../hse/java/practice/task1/RubiksCube.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/main/java/hse/java/practice/task1/RubiksCube.java b/src/main/java/hse/java/practice/task1/RubiksCube.java index 65450f9c..adf2f354 100644 --- a/src/main/java/hse/java/practice/task1/RubiksCube.java +++ b/src/main/java/hse/java/practice/task1/RubiksCube.java @@ -200,6 +200,23 @@ public void back(RotateDirection direction) { } public void rotateBackClockwise(){ + edges[5].rotateFace(RotateDirection.CLOCKWISE); + + CubeColor[] leftToDown = edges[2].getCol(0); + + CubeColor[] upToLeft = edges[0].getRow(0); + upToLeft = reverseArr(upToLeft); + edges[2].setCol(0, upToLeft); + + CubeColor[] rightToUp = edges[3].getCol(2); + rightToUp = reverseArr(rightToUp); + edges[0].setRow(0, rightToUp); + + CubeColor[] downToRight = edges[1].getRow(2); + downToRight = reverseArr(downToRight); + edges[3].setCol(2, downToRight); + + edges[1].setRow(2, leftToDown); } public void rotateBackCounterClockwise(){