Le système de nombres factoriels , également appelé factoradique, est un système de nombres mixtes radix. Les factorielles déterminent la valeur de position d'un nombre.
Dans ce système, le chiffre le plus à droite peut être 0 ou 1, le deuxième chiffre le plus à droite peut être 0, 1 ou 2, etc. Cela signifie qu'un n
nombre factoriel numérique peut avoir une valeur maximale de (n + 1)!
.
Par exemple, pour convertir le nombre factoriel 24201
en décimal, vous feriez ceci:
2 * 5! = 240
4 * 4! = 96
2 * 3! = 12
0 * 2! = 0
1 * 1! = 1
240 + 96 + 12 + 0 + 1 = 349
Par conséquent, le nombre factoriel 24201
est de 349
base 10
.
Pour convertir un nombre décimal (avec 349
comme exemple) en nombre factoriel, vous feriez ceci:
Prenez la plus grande factorielle inférieure au nombre. Dans ce cas, c'est le cas 120
, ou 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
La 349
base 10
est donc le nombre factoriel 24201
.
Votre défi consiste à créer le programme ou la fonction la plus courte qui convertit un numéro d'entrée dans l'autre base.
L'entrée sera une représentation sous forme de chaîne d'un entier non négatif. Un nombre factoriel sera précédé d'un !
(par exemple !24201
), tandis qu'un nombre décimal ne sera précédé de rien. Vous pouvez supposer que l'entrée maximale sera 10! - 1
- 3628799
en décimal et 987654321
en factoradique. Cela signifie que les lettres n'apparaîtront pas dans une entrée / sortie factorielle.
Le programme n'a pas besoin d'ajouter un !
à une sortie factorielle et peut sortir une chaîne ou un entier. L'entrée peut être dans n'importe quel format raisonnable.
Cas de test:
Input: 1234
Output: 141120
Input: 746
Output: 101010
Input: !54321
Output: 719
Input: !30311
Output: 381
⍴⍵∩'!'
par'!'∊⍵
pour enregistrer un personnage.