A フリードマン数は、*、/、^、括弧と連結-操作+、と組み合わせて独自の数字を使用して非自明な式に等しい正の整数です。
ニース・フリードマン数は、自明な式に等しい正の整数であり、元の順序で数字を使用して、同じ操作と組み合わせて独自の数字を使用します。
私がここで発明している非常に素晴らしいフリードマン数(VNFN)は、そのような表現のあまりきれいでない(私の意見では)部分なしで書くことができるニース・フリードマン数です。括弧、連結、および単項否定は許可されていません。
この挑戦のために、括弧なしで式を書く3つの可能な方法があります。
プレフィックス:これは左結合性と同等です。このタイプの式は、すべての演算子が数字の左側に記載されています。各演算子は、次の2つの式に適用されます。例えば:
*+*1234 = *(+(*(1,2),3),4) = (((1*2)+3)*4) = 20
この方法で記述できるVNFNは343です。
^+343 = ^(+(3,4),3) = ((3+4)^3) = 343
後置:これは、右結合性と同等です。操作は数字の右側に移動することを除いて、プレフィックス表記に似ています。各演算子は、前の2つの式に適用されます。例えば:
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」式とは、演算子を使用しない式を意味します。これは1桁の数字にのみ関係し、1桁の数字はVNFNにはなり得ないことを意味します。これは、フリードマン数の定義から継承されます。
100万未満の入力では、回答は数秒または数分で実行されます。
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 Nice Friedman Numberを入力してください。
Parentheses, concatenation and unary negation are disallowed.
*(+(*(1,2),3,4)後に、1つのに近い括弧が欠落している,3