Code Monkey home page Code Monkey logo

hwalja's Introduction

금속 활자는 한민족이 오래 전부터 사용하던 과학 기술로, 한민족의 문화 전파에 강한 영향을 주었습니다. 특히나 활자는 복잡하고 어려운 글도, 단순한 활자의 조합으로 고속, 대량 인쇄를 할 수 있었다는 점에서 매우 뛰어난 기술이었습니다. 새로운 글을 인쇄하고 보급하고 싶다면 단순하게 활자를 가져다가 조합하고 찍어내기만 하면 되었습니다.

세종대왕의 제자 원리를 본따 만든 천지인 자판은 사용하기 매우 쉽습니다. 하지만 사용하기 쉬운 만큼 제작하기에는 무척이나 어렵습니다. 특히나 자모음의 조합과 문자의 조합을 유니코드 상의 어떤 문자로 치환하거나 생성할지 계산하는 과정은 매우 어렵고 복잡합니다. 보기에는 단순해보일지 몰라도 실제로 제작하려고 하면 상당히 골치 아픕니다. 유한 상태 기계를 이용한 구현체들도 배포되어 있지만, 이를 따라 만들기에는 시간과 노력이 수많이 소요됩니다. 이는 분명 문자를 통한 융성한 문화를 열망하셨던 세종의 뜻은 아닐 것입니다.

이에 저는 천지인의 활자를 제작하여 배포합니다. 만약 새로운 천지인 자판을 만들고 싶으시다면, 조상님들이 활자를 이용해 새로운 글을 인쇄, 배포한 것과 같이, 이 활자를 이용하시고 찍어내기만 하시면 됩니다.

활자는 세상에서 가장 쉽고 단순한 천지인 구현체입니다. 활자는 천지인의 모든 입력 경우의 수를 하드코딩해놓은 5만줄짜리 맵이기 때문입니다. 예를 들어 사용자가 ㄱㅋ 글쇠를 눌렀다면 ㄱㅋ.json에 들어가 ㄱㅋ[이전_상태]를 확인하면 그 결과값이 다음 상태입니다. 이제 여러분들은 천지인의 글자 조합 논리를 하나 하나 생각할 필요 없이 그냥 이 파일을 가져다가 사용하시면 됩니다.

감사합니다.

const type = (이전: string, 활자: hwalja, : string, 수정중: boolean) => {
  const 마지막한글자 = 이전.slice(-1)
  const 마지막두글자 = 이전.slice(-2)
  if (수정중 && 마지막두글자 in 활자[]) return 이전.slice(0, -2) + 활자[][마지막두글자]
  if (수정중 && 마지막한글자 in 활자[]) return 이전.slice(0, -1) + 활자[][마지막한글자]
  return 이전 + 활자[]['']
}

천지인 구현 끝!

사용 인허가

MIT 사용 인허가로 배포합니다.

사용하는 서비스

이메일 혹은 PR을 주신다면 서비스에 추가해드리겠습니다.

hwalja's People

Contributors

anaclumos avatar

Stargazers

LEE Jaeyoung avatar Iso Lee avatar  avatar Juhwa Lee avatar Jungsu Jin avatar SOGOAGAIN⚡️ avatar Roman avatar Serina Hanasaki avatar  avatar 전기범 avatar jinho park avatar Simon Park (박성범) avatar Sung Jeon avatar NeuroWhAI avatar Jaeyeon Kim avatar Chanho Lee avatar paikwiki avatar Youngkyoung Lee avatar JaeSeoKim (Jackie) avatar Injoon Oh avatar Jongyoon Jeong avatar Ryu Gwang avatar Hyunbin avatar Roeniss Moon avatar  avatar Hoyoung Yi avatar Minsoo avatar PresentKim(김현재) avatar Sigrid Jin (ง'̀-'́)ง oO avatar SeongMin Park avatar Junho Yeo avatar iringrad avatar Omar Ibrahim avatar Sayan Maity avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.