프리드만 번호 , *, /, ^ 괄호와 연결 - 동작 +와 결합하여 자신의 숫자를 사용하는 비 단순 발현와 동일한 양의 정수이다.
Nice Friedman Number는 고유 한 숫자를 원래 순서대로 숫자와 동일한 연산과 함께 사용하는 사소한 표현과 같은 양의 정수입니다.
내가 여기서 발명하고있는 Very Nice Friedman Number (VNFN)는 그러한 표현의 덜 예쁘지 않은 부분으로 쓰여질 수있는 Nice Friedman Number입니다. 괄호, 연결 및 단항 부정은 허용되지 않습니다.
이 문제를 해결하기 위해 괄호없이 표현식을 작성하는 세 가지 방법이 있습니다.
접두사 : 왼쪽 연관과 동일합니다. 이 유형의 표현식은 모든 연산자와 함께 숫자 왼쪽에 작성됩니다. 각 연산자는 다음 두 표현식에 적용됩니다. 예를 들어 :
*+*1234 = *(+(*(1,2),3),4) = (((1*2)+3)*4) = 20
이런 식으로 쓸 수있는 VNFN은 343입니다.
^+343 = ^(+(3,4),3) = ((3+4)^3) = 343
접미사 : 이것은 오른쪽 연관과 같습니다. 연산이 숫자의 오른쪽으로 이동한다는 점을 제외하면 접두사 표기법과 같습니다. 각 연산자는 두 개의 이전 표현식에 적용됩니다. 예를 들어 :
1234*+* = (1,(2,(3,4)*)+)* = (1*(2+(3*4))) = 14
이런 식으로 쓸 수있는 VNFN은 15655입니다.
15655^+** = (1,(5,(6,(5,5)^)+)*)* = (1*(5*(6+(5^5)))) = 15655
접두사 : 접두사 표기법은 5 가지 작업에 표준 작업 순서를 사용합니다. 당면 과제의 목적을 위해 해당 작업 순서는 다음과 같이 정의됩니다 ^
. 그런 다음, 괄호로 *
와 /
동시에 연관 떠났다. 마지막으로, 괄호로 +
와 -
동시에 연관 떠났다.
1-2-3 = (1-2)-3 = -4
2/3*2 = (2/3)*2 = 4/3
2^2^3 = 2^(2^3) = 256
1^2*3+4 = (1^2)*3+4 = 7
이 방법으로 쓸 수있는 VNFN은 11664입니다.
1*1*6^6/4 = (((1*1)*(6^6))/4) = 11664
도전 과제 : 양의 정수가 주어지면 접두사, 접두사 또는 접미사 표기법으로 고유 한 자릿수가 아닌 간단한 표현으로 표현할 수 있으면 해당 표현식을 출력하십시오. 그렇지 않으면 아무것도 출력하지 않습니다.
설명 : 여러 표현이 가능한 경우 비어 있지 않은 부분 집합을 출력 할 수 있습니다. 예를 들어, 736은 VNFN입니다.
+^736 = 736
7+3^6 = 736
+^736
, 7+3^6
또는 둘 모두를 출력으로 허용 할 것이다.
"Trivial"식은 연산자를 사용하지 않는 식을 의미합니다. 이는 한 자리 숫자에만 해당되며 한 자리 숫자는 VNFN이 될 수 없습니다. 이것은 Friedman Number의 정의에서 상속됩니다.
답변은 백만 미만의 입력에서 몇 초 또는 몇 분 안에 실행되어야합니다.
IO : 표준 IO 규칙. 전체 프로그램, 기능, 동사 또는 유사. STDIN, 명령 행, 함수 인수 또는 유사 "Nothing"을 출력하는 경우 빈 문자열, 빈 줄 null
또는 이와 유사한 항목 및 빈 컬렉션이 모두 적합합니다. 출력은 표현할 수없는 문자로 구분 된 문자열이거나 문자열 모음 일 수 있습니다.
예 :
127
None
343
^+343
736
736^+
7+3^6
2502
None
15655
15655^+**
11664
1*1*6^6/4
1^1*6^6/4
5
None
득점 : 이것은 코드 골프입니다. 가장 적은 바이트가 이깁니다.
또한 하나를 찾으면 답변에 새로운 Very Fried Friedman Number를 부여하십시오.
Parentheses, concatenation and unary negation are disallowed.
*(+(*(1,2),3,4)
후 하나의 가까운 paren이 없습니다,3