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