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 n
número fatorádico de dígito pode ter um valor máximo de (n + 1)!
.
Por exemplo, para converter o número fatorádico 24201
em 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
é 349
base 10
.
Para converter um número decimal (com 349
um exemplo) em um número fatorádico, faça o seguinte:
Tome o maior fatorial menor que o número. Nesse caso, é 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
Portanto, 349
base 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
- 3628799
em decimal e 987654321
em 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.