맛 텍스트
스택 기반 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)는 아닙니다 .
입력이 양수가 아닌 경우 오류를 반환하거나 정의되지 않은 동작을 생성하거나 종료하지 못할 수도 있습니다. 답변을 찾는 제출 방법에 대한 설명을 부탁드립니다.
표준 허점 제한이 적용되지 않습니다 : 불필요한 입력을, 어떤 웹 요청, 출력 / 반환 값은 정확하게 대답하고 아닌 무한 랜덤 스트림 없어야합니다 :
및 *
등,