The Way
주어진 텍스트를 출력하는 아희 코드 만들기 본문
아희 코드로 텍스트를 출력하려면 해당 텍스트의 유니코드에 해당하는 숫자를 2~9를 이용해 만들어야 해서 상당히 번거롭다.
이 과정이 다소 귀찮았던지라, 특정 텍스트를 출력해주는 아희 코드를 만들어주는 코드다.
예를 들어서 '임'을 출력하려면 '임'에 해당하는 유니코드 번호를 알아야 한다.
이 번호는 51076인데, 2~9 사이의 숫자를 이용해서 만들려면 상당히 귀찮을 것이다.
decomposite 함수는 2~9와 덧셈, 곱셈을 이용해 해당 숫자를 만들어준다. 예외적으로 1은 나누기를 이용한다.
음수를 만드는 기능은 넣지 않았는데, 만들고 반받타따를 하면 -1을 곱해주어 만들 수 있다.
아까 나온 숫자인 51076을 만들면 이렇게 된다.
51076 = ((((((3*8)+7)*2*5)+9)*5*8)+9)*4
최대한 큰 수를 이용하도록 코드를 짜서, 최소한은 아니지만 적은 수의 숫자를 이용한다.
이제 각 문자별로 해당하는 유니코드 숫자를 스택에 추가 후 계산하는 아희 코드로 바꾸어주고, 종료 문자 (보통 희를 많이 쓰는 듯)를 추가해주면 완성된다.
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 | def decomposite(n): if n = = 1 : return [ 2 , '나' , 2 ] if n < 10 : return [n] for i in range ( 9 , 1 , - 1 ): if n % i = = 0 : return decomposite(n / / i) + [ '따' , i] cand = - 1 maxdiv = - 1 for i in range ( 2 , 10 ): for j in range ( 2 , 10 ): if (n - i) % j = = 0 and j > maxdiv: maxdiv = j cand = i break return decomposite(n - cand) + [ '다' , cand] def each(n): name = [' ', ' ', ' 박 ', ' 받 ', ' 밤 ', ' 발 ', ' 밦 ', ' 밝 ', ' 밣 ', ' 밞'] arr = decomposite(n) string = '' for i in range ( len (arr) - 1 , - 1 , - 2 ): string + = name[arr[i]] for i in range ( 1 , len (arr), 2 ): string + = arr[i] string + = '맣' return string def aheui(string): ret = '' for i in string: ret + = each( ord (i)) return ret + '희' aheui( '''임나연''' ) |
이 코드로 출력 문제를 다 조져놨다.
랭작 개꿀 ㅋㅋ
이건 출력 문제는 아니고, 꽤 많은 사람이 푼 문제인데 아희로는 나만 풀었길래 캡처해놨다.
'잡정보' 카테고리의 다른 글
대한민국 가구 자산 현황 (1) | 2023.12.08 |
---|---|
VMWare side channel mitigation 성능 저하 (VMware Workstation 16 Player 기준) (7) | 2021.10.26 |
아희 코드를 더 다채롭게 만드는 코드 (5) | 2019.08.13 |
로또 확률 및 검증 (5) | 2019.05.06 |
2019 대구 국제마라톤 10km 참가자 평균 기록 (5) | 2019.04.07 |