Codebreaker 2bc08752a0894eb2c7afb345286e391d

26Jan/076

새로운(?) 자바 코딩법을 소개합니다

\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020\u0020
\u0063\u006c\u0061\u0073\u0073\u0020\u0020\u0020\u0020\u0020
\u0048\u0065\u006c\u006c\u006f\u0057\u006f\u0072\u006c\u0064
\u0020\u007b\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u000d
\u000a\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020
\u0020\u0073\u0074\u0061\u0074\u0069\u0063\u0020\u0020\u0020
\u0020\u0076\u006f\u0069\u0064\u0020\u0020\u0020\u0020\u0020
\u0020\u006d\u0061\u0069\u006e\u0028\u0020\u0020\u0020\u0020
\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020
\u0020\u0061\u0072\u0067\u0073\u0029\u0020\u007b\u0020\u0020
\u000d\u000a\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u0020
\u0020\u0020\u006f\u0075\u0074\u002e\u0020\u0020\u0020\u0020
\u0020\u0020\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028
\u0020\u0020\u0022\u0048\u0065\u006c\u006c\u006f\u0020\u0022
\u002b\u0020\u0022\u0057\u006f\u0072\u006c\u0064\u0021\u0022
\u0020\u0020\u0029\u003b\u0020\u0020\u0020\u0020\u0020\u0020
\u0020\u000d\u000a\u007d\u000d\u000a\u007d\u000d\u000a\u0020

무슨 코드일까? 실행시켜보면 안다 ;)

Tagged as: , 6 Comments
13Jan/071

Can It Be True?

Code

818302.png

Result

818303.png

Why? What the hell is wrong with that?

818304.png

The red one is actually 'L', which means the result is gonna be 155L. I strongly recommend using L instead of l when you represent a number which is a type of Long.

Tagged as: 1 Comment
5Jul/061

한글 음절(syllable) 다루기

서론

음절은 하나 또는 그 이상의 말소리로 이루어져 독자적으로 발음되는 가장 작은 단위이다. 또 다른 말로는 '소리마디', 영어로는 syllable 이라고 한다. 한글의 음절은 초성, 중성, 종성으로 이루어진다. 초성과 중성은 반드시 있어야 하지만 종성은 없어도 음절을 구성하는데 지장이 없다. 더 자세히 들어가면 나의 국문학적 무지가 탄로날지도 모르니 서론은 여기서 그만 하도록 하겠다.

본론

간단하게 음절을 다루는 클래스, Syllable 을 작성하기로 했다. 내부적으로 초성, 중성, 종성을 분리하여 저장하고 있으며, 몇 가지 편리한 메소드를 제공한다.

Syllable 클래스를 작성하기 시작한지 얼마 지나지 않아서 문제에 봉착하게 되었다. 키보드에서 'ㄱ' 을 눌러서 타이핑된 글자의 코드는 0x3131 이지만, unicode specifications 에 나와있는 초성의 'ㄱ'은 0x1100, 종성의 'ㄱ'은 0x11A8 이다. 이 문제를 해결하기 위해 외부적으로는 0x31310x1100 이 모두 허용되도록 하고, 내부적으로는 specifications 에 나와있는 코드를 쓰기로 결정했다.

음절을 만드는 방법은 다음의 3가지가 있다.

방법 1

빈 음절 인스턴스를 만든 후, 초성, 중성, 종성을 따로 집어넣는다.

Syllable s1 = new Syllable();
s1.setChoSeong('ㅂ');
s1.setJungSeong('ㅡ');
s1.setJongSeong('ㄹ');

방법 2

방법 1과 비슷하다. 단지 생성자가 그 일을 대신할 뿐이다.

Syllable s2 = new Syllable('ㄹ', 'ㅗ');

방법 3

마지막으로, 생성자에 완전한 음절을 집어넣는 방법이 있다.

Syllable s3 = new Syllable('그');

예제

System.out.print(s1);
System.out.print(s2);
System.out.print(s3);

실행 결과는

블로그

전체 코드를 공개하면 좋겠지만, 안타깝게도 Syllable 클래스의 소스코드는 당분간 공개하지 않기로 결정했다. 대신, 프로토타입 정도는 공개한다.

public class Syllable {

    private char choSeong;
    private char jungSeong;
    private char jongSeong;

    public Syllable();
    public Syllable(char syllable);
    public Syllable(char choSeong, char jungSeong);
    public Syllable(char choSeong, char jungSeong, char jongSeong);

    public void setChoSeong(char choSeong);
    public char getChoSeong();
    public void setJungSeong(char jungSeong);
    public char getJungSeong();
    public void setJongSeong(char jongSeong);
    public char getJongSeong();

    public String toString();

    public static boolean isSyllable(char character);
    public static char[] split(char syllable);
    public static char build(char choSeong, char jungSeong, char jongSeong);
}

참고 자료

Tagged as: , 1 Comment