Il sistema numerico fattoriale , chiamato anche factoradic, è un sistema numerico radix misto. I fattoriali determinano il valore del luogo di un numero.
In questo sistema, la cifra più a destra può essere 0 o 1, la seconda cifra più a destra può essere 0, 1 o 2 e così via. Ciò significa che un n
numero fattorico numerico può avere un valore massimo di (n + 1)!
.
Ad esempio, per convertire il numero fattorico 24201
in decimale devi fare questo:
2 * 5! = 240
4 * 4! = 96
2 * 3! = 12
0 * 2! = 0
1 * 1! = 1
240 + 96 + 12 + 0 + 1 = 349
Quindi il numero fattorico 24201
è 349
base 10
.
Per convertire un numero decimale (con 349
come esempio) in un numero fattorico, devi fare questo:
Prendi il fattoriale più grande in meno del numero. In questo caso lo è 120
, o 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
Quindi la 349
base 10
è il numero fattorico 24201
.
La tua sfida è creare il programma o la funzione più breve che converta un numero di input nell'altra base.
L'input sarà una rappresentazione in formato stringa di un numero intero non negativo. Un numero fattorico sarà preceduto da un !
(es. !24201
), Mentre un numero decimale non sarà preceduto da nulla. Si può presumere che l'input massimo sarà 10! - 1
- 3628799
in decimale e 987654321
in fattorico. Ciò significa che le lettere non appariranno in un input / output fattorico.
Il programma non ha bisogno di !
anteporre a un output fattadico e può generare una stringa o un numero intero. L'input può essere in qualsiasi formato ragionevole.
Casi test:
Input: 1234
Output: 141120
Input: 746
Output: 101010
Input: !54321
Output: 719
Input: !30311
Output: 381
⍴⍵∩'!'
con'!'∊⍵
per salvare un personaggio.