아희

코드

Hello, world!

(2005-09?) "Hello, world!"를 출력합니다. (이 프로그램은 아희 공식 명세에도 포함되어 있기 때문에 꽤 많이 인용되었습니다.) 코드의 진행방향은 회오리 모양으로, 맨 가운데의 에서 종료됩니다.

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

로고 생성기

(2005-08-04) 아희 "로고"를 PPM 이미지 파일 포맷으로 출력합니다. ("로고"라 함은 옛날 아희 홈페이지에 걸려 있던 시력 검사 패러디 이미지를 의미합니다.) 현재까지 만들어진 아희 프로그램 중 가장 큽니다.

이 프로그램은 내부적으로 전체 도형을 트리 구조로 표현한 뒤, 이미지 상의 모든 픽셀에 대해서 특정 픽셀이 도형에 속하는지 아닌지를 계산합니다. 모든 도형은 원 및 반평면들이 결합, 교차 및 반전 연산을 통해 결합되어 이루어지는데, 이를테면 낱자 ㅇ은 안쪽 원의 반전과 바깥 원을 교차시켜 표현됩니다. 결합 및 교차 연산의 결과는 항상 0이나 1이 나오도록 조정되며 따라서 이 결과를 곧바로 픽셀 값으로 변환할 수 있게 됩니다. 조금만 더 코딩하면 크게 렌더링한 뒤 축소하여 앤티앨리어싱을 할 수 있겠지만, 실행이 굉장히 오래 걸리는 코드기 때문에 따로 짜진 않았습니다.

발박따밣따맣박박나망밣밤따빠맣밞밦따빠따발나다망밣밤따맣발박따밞따밞따망삭바산부
푸저떠뻐떠벌벎뻐더떠뻐터떠벌떠벋더벌벖서써뻐선떠뻐터떠벍떠벋벌서써뻐석멓떠범벓서
발받따발따빠따파자따삭빠싸사발박따발따밞따타빠따산빠싸사붒아따밞따밞따탸희차반초
숙떠저퍼떠뻐떠벌떠벋벌퍼저떠뻐떠벌벎뻐더떠뻐터떠벌떠벋더벌희복벌뻐터번더벋선버머
빠싸사빠밦발따밝따자파밦발따밣따파자따산빠싸사빠발박따밦따자파밦발따밞따파자뚜툐
푸떠벎떠범벌퍼저떠벖떠뻐벌뻐서써뻐선떠저퍼떠벎떠벌벖퍼저떠벓떠벌벖뻐서써뻐석떠또
자따따삭빠싸사빠발받따발따발따자파발받따발따밝따파자따산빠싸사빠발박따밦따자푸볼
수써뻐선떠저퍼떠벌떠벋더벍떠범벖퍼저떠벌더벖떠뻐벎뻐서써뻐석떠떠저퍼떠벎떠벅벌또
빠밦발따자파발박따밦따파자따따삭빠싸사빠밞밝따밦다발따자파밝밤따밞다받따발따푸볻
뚜벌떠벋더벎떠범벍뻐서써뻐석떠떠저퍼떠벖떠벌떠벅벌퍼저떠벎떠벌벖뻐서써뻐선떠저도
자파밝밦다발따밞따파자따산빠싸사빠발박따밦따자파밦발다발따밦따파자따따삭빠싸수볾
붏떠벍떠뻐벌퍼저터벖떠벓떠뻐벓뻐더떠뻐터떠벍더벍떠벖벎서써뻐선떠뻐터떠벍떠벋벌또
따파자따삭빠싸사빠밦발다밣따밞다자파밝박따밣따파자따산빠싸사빠밣발따밞따자파불봄
붇벌뻐서써뻐선떠저퍼더벍떠벎떠벋벌퍼저더범떠벍벎뻐서써뻐석떠떠저퍼떠벌떠벌떠벋봃
따발따발따자파밝밦다발따밦따파자따따삭빠싸사빠발빠따밦따밝다자파밝발따밣다밤뚜뽀
붐더벓떠벌벍뻐서써뻐석떠떠저퍼떠벓떠벖떠벅벌퍼저떠벌떠벌떠벋벌뻐서써뻐선떠저퍼토
따자파발밤따밞따밝다파자따산빠싸사빠발박따밦따밝따자파밞빠따밦다발따파자따따숙본
불더벓벎퍼저떠벓떠벖떠벅벌뻐서써뻐선떠저퍼떠벓떠벅벍퍼저더벎떠벓더벌벖뻐서써뻐도
따밦따파자따따삭빠싸사빠밦발다밣따밞다자파밝발따밣다밤따파자따산빠싸사빠밞밣두볻
푸떠벓떠범더벌벖퍼저더벍떠벎떠벌벖뻐서써뻐석떠떠저퍼떠벍떠벌떠벋벌퍼저떠벖떠벌속
자따산빠싸사빠발받따발따발따자파밝밦다발따밦따파자따산빠싸사빠밦밤따밝다받따불몽
뚜벎떠벖벎뻐서써뻐선터저터벖떠벍떠뻐벍서써뻐석터벗벚떠저퍼떠벎떠벖떠벅벌퍼저떠조
발타자파밞밦따밞따밣다파자따따밪밧타밣빠따밞다밤따삭빠싸사자타산빠싸사빠밣빠뚜토
주터벖떠벍떠뻐벍뻐서써뻐석떠더떠저퍼버더떠떠저퍼떠범더벖떠벌떠뻐벌퍼저떠벍더벎봇
파밦발다밤따밣따파자따산빠싸사빠밝밦다발따밦따자파발박따밦따밝따파자따따삭빠쑤봊
불떠벅벌퍼저떠벌더벖떠뻐벎뻐서써뻐선떠저퍼더벍떠벎떠벌벓퍼저더벖떠뻐떠뻐범뻐서도
따밞따파자따따삭빠싸사빠밣밝따밣따밞다자파밞밣따밤다밝따파자따산빠싸사빠발받뚜도
붒벓뻐서써뻐선터저더벌떠벓떠뻐벓서써뻐석터벗벚떠저퍼떠벎떠벌떠벅벌퍼저떠벌떠벌도
따밣따밝다자파발밤따빠따밤다파자따따밪밧타밞밦따발다밣따삭빠싸사자타산빠싸사뿌도
붏떠벎떠벖벎뻐서써뻐석떠떠저퍼버더떠떠저퍼떠벍더벓떠벖벎퍼저더벎더벍떠벎떠벌벎도
타밞다자파밣밝따밞따박타파자따산빠싸사빠밦밤따밝다받따발따자파발박따밦따밣따푸도
뚜벖떠벅벌뻐서써뻐선떠저퍼더벓떠벍떠벍더벌벖퍼저터벖떠벓떠벍벓뻐서써뻐석떠떠저도
밣따자파밦발다발따밞따파자따따산빠싸사받따밣나삭빠싸사다빠밝밤따밞따자파밤빠뚜도
주퍼떠범더벎떠뻐벓퍼저떠벖더벍떠벌벓뻐더서써뻐석너벓떠벋서써뻐선떠저퍼더벖떠뻐도
따산빠싸사받따밣나삭빠싸사타빠발받따밞따밝다자파발박따밞다밣따파자따산빠싸사붇도
뚜범벖뻐서써뻐선더더더떠저퍼떠벍떠벅더벖벍퍼저떠범더벓떠벌벍뻐터서써뻐석너벓떠도
빠따밤다자파발빠따빠따발타파자따따삭빠싸사빠발밤따자파발박따밞따파자따삭빠싸수도
푸떠벓떠벓떠벅벌퍼저떠벎떠벍떠벅벌뻐서써뻐선더떠저퍼떠벍떠벌벖퍼저떠벍떠범벌뻐도
자따따삭빠싸사빠발빠따밦따자파발밤따밣따파자따산빠싸사빠밦밤따빠따밤다자파밞붒도
숙떠더떠저퍼떠벅떠벌더범떠벍벎퍼저더벅떠벎떠벓벎뻐서써뻐선떠저퍼떠벌떠벅더벍떠도
빠싸사빠발빠따밦따자파발빠따밣따파자따산빠싸사빠밞밦따밝다박따발따자파발빠따뿌도
뿌서써뻐석떠더떠저퍼떠벓떠벌더벓벎퍼저떠벅떠벌더범떠벍벎뻐서써뻐선떠저퍼터벌떠도
밝밦다밤따발따자파밦발따밞따파자따산빠싸사빠밞밦따발다박따발따자파발빠따빠따불도
뚜뻐떠뻐벌뻐서써뻐선떠저퍼떠벖떠벌떠벅벌퍼저떠벌떠범더벖벍뻐서써뻐석떠떠저퍼터도
발타자파발박따밝따밞따파자따따삭빠싸사빠밞밦따밣다발따자파밣발따밣따파자따삭뿌도
뚜벌벓퍼저너벌떠뻐떠벖벓뻐서써뻐석떠저퍼떠벎떠벌떠벅벌퍼저떠벓떠벌더벌벖뻐서써도
밝다박따발따파자따삭빠싸사빠밦밤따빠따밤다자파밞밦따발다박따발따파자따다다다순도
뚜벌벍퍼저떠벎떠벌벖뻐서써뻐석떠떠저퍼더벅떠벎떠벓벎퍼저더범떠뻐떠범벖뻐서써뻐도
밣따파자따삭빠싸사빠발박따밦따밞따자파밦발다박따발따발따파자따다산빠싸사빠밞붏도
주퍼떠벓떠벌벓퍼저떠벎떠벌벖뻐서써뻐석떠떠저퍼떠벅떠벌더범떠벍벎퍼저더벅떠벎떠도
따삭빠싸사빠발박따밦따밞따자파밞밦따발다박따발따파자따다산빠싸사빠밞밝따밤다불도
숙떠저퍼떠벖떠벌더벌벖퍼저떠벓떠벌벓뻐서써뻐석떠떠저퍼떠벓떠벌더벓벎퍼저떠벅떠도
빠싸사빠발박따발따밞따자파밣밦따빠따발나파자따삭빠싸사빠밞밦따발다박따발따자푸도
뚜떠저퍼터벌떠뻐떠뻐벌퍼저떠벌떠벅더벍떠벖벎뻐서써뻐선더더떠저퍼떠벓떠벌떠벋벌도
삭빠싸사빠발밤따빠따자파밞발따밞따발다파자따삭빠싸사빠발박따밦따밞따자파밦발두도
수써뻐석떠떠저퍼더범떠뻐떠범벖퍼저더벋떠벎떠벍벎뻐서써뻐선더떠저퍼떠벌떠벌떠벅도
빠밞밣따밤다발따자파밞빠따발다발따파자따삭빠싸사빠밝밦다발따밣따자파밞밝따밞뚜도
불벎서써뻐석떠떠저퍼떠벌떠벅더벌떠벖벎퍼저더범떠뻐떠범벖뻐서써뻐선더떠저퍼더벋도
따밞따타빠따산빠싸사밣밤따밞다받따발따타빠따다빠발받따빠따자파발빠따빠따파자뚜도
뚜뻐떠벋벌뻐더떠뻐터떠벌떠벋더벎떠범벓서써뻐선떠뻐터떠벌더벎떠뻐떠벅벌서써뻐석도
자파발빠따빠따파자따삭빠싸사빠밝밤따밞다자파밞밦따밣다파자따산빠싸사빠밣밤따뿌도
붒떠벌떠뻐벌퍼저떠벌더벎떠벍떠범벌뻐서써뻐선떠저퍼떠벍떠벍떠벋벌퍼저떠벌너벍떠도
따파자따다따삭빠싸사빠밝밦따자파밣발따밝다파자따삭빠싸사빠밝밦다밤따자파밣밦뚜도
붏뻐서써뻐석떠떠저퍼떠벌더벎떠벍떠범벌퍼저떠벍떠벍떠벋벌뻐서써뻐선더떠저퍼더벎도
밤따자파밞밝따밤다파자따삭빠싸사빠밝밦다밞따자파발박따밞다밣따파자따삭빠싸사뿌도
북벌퍼저떠벌더벍떠뻐떠벋범뻐서써뻐선더더떠저퍼떠벋더벍떠벓벎퍼저더벖떠뻐떠벅벍도
따밞다밣따발따파자따따삭빠싸사빠밞밦따밝다박따자파밝받따밝따파자따산빠싸사빠붊도
뿌서써뻐선터저더벍떠벎떠벋벌서써뻐석터벗벚떠저퍼떠벖떠벌떠뻐벌퍼저터범떠뻐떠벋도
밞받따빠따박다자파밞받따빠따발다파자따따밪밧타밞밣다밝따밣다삭빠싸사자타산빠쑤도
불벖뻐서써뻐석떠떠저퍼버더떠떠저퍼떠벓떠벋더벍떠범벖퍼저떠벋터벎떠뻐떠뻐범뻐서도
다박따밦따자파밤빠따밣따밞다파자따산빠싸사빠발빠따발따밦따자파밤받따빠따밝다불도
뚜뻐떠범벓뻐서써뻐선떠저퍼떠벓더벎떠범벌퍼저떠벎더벎떠벅벍뻐서써뻐석떠떠저퍼떠도
밝나발따자파발받따밝따밝따파자따따삭빠싸사빠밝밤따밣따받다자파발밤따밞다밣따푸도
뚜벍더벎떠범벓뻐서써뻐석떠떠저퍼떠벖떠벌떠뻐벌퍼저떠벍떠벍떠벋벌뻐서써뻐선떠저도
자파밝발따밞따밣타파자따산빠싸사빠밣밤따빠따밝나발따자파밤받따빠따밝다발따파주도
붏더벅떠뻐떠벋벎퍼저더벍떠뻐떠벋벎뻐서써뻐선터저더벓떠벍떠벖벍서써뻐석터벗벚떠또
다파자따따밪밧타밣빠따밞다밤따삭빠싸사자타산빠싸사빠밝밦따밞따발타박따자파밝북또
푸더벅떠벎떠벌벍퍼저떠벓떠벋더벖벍뻐서써뻐석떠떠저퍼버더떠떠저퍼떠벍더벎떠벍떠조
자따삭빠싸사빠밣발따밦다밝따자파밣발따밣따밝다파자따삭빠싸사빠발밤따빠따밝다주포
수써뻐석떠저퍼떠벍더벓떠벍벎퍼저더벖떠벎떠벖벎뻐서써뻐석떠저퍼더벍떠벎떠벌벎퍼토
빠밦밤따빠따밣타밞다자파밦밤따빠따밦다파자따다다다다산빠싸사빠밞받따빠따밤타주볾
숙떠저퍼떠벍더벖떠벌벓퍼저더벅떠벎떠벌벍뻐서써뻐석떠떠저퍼떠벌떠벓더벎떠벅벌퍼또
빠싸사빠밞밦따밞따밣타밞다자파밞밦따밞따밦다파자따삭빠싸사빠밞밝따밞따발다자푸뽀
주퍼떠벌더벎떠벍떠범벌퍼저너벍떠뻐떠벓벎뻐서써뻐선더더떠저퍼더벎터벓떠뻐떠범벖또
따따삭빠싸사빠밣밦따밣따밝타자파밞밝따밤다밦따파자따산빠싸사빠밣밤따빠따밝나불봄
뿌선떠저퍼떠벎떠범더벌벖퍼저터벎떠벓떠뻐벍뻐서써뻐석떠저퍼떠벖떠벌떠뻐벌퍼저떠볽
싸사빠밞받따빠따밝다자파밦밤따밝다받따밣따파자따따바파자따따삭빠싸사발밤따빠뚜포
쑤뻐석떠저퍼떠벖떠벅더벖벍퍼저떠뻐벍뻐더떠뻐터떠범더범떠벎떠벋벍서써뻐선떠뻐터조
사밝밦다밤따밞따밝다타빠따산빠싸사밞발따밣다박따밝따타빠따다빠밝빠따자파밝밦두또
뚜벅벌뻐서써뻐선떠저퍼떠벎더벓떠벌벎퍼저떠벓더벌떠벖벎뻐서써뻐석떠저퍼떠벖떠벅볽
밞다밣따발따자파밦발다박따발따밝따파자따따삭빠싸사발박따밝따밣따타빠따산빠싸수또
이천오년팔월사일뿌석떠저퍼떠벖떠벅더벖벍퍼저떠뻐벍뻐더떠뻐터떠벍떠벅더벓떠벌벎볼
토끼군작업실제작싸사빠밞밦따발다밣따자파밞밝따밣다밝따파자따산빠싸사빠밦발다박또

구현 및 유틸리티

제가 만든 기본적인 아희 구현체는 파이썬으로 만든 esotope-aheui입니다. 그 외에도 저는 몇 가지 아희 유틸리티를 만들었습니다.

아희 보이개

이 프로그램은 아희 코드를 주면 이 코드의 흐름을 이미지로 출력해 냅니다. (TODO)

number2aheui

이 프로그램은 숫자나 문자열을 주었을 때 그 값을 만들어 내는 짧은 아희 코드를 생성해 냅니다. 큰 수(특히 한글의 유니코드 표현)를 출력할 일이 많은 아희의 특성상 필수적인 프로그램입니다. (TODO)


(rev 1d46270eb038)