2つの数値を階乗に分解します。共有している場合は、偽の値を返します。それ以外の場合は、真実の値を返します。(この最近の質問に触発された)
言い換えれば、各入力番号を可能な限り貪欲な方法で(正の整数の)階乗の合計として書き込みます。両方の表現に階乗が現れない場合は真実の値を、そうでなければ偽の値を返します。
例
20と49が与えられた場合:
20 = 3! + 3! + 3! + 2!
49 = 4! + 4! + 1!
両方の表現に階乗が現れないため、真理値を返します。
32と132が与えられた場合:
132 = 5! + 3! + 3!
32 = 4! + 3! + 2!
3!両方の表現に表示されるため、falsey値を返します。
I / O
入力と出力は、任意の標準的な手段で行うことができます。
入力は常に2つの非負整数になります。言語が必要とするもの以外のこれらの整数の上限はありません。
出力は、真偽値または偽値でなければなりません。すべての出力が正しく真実/偽である限り、これらの値は必ずしも異なる入力に対して一貫している必要はありません。
テストケース
1つの入力がの0
場合、答えは常に真実です。他の真実のテストケース:
{6, 3}, {4, 61}, {73, 2}, {12, 1}, {240, 2}, {5, 264}, {2, 91}, {673, 18},
{3, 12}, {72, 10}, {121, 26}, {127, 746}
両方の入力が奇数の整数である場合、または両方の入力が同じ正の整数である場合、出力は常に偽になります。その他の偽のテストケース:
{8, 5}, {7, 5}, {27, 47}, {53, 11}, {13, 123}, {75, 77}, {163, 160}, {148, 53},
{225, 178}, {285, 169}, {39, 51}, {207, 334}, {153, 21}, {390, 128}, {506, 584},
{626, 370}, {819, 354}
これはcode-golfなので、最少バイトが勝ちます!