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 nnombre factoriel numérique peut avoir une valeur maximale de (n + 1)!.
Par exemple, pour convertir le nombre factoriel 24201en 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 24201est de 349base 10.
Pour convertir un nombre décimal (avec 349comme 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 349base 10est 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- 3628799en décimal et 987654321en 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.