저번에 올린 루비로 만든 두벌식 오토마타를 c 로 구현하기로 했음.
https://gall.dcinside.com/mgallery/board/view/?id=github&no=7684&page=1
저 코드를 c 로 쓰려면 hash 자료구조가 필요한데, hash 자료구조를 성능 좋게 만들기가 번거로움. 그래서 매우 단순한 방법으로 작업
const uint16_t dubeolsik[] = { /* A(0x41)..Z(0x5a) */ 0, 0, 0, 0, 0x3138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x3152, 0x3156, 0x3143, 0x3132, 0, 0x3146, 0, 0, 0x3149, 0, 0, 0, /* a(0x61)..z(0x7a) */ 0x3141, 0x3160, 0x314a, 0x3147, 0x3137, 0x3139, 0x314e, 0x3157, 0x3151, 0x3153, 0x314f, 0x3163, 0x3161, 0x315c, 0x3150, 0x3154, 0x3142, 0x3131, 0x3134, 0x3145, 0x3155, 0x314d, 0x3148, 0x314c, 0x315b, 0x314b };이렇게 함. 어떻게 접근하냐... keyval 범위를 체크해서 0x41..0x5a 범위이면 dubeolsik['E' - 0x41] 이렇게 하면 0x3138 (ㄸ) 값을 얻을 수 있음.
키보드 자판 보면 E 가 ㄸ 가 됨. ㄸ 는 유니코드가 3138 이고 0x3138 이라는 ucs2 라는 표현법으로 하나의 uint16_t 숫자로 표현하면 나중에 한글 조합 작업하기 좋음
댓글 0