2つの数字には固有の階乗が含まれていますか?

2つの数字を階乗に分解してください。彼らが何かを共有する場合、虚偽の値を返します。それ以外の場合は、真理値を返します。
この最近の質問に触発された)

言い換えれば、最も貪欲な方法で各入力数を(正の整数の)階乗の和として書いてください。両方の表現に階乗がない場合は真理値を返し、それ以外の場合は偽の値を返します。

与えられた20と49:

20 = 3! + 3! + 3! + 2!
49 = 4! + 4! + 1!

両方の表現に階乗は現れないので真理値を返す。

与えられた32と132:

132 = 5! + 3! + 3!
 32 = 4! + 3! + 2!

3!両方の表現に現れるので、偽の値を返します。

I/O

入力と出力は、任意の標準手段で行うことができます。

入力は常に負ではない2つの整数になります。あなたの言語が要求するもの以外の整数には上限がありません。

出力は、真実または虚偽の値でなければなりません。これらの値は、すべての出力が正しく真実/偽である限り、必ずしも異なる入力に対して一貫している必要はありません。

テストケース

If one input is 0, the answer will always be
truthy. Other truthy テストケース:

{6, 3}, {4, 61}, {73, 2}, {12, 1}, {240, 2}, {5, 264}, {2, 91}, {673, 18},
 {3, 12}, {72, 10}, {121, 26}, {127, 746}

If both inputs are odd integers, or if both inputs are the same
positive integer, then the output will always be falsey. Other
falsey テストケース:

{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}

This is ,
so fewest bytes wins!

ベストアンサー

Jelly, 7 bytes

Æ!ṠḄ&/¬

Try it
online!

使い方

Æ!ṠḄ&/¬  Main link. Argument: (x, y) (pair of integers)

Æ!       Convert x and y to factorial base.
  Ṡ      Apply the sign function to each digit.
   Ḅ     Unbinary; convert each resulting Boolean array from base 2 to integer.
    &/   Reduce the resulting pair of integers by bitwise AND.
      ¬  Take the logical NOT of the result.

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です