'christmas-tree' 레포에 아희 묻히기

'christmas-tree' 레포에 아희 묻히기

다양한 언어로 크리스마스 트리를 만들어보자


christmas-tree

카톡에서 Resten 개발자님이 보내주신 재밌는 레포를 보게 되었습니다.

이전에 작성했던 글에서 소개한 i-want-go-home과 같은 다양한 언어로 출력문, 코드를 작성하는 레포입니다.

레포 링크

Readme에 레포를 사용하는 방법이 잘 나와있습니다.

사용 방법 및 설명


작성할 언어를 정해보자

저는 우선 제가 좋아하는 언어인 아희를 사용하여 작성을 해보려고 했습니다.
하지만 이미 빠르게 아희로 PR을 넣으신 분이 계셨습니다.

아희!

하지만 가이드라인에서 알 수 있듯이

그리고, 이미 작성된 언어가 있어도, 자신만의 트리를 추가하는거니,
자신이 하고 싶은 언어명 으로 된 폴더에 다른 파일 명으로 자신의 크리스마스 트리를 추가할 수 있습니다.

이미 언어가 작성되어있어도 자신만의 트리 파일을 추가 할 수 있다고 합니다.

저는 그래서 아희 언어를 사용하여 PR을 넣어보려 했습니다.


fork 고고

우선 가이드라인대로 Fork를 한 뒤 새로운 branch를 하나 만들어줬습니다.

브랜치 목록

이제 코드를 작성한 후 해당 레포의 aheui 폴더에 아희 코드 파일을 추가한 후 PR을 넣으면 끝입니다.


아희 베이스 작성

이번에 해볼 것은 아희 코드로 크리스마스 트리 아스키 아트를 출력하는 코드 만든 다음,
진짜 트리 모양으로 코드를 변형해보려고 합니다.

먼저 검색을 통해서 크리스마스 트리 모양 아스키 아트 텍스트를 찾아봤습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
         _
|\ 0 /|
|/|\|
|
@
/+\
+//o/\\o
//+/@\\/+o
/\/o//+/\\\\
+///\//\o\o+\\o
o/+@/++/\\\@\\/\+
/\/+///o/@\o+/\+\\
o/+/\/@//||\/\\o\\\o _
/__ /| || /__ /|
| * | | (__)___ | * | |
|___|/_ /__ /||___|/
/_/| | * | |
|_|/ |___|/

이제 아희로 해당 아스키 아트를 출력하는 코드를 먼저 작성할 차례인데…
너무 깁니다.

아희 언어의 특성상 2~9의 숫자와 사칙연산 + 나머지연산으로 뽑아낸 값에 해당하는 코드포인트의 유니코드 문자를 UTF-8로 출력하기 때문에 긴 출력문을 만드려면 상당한 노력이 필요합니다.

하지만 이를 편하게하기 위해서 제가 만들어뒀던 툴이 있습니다.

플레이스토어에 배포해두었던 AheuiRo 앱 입니다.

저 아스키 텍스트를 AheuiRo앱에 돌려서 먼저 모양을 고려하지 않고 한 방향으로 작성된 아희 출력문을 얻어옵니다.

1
반밙따밣밗따빠맣빠맣빠맣빠맣빠맣빠맣빠맣빠맣빠맣맣밢밟따밣다밦다맣박발따맣밣밭따빠맣빠맣빠맣빠맣빠맣빠맣맣밖밠따밪다밤따맣밢밡따밫다밠다맣밣밗따맣받밪타망밣밮따맣발밟따반다맣밮밠따밬다밭따맣박발따맣밣밮따빠맣빠맣빠맣빠맣빠맣빠맣빠맣맣밗밝따받다밨따맣밙밡따반다맣밤밝따밪다밭따맣밞밟따밤다밝다맣밮밝따받다밫따맣반밙따맣밣밥따빠맣빠맣빠맣빠맣빠맣빠맣빠맣빠맣빠맣맣밮밝따받다밭따맣박밙따맣밣밨따빠맣빠맣빠맣빠맣빠맣빠맣빠맣빠맣빠맣맣밣밣따맣반발따맣밣밭따빠맣빠맣빠맣빠맣빠맣빠맣빠맣빠맣맣밚밡따박다맣밚밣따밪다맣밡밢따밖다밠다맣반밚따맣밣밭따빠맣빠맣빠맣빠맣빠맣빠맣빠맣맣밪발따밠따밦다맣밙밞따박다맣밣밣따맣밞밞따밭다밝다빠맣맣박발따맣밣밮따빠맣빠맣빠맣빠맣빠맣맣밚밣따밪다맣밚밞따박다빠맣맣밪밚따밠따밦다맣밚밢따박다맣밟밡따밮다밝다빠맣맣밬발따밝따밦다맣반밚따맣밣밫따빠맣빠맣빠맣빠맣빠맣맣밚밞따박다빠맣맣발밣따밬다맣밚밡따반다맣밣밣따맣밟밟따밫다밝다빠맣맣발밟따박다맣발밣따받다맣받발따밝따밦다맣반밚따맣밣밫따빠맣빠맣빠맣빠맣맣밙밞따반다맣밟밞따밮다밠다맣밙밢따박다맣밪발따밝따밦다맣발밡따박다빠맣맣발밣따받다맣발밞따반다맣밞밡따밗다밝다빠맣빠맣빠맣맣반발따맣밣밮따빠맣빠맣빠맣맣밙밣따밬다맣밙밡따박다빠맣빠맣맣밞밟따밨다밝다맣밚밡따반다빠맣맣밟밟따밨다밝다맣밪밚따밠따밦다맣밢밞따밤다밠다맣밪밙따밝따밦다맣밚밣따밬다맣밞밢따밥다밝다빠맣맣밪밚따밝따밦다맣박밚따맣밣밭따빠맣빠맣맣받발따밠따밦다맣밚밞따박다맣밙밣따받다맣밣밣따맣밙밡따박다맣밙밣따밪다빠맣맣밙밢따반다맣밟밞따밗다밠다빠맣빠맣맣밣밣따맣밢밟따밨다밠다빠맣맣발밞따박다맣밡밟따밭다밝다맣발밣따밬다맣박발따맣밣밮따빠맣맣밙밞따박다맣밡밞따밮다밝다맣밙밡따반다맣밙밣따밬다맣발밢따박다빠맣빠맣맣받밙따밝따밦다맣발밟따박다맣밣밣따맣밢밞따밮다밝다맣받밙따밠따밦다맣밙밣따받다맣발밟따반다맣밟밟따밨다밝다맣밚밣따밪다맣밢밟따밨다밝다빠맣맣박밚따맣밣밫따맣밪밙따밠따밦다맣밚밞따반다맣발밣따밬다맣밚밟따박다맣밟밟따밗다밠다맣밚밟따반다맣밣밣따맣밚밢따반다빠맣맣밥밝따받다밭따빠맣맣밡밟따밫다밝다맣밙밟따반다맣밞밟따밭다밠다빠맣맣밬밙따밠따밦다맣밢밟따밥다밠다빠맣빠맣맣밪발따밝따밦다맣밣밤따맣밞밟따밣다밦다맣박밙따맣밣밭따빠맣맣발밡따반다맣밡밡따밣다밦다빠맣맣밣밗따맣밚밢따반다맣밗밝따밪다밖따맣밣밥따빠맣맣밭밝따밪다밖따빠맣맣밣밗따빠맣빠맣빠맣빠맣빠맣맣밙밟따반다맣밟밞따밣다밦다빠맣맣밣밗따맣밚밟따박다맣밥밝따밬다밮따맣박밙따맣밣밭따맣밖밠따받다밮따맣밣밭따맣밦밠따맣밣밗따맣밖밝따밪다밥따맣밣밥따맣밮밠따받다밗따맣밣밗따맣밣밚따맣밡밞따밣다밦다빠맣맣발밝따밦다맣밢밟따밣다밦다빠맣빠맣맣밣밨따맣밤밝따밪다밭따맣밣밫따맣밦밝따맣밣밥따맣밮밠따밬다밗따맣밣밮따맣밮밝따밪다밭따맣박밚따맣밣밫따맣밗밝따밬다밨따맣밞밟따밣다밦다빠맣빠맣맣밗밝따밪다밥따맣밙밢따박다맣밟밟따밣다밦다맣밣밨따빠맣빠맣맣발밞따박다맣밡밢따밣다밦다빠맣맣밣밫따맣밙밡따박다맣밫밠따밬다밨따빠맣맣밞밟따밣다밦다빠맣빠맣맣밨밝따밬다밤따맣밙밞따반다맣반발따맣밣밤따빠맣빠맣빠맣빠맣맣밚밢따박다맣밟밟따밣다밦다맣발밟따반다맣밫밝따밬다밨따맣밣밭따맣밖밠따밪다밭따맣밣밭따맣밦밠따맣밣밭따맣밥밝따밬다밗따맣밣밨따맣밭밝따밪다밖따맣박밙따맣밣밥따빠맣빠맣빠맣맣밖밝따밪다밥따맣밞밞따밣다밦다맣밗밠따밬다밫따맣밚밢따반다맣밣밤따빠맣맣밫밠따밪다밫따맣밢밞따밣다밦다빠맣빠맣맣밭밝따밪다밥따맣밚밟따반다맣마희

마지막에서 두번째의 는 스택을 비우기위한 코드인데 필요없으니 버립시다.
(아직 앱 업데이트를 못했습니다 ㅈㅅ…)

그 다음 크리스마스 트리 모양을 만들 차례인데 디자인 센스가 없어서

그냥 좀 길다란 삼각형 아래에 사각형을 달아보려고합니다.

먼저 메모장을 이용해서 엔터를 넣어주는 작업을 했습니다.


코드 변형

메모장 갓툴

먼저 이런식으로 삼각형을 생각하면서 엔터를 넣어줍니다.

그 다음 띄어쓰기를 밑에부터 1개씩 늘려주며 넣으면 되는데
엔터를 넣을때와 마찬가지로 너무 넙적해지지 않게 두줄씩 같은 개수의 띄어쓰기를 넣어주었습니다.

밑에 남겨둔 줄은 트리의 밑동인 사각형을 만들기 위한 줄 입니다.

띄어쓰기 넣어주기

이번엔 코드양이 좀 길고 변형을 많이 해야하니 Avis라는 툴을 사용해보겠습니다.

유명한 아희 인터프리터 3종중에 편의 기능을 제일 많이 지원하는 툴 입니다.

그 다음 코드 시작을 위해서 를 첫칸에 삽입해줍니다.

아아아아아

Avis에는 종성이 ㅏㅏㅏㅏㅏㅏ 로 된 코드를 ㅓㅓㅓㅓㅓㅓ 로 바꿔주는 식의 좌우반전, 다시 그리기 등의 기능이 있는데요.

이 기능을 활용하여 적당히 수정해준 후, 띄어쓰기를 모두

1
 

로 바꿔서 간격을 일정하게 만들어줍니다.
그럼 완성됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
아                         분                          희
                         땨벉붏
                         뿌떠벇
                        뺘멓맣빠뭏
                        뿌멓뻐멓뻐
                       뺘멓맣빠맣빠뭏
                       붒더벓떠벏벒멓
                      먛더박발따맣밣밭뚜
                      뿌멓뻐멓뻐멓뻐멓뻐
                     뺘멓맣맣밖밠따밪다밤뚜
                     붃벓멓더벐더벛떠벑벒멓
                    먛떠받밪타망밣밮따맣발밟뚜
                    불벅멓떠벝더벜떠벐벞멓더번
                   먛떠밣밮따빠맣빠맣빠맣빠맣빠뭏
                   붍벉멓떠벘더벋떠벍벇멓멓뻐멓뻐
                  뱐떠다맣밤밝따밪다밭따맣밞밟따밤두
                  붑벓멓떠벉번멓떠벛더벋떠벍벞멓더벍
                 뺘떠맣빠맣빠맣빠맣빠맣빠맣빠맣빠맣빠뭏
                 뿌멓뻐떠벘벓멓떠벉벅멓떠벝더벋떠벍벞멓
                뺘멓맣빠맣빠맣빠맣빠맣빠맣빠맣맣밣밣따맣분
                뿌멓뻐멓뻐멓뻐멓뻐멓뻐멓뻐멓뻐떠벝벓멓떠벌
               먛멓밚밡따박다맣밚밣따밪다맣밡밢따밖다밠다맣분
               불벚멓멓뻐멓뻐멓뻐멓뻐멓뻐멓뻐멓뻐떠벝벓멓떠벊
              뱘떠따밦다맣밙밞따박다맣밣밣따맣밞밞따밭다밝다빠뭏
              뭏더벚떠벓벊멓멓뻐멓뻐멓뻐멓뻐멓뻐떠벞벓멓떠벌벅멓
             뱖벊따박다빠맣맣밪밚따밠따밦다맣밚밢따박다맣밟밡따밮두
             뿌멓뻐멓뻐멓뻐떠벛벓멓떠벊번멓더벖떠벍떠벌벜멓멓뻐더벍
            뺘멓맣맣밚밞따박다빠맣맣발밣따밬다맣밚밡따반다맣밣밣따맣붋
            뭏더벖떠벍떠벌벋멓더벋떠벓벌멓더벅떠벏벌멓멓뻐더벍더벛떠벏
           뱒번따맣밣밫따빠맣빠맣빠맣빠맣맣밙밞따반다맣밟밞따밮다밠다맣붅
           분떠벎벌멓더벋떠벓벌멓멓뻐더벅떠벑벌멓더벖떠벍떠벌벚멓더벅떠벒
          먛더밞밡따밗다밝다빠맣빠맣빠맣맣반발따맣밣밮따빠맣빠맣빠맣맣밙밣뚜
          붔떠벏벏멓멓뻐더번떠벑벊멓더벍더벘떠벏벎멓멓뻐멓뻐더벅떠벑벉멓더벜
         뱕더다맣밪밚따밠따밦다맣밢밞따밤다밠다맣밪밙따밝따밦다맣밚밣따밬다맣붊
         붒떠벐떠벌벋멓멓뻐멓뻐떠벝벓멓떠벊벅멓더벖떠벍떠벊벚멓멓뻐더벍더법떠벒
        먛더밚밞따박다맣밙밣따받다맣밣밣따맣밙밡따박다맣밙밣따밪다빠맣맣밙밢따반두
        붙떠벏벑멓더벅떠벎벌멓멓뻐더벐더벘떠벏벒멓떠벓벓멓멓뻐멓뻐더벐더벇떠벎벏멓
       뱕더다맣발밣따밬다맣박발따맣밣밮따빠맣맣밙밞따박다맣밡밞따밮다밝다맣밙밡따반두
       붚떠벎벒멓떠벓벓멓더벅떠벏벌멓더벖떠벍떠벉벋멓멓뻐멓뻐더벅떠벒벌멓더벜떠벓벉멓
      뱕더다맣받밙따밠따밦다맣밙밣따받다맣발밟따반다맣밟밟따밨다밝다맣밚밣따밪다맣밢밟뚜
      뭏더벅떠벏벊멓더벜떠벓벌멓더번떠벎벊멓더벖떠벐떠벉벚멓떠벛벓멓떠벊벅멓멓뻐더벍더벘
     뱗벏따밗다밠다맣밚밟따반다맣밣밣따맣밚밢따반다빠맣맣밥밝따받다밭따빠맣맣밡밟따밫다밝두
     붒떠벍떠벌벚멓멓뻐멓뻐더벐더법떠벏벒멓더벖떠벐떠벉벜멓멓뻐더벐더벝떠벏벎멓더번떠벏벉멓
    먛더밣밤따맣밞밟따밣다밦다맣박밙따맣밣밭따빠맣맣발밡따반다맣밡밡따밣다밦다빠맣맣밣밗따맣붆
    붋벉멓멓뻐멓뻐멓뻐멓뻐멓뻐떠벇벓멓멓뻐떠벆더벚떠벍벝멓멓뻐떠법벓멓떠벆더벚떠벍벇멓더번떠벒
   뱐떠다맣밟밞따밣다밦다빠맣맣밣밗따맣밚밟따박다맣밥밝따밬다밮따맣박밙따맣밣밭따맣밖밠따받다밮뚜
   붒더벓떠벎벑멓떠벊벓멓떠벇벓멓떠벇더벋떠벐벞멓떠법벓멓떠법더벚떠벍벆멓떠벇벓멓떠벐벖멓떠벝벓멓
  뺘더맣맣발밝따밦다맣밢밟따밣다밦다빠맣빠맣맣밣밨따맣밤밝따밪다밭따맣밣밫따맣밦밝따맣밣밥따맣밮밠뚜
  붖떠벍벇멓멓뻐멓뻐더벖더벓떠벏벎멓떠벘더벜떠벍벇멓떠벛벓멓떠벊벅멓떠벝더벚떠벍벞멓떠벞벓멓떠벇더벜
 뱝더따맣밙밢따박다맣밟밟따밣다밦다맣밣밨따빠맣빠맣맣발밞따박다맣밡밢따밣다밦다빠맣맣밣밫따맣밙밡따박두
 뿌멓뻐멓뻐멓뻐떠범벓멓떠벌번멓더번떠벎벉멓떠범더벜떠벍벘멓멓뻐멓뻐더벖더벓떠벏벎멓멓뻐떠벘더벜떠벐벛멓
먛멓밚밢따박다맣밟밟따밣다밦다맣발밟따뱐뚜댜볕먛볋뱣몋뱕뗘땨볈뱤볎댜몋뱠뗘땨볕먛볋뱛몋뱥뗘땨볕먛뎌뱎볒밠뗘
                    맣밥밝따밬다밗따맣밣밨따뭏
                    붏멓떠벉벅멓떠벆더벚떠벍벝
                    밥따빠맣빠맣빠맣맣밖밝따붖
                    붃멓더벖더벓떠벎벎멓떠법더
                    밠따밬다밫따맣밚밢따반다뭏
                    뚜벛더벚떠벐벛멓멓뻐떠범벓
                    맣밢밞따밣다밦다빠맣빠맣뭏
                    두번떠벏벊멓떠법더벚떠벍벝
                    맣희키네틱제작크리스마스🎄

ㄹ자로 휘어지게 작성해보았습니다.


소감

저번 PR보다는 나아졌으나…. 이번엔 코드를 한글자 잘못 작성한걸 발견하여 뒤늦게 재PR을 넣었습니다.

복잡한 코드 변형은 Avis가 더 좋은것 같고, 실행 경로 확인은 AheuiChem가 더 유리한 것 같습니다.

다들 크리스마스 전에 자기가 좋아하는 언어로 PR을 해보면 좋을 것 같습니다!

  • 틈틈히 쉬운 아희 강좌글 작성을 하고 있습니다 크리스마스 전에 완성되면 좋겠네요

글에 사용을 허락해주신 Resten님 감사합니다 🙌

댓글