diff --git a/src/main/java/ladder/Application.java b/src/main/java/ladder/Application.java new file mode 100644 index 0000000000..0c57fc9c9d --- /dev/null +++ b/src/main/java/ladder/Application.java @@ -0,0 +1,16 @@ +package ladder; + +import ladder.ui.InputView; +import ladder.ui.PrintView; + +public class Application { + public static void main(String[] args) { + InputView inputView = new InputView(); + inputView.saveInput(); + System.out.println(inputView.names); + Ladder ladder= new Ladder(inputView.ladderHeight, inputView.names.size()); + PrintView.printResult(inputView.names, ladder); + + } + +} diff --git a/src/main/java/ladder/Ladder.java b/src/main/java/ladder/Ladder.java new file mode 100644 index 0000000000..e91eb20d4f --- /dev/null +++ b/src/main/java/ladder/Ladder.java @@ -0,0 +1,21 @@ +package ladder; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public class Ladder { + private List lines; + + public Ladder(int height, int nameSize) { + lines = IntStream.range(0, height) + .mapToObj(i -> new Line(nameSize)) + .collect(Collectors.toList()); + } + + public List getLines(){ + return lines; + } + +} diff --git a/src/main/java/ladder/Line.java b/src/main/java/ladder/Line.java new file mode 100644 index 0000000000..0742416675 --- /dev/null +++ b/src/main/java/ladder/Line.java @@ -0,0 +1,30 @@ +package ladder; + +import ladder.util.RandomValueGenerator; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.IntStream; + +public class Line { + private final List points = new ArrayList<>(); + + public Line(int countOfPerson) { + IntStream.range(0, countOfPerson - 1) + .mapToObj(i -> isInValidPosition(i) ? false : RandomValueGenerator.generate()) + .forEach(points::add); + } + + private boolean isInValidPosition(int position) { + return isLeftTrue(position); + } + + private boolean isLeftTrue(int position) { + return (position - 1 >= 0 && points.get(position - 1)); + } + + + public List getPoints() { + return points; + } +} diff --git a/src/main/java/ladder/ui/InputView.java b/src/main/java/ladder/ui/InputView.java new file mode 100644 index 0000000000..4734eba377 --- /dev/null +++ b/src/main/java/ladder/ui/InputView.java @@ -0,0 +1,25 @@ +package ladder.ui; + +import java.util.Arrays; +import java.util.List; +import java.util.Scanner; + +public class InputView { + private final Scanner scanner = new Scanner(System.in); + public List names; + public int ladderHeight = 0; + + public void saveInput() { + System.out.println("참여할 사람 이름을 입력하세요. (이름은 쉼표(,)로 구분하세요)"); + String nameStr = scanner.nextLine(); + names= Arrays.asList(split(nameStr)); + System.out.println("최대 사다리 높이는 몇개 인가요?"); + ladderHeight = scanner.nextInt(); + } + + private String[] split(String str) { + return str.split(","); + } + + +} diff --git a/src/main/java/ladder/ui/PrintView.java b/src/main/java/ladder/ui/PrintView.java new file mode 100644 index 0000000000..f5f183a1b5 --- /dev/null +++ b/src/main/java/ladder/ui/PrintView.java @@ -0,0 +1,49 @@ +package ladder.ui; + +import ladder.Ladder; +import ladder.Line; + +import java.util.List; + +public class PrintView { + public static void printResult(List names, Ladder ladder) { + System.out.println("실행결과"); + printName(names); + printLadder(ladder); + } + + private static void printName(List names) { + names.stream() + .map(name -> { + int padding = 5 - name.length(); + String paddedName = name + " ".repeat(padding); + return paddedName; + }) + .forEach(System.out::print); + System.out.println(); + } + + private static void printLadder(Ladder ladder) { + List lines = ladder.getLines(); + lines.forEach(line -> { + printColumn(); + line.getPoints().forEach(point -> { + printRow(point); + printColumn(); + }); + System.out.println(); + }); + } + + private static void printColumn(){ + System.out.print("|"); + } + + private static void printRow(boolean point){ + if(point){ + System.out.print("-----"); + } else{ + System.out.print(" "); + } + } +} diff --git a/src/main/java/ladder/util/RandomValueGenerator.java b/src/main/java/ladder/util/RandomValueGenerator.java new file mode 100644 index 0000000000..78c42efc3d --- /dev/null +++ b/src/main/java/ladder/util/RandomValueGenerator.java @@ -0,0 +1,11 @@ +package ladder.util; + +import java.util.Random; + +public class RandomValueGenerator { + private static Random random = new Random(); + + public static boolean generate() { + return random.nextBoolean(); + } +}