El sistema de numeración factorial , también llamado factoradic, es un sistema mixto de números radix. Los factoriales determinan el valor posicional de un número.
En este sistema, el dígito más a la derecha puede ser 0 o 1, el segundo dígito a la derecha puede ser 0, 1 o 2, y así sucesivamente. Esto significa que un n
número factoradic de un dígito puede tener un valor máximo de (n + 1)!
.
Por ejemplo, para convertir el número factoradic 24201
a decimal, haría esto:
2 * 5! = 240
4 * 4! = 96
2 * 3! = 12
0 * 2! = 0
1 * 1! = 1
240 + 96 + 12 + 0 + 1 = 349
Por lo tanto, el número factoradic 24201
es 349
base 10
.
Para convertir un número decimal (con 349
un ejemplo) en un número factoradic, debe hacer esto:
Tome el factorial más grande menor que el número. En este caso es 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
Por lo tanto, 349
base 10
es el número factoradic 24201
.
Su desafío es crear el programa o la función más corta que convierta un número de entrada a la otra base.
La entrada será una representación de cadena de un entero no negativo. Un número factoradic estará precedido por un !
(por ejemplo !24201
), mientras que un número decimal no estará precedido por nada. Puede suponer que la entrada máxima será 10! - 1
- 3628799
en decimal y 987654321
en factoradic. Esto significa que las letras no aparecerán en una entrada / salida factoradic.
El programa no necesita anteponer !
a una salida factoradic, y puede generar una cadena o un entero. La entrada puede estar en cualquier formato razonable.
Casos de prueba:
Input: 1234
Output: 141120
Input: 746
Output: 101010
Input: !54321
Output: 719
Input: !30311
Output: 381
⍴⍵∩'!'
con'!'∊⍵
guardar un carácter.