The Way
주어진 텍스트를 출력하는 아희 코드 만들기 본문
아희 코드로 텍스트를 출력하려면 해당 텍스트의 유니코드에 해당하는 숫자를 2~9를 이용해 만들어야 해서 상당히 번거롭다.
이 과정이 다소 귀찮았던지라, 특정 텍스트를 출력해주는 아희 코드를 만들어주는 코드다.
예를 들어서 '임'을 출력하려면 '임'에 해당하는 유니코드 번호를 알아야 한다.
이 번호는 51076인데, 2~9 사이의 숫자를 이용해서 만들려면 상당히 귀찮을 것이다.
decomposite 함수는 2~9와 덧셈, 곱셈을 이용해 해당 숫자를 만들어준다. 예외적으로 1은 나누기를 이용한다.
음수를 만드는 기능은 넣지 않았는데, 만들고 반받타따를 하면 -1을 곱해주어 만들 수 있다.
아까 나온 숫자인 51076을 만들면 이렇게 된다.
51076 = ((((((3*8)+7)*2*5)+9)*5*8)+9)*4
최대한 큰 수를 이용하도록 코드를 짜서, 최소한은 아니지만 적은 수의 숫자를 이용한다.
이제 각 문자별로 해당하는 유니코드 숫자를 스택에 추가 후 계산하는 아희 코드로 바꾸어주고, 종료 문자 (보통 희를 많이 쓰는 듯)를 추가해주면 완성된다.
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 기준) (6) | 2021.10.26 |
아희 코드를 더 다채롭게 만드는 코드 (5) | 2019.08.13 |
로또 확률 및 검증 (5) | 2019.05.06 |
2019 대구 국제마라톤 10km 참가자 평균 기록 (5) | 2019.04.07 |
Comments