O sistema de número fatorial , também chamado de fatorádico, é um sistema numérico de raiz mista. Os fatoriais determinam o valor da posição de um número.
Nesse sistema, o dígito mais à direita pode ser 0 ou 1, o segundo dígito mais à direita pode ser 0, 1 ou 2 e assim por diante. Isso significa que um nnúmero fatorádico de dígito pode ter um valor máximo de (n + 1)!.
Por exemplo, para converter o número fatorádico 24201em decimal, você faria o seguinte:
2 * 5! = 240
4 * 4! = 96
2 * 3! = 12
0 * 2! = 0
1 * 1! = 1
240 + 96 + 12 + 0 + 1 = 349
Portanto, o número fatorádico 24201é 349base 10.
Para converter um número decimal (com 349um exemplo) em um número fatorádico, faça o seguinte:
Tome o maior fatorial menor que o número. Nesse caso, é 120ou 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
Portanto, 349base 10é o número fatorádico 24201.
Seu desafio é criar o programa ou função mais curto que converta um número de entrada na outra base.
A entrada será uma representação em cadeia de um número inteiro não negativo. Um número fatorádico será precedido por um !(por exemplo !24201), enquanto um número decimal não será precedido por nada. Você pode assumir que a entrada máxima será 10! - 1- 3628799em decimal e 987654321em fatorádico. Isso significa que as letras não aparecerão em uma entrada / saída fatorádica.
O programa não precisa !acrescentar a a uma saída fatorádica e pode gerar uma string ou um número inteiro. A entrada pode estar em qualquer formato razoável.
Casos de teste:
Input: 1234
Output: 141120
Input: 746
Output: 101010
Input: !54321
Output: 719
Input: !30311
Output: 381
⍴⍵∩'!'por'!'∊⍵para salvar um personagem.