diff --git a/src/main/java/ladder/controller/LadderController.java b/src/main/java/ladder/controller/LadderController.java index 52fed14b..235c67f5 100644 --- a/src/main/java/ladder/controller/LadderController.java +++ b/src/main/java/ladder/controller/LadderController.java @@ -2,6 +2,7 @@ import ladder.model.Ladder; import ladder.model.LadderBuilder; +import ladder.model.LadderResult; import ladder.model.LinkConnector; import ladder.view.LadderOutputView; @@ -31,13 +32,14 @@ public void run() { LadderBuilder ladderBuilder = new LadderBuilder(linkConnector); Ladder ladder = ladderBuilder.build(width, height); - LadderOutputView ladderOutputView = new LadderOutputView(); + LadderResult ladderResult = new LadderResult(); List> lines = ladder.getLines(); for (List line : lines) { ladderOutputView.printLine(line); } + ladderResult.printResult(ladder); } } diff --git a/src/main/java/ladder/model/LadderResult.java b/src/main/java/ladder/model/LadderResult.java new file mode 100644 index 00000000..bf22c066 --- /dev/null +++ b/src/main/java/ladder/model/LadderResult.java @@ -0,0 +1,36 @@ +package ladder.model; + +import java.util.List; + +public class LadderResult { + + public void printResult(Ladder ladder) { + List> lines = ladder.getLines(); + int width = 0; + if (!lines.isEmpty()) { + width = lines.get(0).size() + 1; + } + + for (int startLine = 0; startLine < width; startLine++) { + int currentPosition = endPosition(startLine, lines); + System.out.println(startLine + " -> " + currentPosition); + } + } + + private int endPosition(int start, List> lines) { + int currentPosition = start; + for (List line : lines) { + currentPosition = move(currentPosition, line); + } + return currentPosition; + } + + private int move(int currentPosition, List line) { + boolean rightPosition = currentPosition < line.size() && line.get(currentPosition); + boolean leftPosition = currentPosition > 0 && line.get(currentPosition - 1); + + if (rightPosition) return currentPosition + 1; + if (leftPosition) return currentPosition - 1; + return currentPosition; + } +} diff --git a/src/test/java/ladder/model/LadderResultTest.java b/src/test/java/ladder/model/LadderResultTest.java new file mode 100644 index 00000000..6a7e424c --- /dev/null +++ b/src/test/java/ladder/model/LadderResultTest.java @@ -0,0 +1,26 @@ +package ladder.model; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +class LadderResultTest { + + @Test + @DisplayName("사다리 위치 출력") + void ladderPositionCheck() { + // 임의로 만든 사다리 + List> lines = new ArrayList<>(); + lines.add(Arrays.asList(false, true)); + lines.add(Arrays.asList(false, false)); + + Ladder ladder = new Ladder(lines); + LadderResult ladderResult = new LadderResult(); + + ladderResult.printResult(ladder); + } + +}