맛 텍스트
스택 기반 esolang Underload 는 기능적 프로그래밍과 관련이 있습니다. 그중 하나는 숫자 데이터 유형을 처리하는 것입니다. 람다 미적분과 같이 N 번 동작을 수행하는 함수로 자연수 N을 나타냅니다.
일을 간단하게하기 위해, 우리는 다음과 같은 언더로드 명령의 하위 집합 만 고려할 것입니다.
:-이 명령은 스택의 최상위 항목을 복제합니다.*-이 명령은 스택의 상위 2 개 항목을 단일 항목으로 연결합니다.
우리는 정의 저 부하 번호를 N (A)의 문자열로 :하고 *, 실행되는 스택의 상위 항목을 소비하고, 해당 항목이 함께 연결된 N의 복사본을 생성한다. 몇 가지 예 :
- 언더로드 숫자 0, -1, 1/2, π는 없습니다.
- 빈 문자열
은 스택을 건드리지 않기 때문에 Underload 숫자 1입니다. :*Underload 숫자 2는 맨 위 항목을 복제 한 다음 두 사본을 단일 항목으로 연결하기 때문입니다.(A):*=(A)(A)*=(AA).::**Underload 숫자 3 :(A)::**=(A)(A):**=(A)(AA)*=(AAA)입니다.:::***Underload 숫자 4입니다.:*:*또한 Underload 숫자 4 :(A):*:*=(AA):*=(AA)(AA)*=(AAAA)입니다.
일반적으로,이 경우 해당를 찾을 수 M및 N저 부하 숫자 M과 N은 다음 :N*숫자 N + 1이며, MN숫자 M × N이다.
도전
당신의 임무는 입력 으로 문자열에 대한 Underload 숫자 의 가장 짧은 표현 을 생성하는 가장 짧은 프로그램 (STDIN의 입력 입력) 또는 함수 (인수를 통한 입력 입력)를 작성하는 것 입니다. 즉, 입력이 양의 자연수 N> 1 인 경우 문자의 길이가 다른 모든 언더로드 숫자 N의 길이보다 작거나 같은 언더로드 숫자 N을 생성해야합니다.
샘플 입력 및 출력 : ( "Input- OUTPUT.")
- 1-
. - 2-
:*. - 5-
::*:**(2 × 2 + 1). - 7-
::*::***(2 × 3 + 1) 또는:::**:**(3 × 2 + 1). - 33-
::*:*:*:*:**(2 × 2 × 2 × 2 × 2 + 1). - 49-
::*:*:*:*::***(16x3 + 1, 길이 14)::*::***::*::***(7x7, 길이 16)는 아닙니다 .
입력이 양수가 아닌 경우 오류를 반환하거나 정의되지 않은 동작을 생성하거나 종료하지 못할 수도 있습니다. 답변을 찾는 제출 방법에 대한 설명을 부탁드립니다.
표준 허점 제한이 적용되지 않습니다 : 불필요한 입력을, 어떤 웹 요청, 출력 / 반환 값은 정확하게 대답하고 아닌 무한 랜덤 스트림 없어야합니다 :및 *등,