Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

10進数を階乗にエンコードしてJavaScriptに戻す


問題

10進数を階乗でコーディングすることは、数値の累乗ではなく、階乗に依存する基数システムで数値を書き出す方法です。

このシステムでは、最後の桁は常に0であり、基数は0です。その前の数字は0または1のいずれかであり、基数1にあります。その前の数字は0、1、または2のいずれかであり、基数2!などです。より一般的には、最後から2番目の数字は常に0、1、2、...、nであり、基数n!にあります。 。

2つの関数が必要になります。最初のものは10進数を受け取り、階乗表現の文字列を返します。

2つ目は、階乗表現の文字列を受け取り、10進数表現を生成します。

たとえば-

であるため、10進数463は「341010」としてエンコードされます。
463 = 3×5! + 4×4! + 1×3! + 0×2! + 1×1! + 0×0!

以下はコードです-

const num = 463;
const decimalToFact = (num = 1) => {
   const legend = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
   let str = '0';
   let i = 2;
   while(num){
      str = legend[num%i] + str;
      num = Math.floor(num / i);
      i++;
   };
   return str;
};
const factToDecimal = (str = '') => {
   const legend = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
   const l = str.length;
   return str
   .split('')
   .reduce((a,e,i) => Number(a) * (l - i) + legend.indexOf(e), 0);
};
const fact = decimalToFact(num);
const dec = factToDecimal(fact);
console.log(fact);
console.log(dec);

出力

以下はコンソール出力です-

341010
463

  1. JavaScriptConst

    JavaScriptのconst宣言は、他の値に再割り当てしたり、後で再宣言したりできない変数を作成します。 ES2015で導入されました。 以下はJavaScriptconst宣言のコードです- 例 <!DOCTYPE html> <html> <head> <style>    body {       font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;    } </sty

  2. JavaScriptでのConstとLet。

    Constとletは、ブロックスコープの変数を宣言するためにES2015で導入されました。 letを使用して宣言された変数は再割り当てできますが、constを使用して宣言された場合は再割り当てできません。 以下は、JavaScriptでletとconstを示すコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="wi