아희

아희는 Puzzlet Chung이 만든 한글로 쓰는 난해한 프로그래밍 언어이다. 아희의 코드 공간 안에는 커서가 있어서 커서가 위치한 곳에 적혀 있는 명령을 수행하고, 또 그 명령에 따라 커서가 움직인다. 인터프리터가 아희를 실행하는 방법은 befunge와 비슷하다.

 문법 
한글은 홀소리와 닿소리로 나눌 수 있는데 아희 코드의 홀소리는 커서가 이동할 방향을 지정하고, 닿소리는 인터프리터가 수행할 명령을 지정한다. 받침이 있는 닿소리 글자는 명령을 보조하는 인자로 작용한다.
 닿소리 
ㅇ 묶음 받침은 모두 무시한다.
 ㅇ: 없음 명령으로 아무 일도 하지 않는다.
 ㅎ: 끝냄 명령으로 커서의 실행을 끝낸다. 이 때 현재 선택된 저장 공간에 값이 하나 이상 남아 있으면 ㅁ 명령으로 뽑아낼 수 있는 값을 뽑아내 운영체제에 돌려 준다. 저장 공간이 비어 있으면 0을 돌려준다.

ㄷ 묶음 셈. 받침은 모두 무시한다.
 ㄷ: 덧셈 명령으로 저장공간에서 두 값을 뽑아낸 다음 둘을 더한 값을 저장공간에 집어넣는다.
 ㄸ: 곱셈 명령으로 저장공간에서 두 값을 뽑아낸 다음 둘을 곱한 값을 저장공간에 집어넣는다.
 ㅌ: 뺄셈 명령으로 저장공간에서 두 값을 뽑아낸 다음 나중 값에서 먼저 값을 뺀 값을 저장공간에 집어넣는다.
 ㄴ: 나눗셈 명령으로 저장공간에서 두 값을 뽑아낸 다음 나중 값에서 먼저 값을 나눈 값을 저장공간에 집어넣는다.
 ㄹ: 나머지 명령으로 저장공간에서 두 값을 뽑아낸 다음 나중 값에서 먼저 값을 나눈 나머지를 저장공간에 집어넣는다.

ㅁ 묶음 저장공간
 ㅁ: 뽑기 명령이다. 지금 저장공간이 스택이라면 맨 위의 값, 큐라면 맨 앞의 값을 뽑아낸다. 통로라면 거기서 값을 하나 뽑아온다.
 ㅇ 받침이 오면 뽑아낸 값을 10진수로 출력합니다.
 ㅎ 받침이 오면 뽑아낸 값에 해당하는 코드포인트의 유니코드 문자를 UTF-8로 출력한다.
 다른 받침이 오면 뽑아낸 값을 버린다.
 ㅂ: 집어넣기 명령이다. 지금 저장공간이 스택이라면 맨 위에, 큐라면 맨 뒤에 값을 집어넣는다. 통로라면 값을 하나 보낸다.
 ㅇ 받침이 오면 표준 입력에서 정수 문자열을 받아 이에 해당하는 값을 지금 저장공간에 집어넣는다.
 ㅎ 받침이 오면 표준 입력에서 UTF-8로 유니코드 문자를 받아 이에 해당하는 유니코드 코드포인트를 지금 저장공간에 집어넣는다.
 ㅇ이나 ㅎ이 아닌 받침에 대해서는 각각 상수를 저장공간에 집어넣는다.

ㄱㄴㄷㄹㅁㅂㅅㅈㅊㅋㅌㅍ223544234344ㄲㄳㄵㄶㄺㄻㄼㄽㄾㄿㅀㅄㅆ4455799799864
 ㅃ: 중복 명령이다. 지금 저장공간이 스택이라면 맨 위의 값을 그 값 위에 하나 더 집어넣고, 큐라면 맨 앞의 값을 앞에 하나 더 덧붙인다.
 ㅍ: 바꿔치기 명령이다. 지금 저장공간이 스택이라면 맨 위 값과 그 바로 아래 값을, 큐라면 맨 앞의 값과 그 바로 뒤 값을 바꾼다.

ㅅ 묶음 제어와 저장공간 확장
 ㅅ: 선택 명령이다. 받침에 따라 저장공간을 선택하며, 저장공간은 다음과 같다.
 스택: 26개가 있다. 기본 저장공간인 받침 없는 저장공간과 ㄱ, ㄴ, ㄷ, ㄹ, ㅁ, ㅂ, ㅅ, ㅈ, ㅊ, ㅋ, ㅌ, ㅍ, ㄲ, ㄳ, ㄵ, ㄶ, ㄺ, ㄻ, ㄼ, ㄽ, ㄾ, ㄿ, ㅀ, ㅄ, ㅆ이 존재한다.
 큐: 1개가 있다. 받침은 ㅇ이다.
 통로: 1개가 있으며, 받침은 ㅎ이다. 정식으로는 미구현 상태이다.
 ㅆ: 이동 명령이다. 현재 저장공간에서 상위 1개를 뽑아 받침의 저장공간에 넣는다.
 ㅈ: 비교 명령이다. 저장공간에서 상위 2개를 뽑아 비교한다. 나중에 뽑아낸 값이 처음 뽑아낸 값보다 크거나 같으면 1, 작으면 0을 저장공간에 넣는다.
 ㅊ: 조건 명령이다. 저장공간에서 상위 1개를 뽑아 값이 0이 아니면 중성의 방향대로, 0이면 그 반대 방향으로 움직인다. 반대 방향으로 이동할 때 크기는 같다.

 홀소리 
 ㅏ, ㅓ, ㅗ, ㅜ: 커서를 각각 오른쪽, 왼쪽, 위, 아래로 한 칸 옮긴다.
 ㅑ, ㅕ, ㅛ, ㅠ: 커서를 각각 오른쪽, 왼쪽, 위, 아래로 두 칸 옮긴다.
 ㅡ : 커서가 가로로 왔으면 그 방향과 크기 그대로, 세로로 왔으면 전에 있던 자리로 옮기고 진행 방향을 뒤집는다.
 ㅣ: 커서가 세로로 왔으면 그 방향과 크기 그대로, 가로로 왔으면 전에 있던 자리로 옮기고 진행 방향을 뒤집는다.
 ㅢ: 커서를 전에 있던 자리로 옮기고 진행 방향도 뒤집는다.
 ㅐ ㅔ ㅒ ㅖ ㅘ ㅙ ㅚ ㅝ ㅞ ㅟ :기능 없음 (커서가 이동하는 방향과 크기는 변하지 않는다.)아희 스펙

 예제 
 Hello, world! 
밤밣따빠밣밟따뿌
빠맣파빨받밤뚜뭏
돋밬탕빠맣붏두붇
볻뫃박발뚷투뭏붖
뫃도뫃희멓뭏뭏붘
뫃봌토범더벌뿌뚜
뽑뽀멓멓더벓뻐뚠
뽀덩벐멓뻐덕더벅

 피보나치 수 
바싹반박나싼순
뿌멓떠벌번멍뻐
쌀삭쌀살다순옭
어어선썬설썩옭

 같이 보기 
 난해한 프로그래밍 언어
 비펀지

 각주 

 외부 링크 

 자바스크립트로 된 아희 처리기
 AheuiChem

분류:난해한 프로그래밍 언어