PersesTitan(페르) 기술블로그

[GuguClass]구구클래스 한줄로 구현해보기 본문

Language/Java

[GuguClass]구구클래스 한줄로 구현해보기

PersesTitan(페르) 2022. 11. 24. 10:27

오늘 우연히 구구클래스라는 것을 알게 되었는데요. 해당 코드를 진짜로 한줄로 구현해볼 수 있지 않을까 하고 구현을 시도해보게 되었습니다.
그냥 구구단 코드인데... 자세한 추가적인 내용은 나무위키 (고마워요 나무위키) 를 참고하여 알게 되었습니다.
문론 숏코딩을 목적으로 최적화따위는 고려하지 않았습니다.

코드

원본 코드

(출처: 나무위키)

public class GuguClass {
  public static void main(String[] args) {
    System.out.format("%n                      < gugu>%n");
    for(int j=1; j<=9; j++) {
      System.out.println();
      for(int i=2; i<=5; i++) { // 2~ 5
        System.out.format("%d X %d = %2d    ", i, j, i * j);
      }
    }
    System.out.println(); // 줄바꿈
    for(int j=1; j<=9; j++) {
      System.out.println();
      for(int i=6; i<=9; i++) { // 6~ 9
        System.out.format("%d X %d = %2d    ", i, j, i * j);
      }
    }
    System.out.println(); // 줄바꿈
  }
}

내 코드

한줄이라고 하기에는 많이 길ㄷ..
한 줄로 짤 코드를 누가 열 네 줄로 만들어놨어요?

import java.util.stream.IntStream;

public class GuguClass {
    public static void main(String[] args) {
        System.out.println("\t".repeat(6) + " < gugu>\n");
        IntStream.range(1,20).forEach(i->IntStream.range(2,6).forEach(a->System.out.printf(i==10?"":"%d X %d = %2d"+(a%5==0?(i==9?"\n\n":"\n"):"\t\t"),a=i>10?a+4:a,i>10?i-10:i,(i>10?i-10:i)*a)));
    }
}

출력

						 < gugu>

2 X 1 =  2		3 X 1 =  3		4 X 1 =  4		5 X 1 =  5
2 X 2 =  4		3 X 2 =  6		4 X 2 =  8		5 X 2 = 10
2 X 3 =  6		3 X 3 =  9		4 X 3 = 12		5 X 3 = 15
2 X 4 =  8		3 X 4 = 12		4 X 4 = 16		5 X 4 = 20
2 X 5 = 10		3 X 5 = 15		4 X 5 = 20		5 X 5 = 25
2 X 6 = 12		3 X 6 = 18		4 X 6 = 24		5 X 6 = 30
2 X 7 = 14		3 X 7 = 21		4 X 7 = 28		5 X 7 = 35
2 X 8 = 16		3 X 8 = 24		4 X 8 = 32		5 X 8 = 40
2 X 9 = 18		3 X 9 = 27		4 X 9 = 36		5 X 9 = 45

6 X 1 =  6		7 X 1 =  7		8 X 1 =  8		9 X 1 =  9
6 X 2 = 12		7 X 2 = 14		8 X 2 = 16		9 X 2 = 18
6 X 3 = 18		7 X 3 = 21		8 X 3 = 24		9 X 3 = 27
6 X 4 = 24		7 X 4 = 28		8 X 4 = 32		9 X 4 = 36
6 X 5 = 30		7 X 5 = 35		8 X 5 = 40		9 X 5 = 45
6 X 6 = 36		7 X 6 = 42		8 X 6 = 48		9 X 6 = 54
6 X 7 = 42		7 X 7 = 49		8 X 7 = 56		9 X 7 = 63
6 X 8 = 48		7 X 8 = 56		8 X 8 = 64		9 X 8 = 72
6 X 9 = 54		7 X 9 = 63		8 X 9 = 72		9 X 9 = 81