한글 완성자 분석하기
★프로그래밍/Ruby :: 2016. 8. 13. 23:16한글 완성자 분석 프로그램 예제입니다.
이 프로그램은 한글 완성자가 어떤 자모로 조합되어 있는지 (예를 들어 '한글'이라는 문자열을 받으면 '한'을 ㅎ+ㅏ+ㄴ으로 분석하고 '글'을 ㄱ+ㅡ+ㄹ로) 분석해서 화면에 표시하는 프로그램입니다.
이 프로그램은 UTF-8 인코딩을 이용합니다.
# 초성, 중성, 종성 배열을 만들어 둠 choseong = ["ㄱ", "ㄲ", "ㄴ", "ㄷ", "ㄸ", "ㄹ", "ㅁ", "ㅂ", "ㅃ", "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅉ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ"] jungseong = ["ㅏ", "ㅐ", "ㅑ", "ㅒ", "ㅓ", "ㅔ", "ㅕ", "ㅖ", "ㅗ", "ㅘ", "ㅙ", "ㅚ", "ㅛ", "ㅜ", "ㅝ", "ㅞ", "ㅟ", "ㅠ", "ㅡ", "ㅢ", "ㅣ"] jongseong = ["**", "ㄱ", "ㄲ", "ㄳ", "ㄴ", "ㄵ", "ㄶ", "ㄷ", "ㄹ", "ㄺ", "ㄻ", "ㄼ", "ㄽ", "ㄾ", "ㄿ", "ㅀ", "ㅁ", "ㅂ", "ㅄ", "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ"] # 입력 받기 puts "1글자 이상의 한글 완성자(가-힣)를 입력하세요." puts "한글 완성자 이외는 무시됩니다." print "입력: " hanch = gets.encode("utf-8") puts # 처리 시작 # 코드포인트 배열 ccp = hanch.codepoints for i in 0..ccp.length-1 # 한 글자씩 훑기 # '가'의 UTF-8 포인터가 U+AC00(44032)임. '힣'은 U+D7A3(55203). if ccp[i] >= 44032 && ccp[i] <= 55203 # 한글 완성자(가-힣)가 맞다면 cp_cho = (ccp[i] - 44032) / 588 cp_jung = ((ccp[i] - 44032) % 588) / 28 cp_jong = (ccp[i] - 44032) % 28 puts sprintf("%s = 초성 %s + 중성 %s + 종성 %s", hanch[i], choseong[cp_cho], jungseong[cp_jung], jongseong[cp_jong]) end end
아래는 이 코드를 실행한 스크린샷입니다.
게임 프로그래밍에는 예를 들면 자음퀴즈 등에 유용할 듯 싶은 코드입니다.
유용하게 활용하시기 바랍니다.