編碼 JavaScript 中的十進位制到階乘然後返回
問題
使用階乘對十進位制數字編碼是一種數字書寫方式,它依賴於階乘,而不是數字的指數形式。
在該系統中,最後一個數字始終是 0,並且以 0 為底。它前面的數字是 0 或 1,並且以 1 為底。它前面的數字是 0、1 或 2,並且以 2 為底,等等。更普遍地說,倒數第 n 個數字始終是 0、1、2、...n,並且以 n 為底。
我們需要兩個函式。第一個函式將接收一個十進位制數字,並返回具有階乘表示形式的字串。
第二個函式將接收一個具有階乘表示形式的字串,並生成十進位制表示形式。
例如 −
十進位制數字 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP