The faktorial Number System , juga disebut factoradic, adalah sistem radix angka campuran. Faktorial menentukan nilai tempat suatu angka.
Dalam sistem ini, digit paling kanan bisa 0 atau 1, digit paling kanan kedua bisa 0, 1 atau 2, dan seterusnya. Ini berarti bahwa n
angka faktoradik digit dapat memiliki nilai maksimum (n + 1)!
.
Misalnya, untuk mengonversi angka faktoradik 24201
menjadi desimal, Anda akan melakukan ini:
2 * 5! = 240
4 * 4! = 96
2 * 3! = 12
0 * 2! = 0
1 * 1! = 1
240 + 96 + 12 + 0 + 1 = 349
Oleh karena itu angka faktoradik 24201
adalah 349
basa 10
.
Untuk mengonversi angka desimal (dengan 349
sebagai contoh) menjadi angka faktoradik, Anda akan melakukan ini:
Ambil faktorial terbesar kurang dari jumlah. Dalam hal ini 120
, atau 5!
.
349 / 5! = 2 r 109
109 / 4! = 4 r 13
13 / 3! = 2 r 1
1 / 2! = 0 r 1
1 / 1! = 1 r 0
Karenanya 349
basis 10
adalah angka faktoradik 24201
.
Tantangan Anda adalah membuat program atau fungsi terpendek yang mengubah nomor input ke basis lain.
Input akan berupa representasi string dari integer non-negatif. Angka faktoradik akan didahului oleh !
(mis. !24201
), Sedangkan angka desimal tidak akan didahului oleh apa pun. Anda dapat berasumsi bahwa input maksimum adalah 10! - 1
- 3628799
dalam desimal dan 987654321
faktoradik. Ini berarti bahwa huruf tidak akan muncul dalam input / output faktoradik.
Program tidak perlu menambahkan sebuah !
ke keluaran faktoradik, dan dapat menampilkan string atau integer. Masukan mungkin dalam format yang masuk akal.
Kasus uji:
Input: 1234
Output: 141120
Input: 746
Output: 101010
Input: !54321
Output: 719
Input: !30311
Output: 381
⍴⍵∩'!'
dengan'!'∊⍵
untuk menyimpan karakter.