Das Factorial Number System , auch factoradic genannt, ist ein gemischtes Radix-Zahlensystem. Die Fakultäten bestimmen den Stellenwert einer Zahl.
In diesem System kann die Ziffer ganz rechts entweder 0 oder 1 sein, die zweite Ziffer ganz rechts kann 0, 1 oder 2 sein und so weiter. Dies bedeutet, dass eine n
ziffernfaktoradische Zahl einen Maximalwert von haben kann (n + 1)!
.
Um beispielsweise die faktoradische Zahl 24201
in eine Dezimalzahl umzuwandeln, gehen Sie folgendermaßen vor:
2 * 5! = 240
4 * 4! = 96
2 * 3! = 12
0 * 2! = 0
1 * 1! = 1
240 + 96 + 12 + 0 + 1 = 349
Daher ist die faktoradische Zahl 24201
die 349
Basis 10
.
So konvertieren Sie eine Dezimalzahl (mit 349
als Beispiel) in eine faktoradische Zahl:
Nehmen Sie die größte Fakultät kleiner als die Zahl. In diesem Fall ist es 120
oder 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
Daher 349
Basis 10
ist die Zahl factoradic 24201
.
Ihre Herausforderung besteht darin, das kürzeste Programm oder die kürzeste Funktion zu erstellen, die eine eingegebene Nummer in die andere Basis umwandelt.
Die Eingabe ist eine Zeichenfolgendarstellung einer nicht negativen Ganzzahl. Einer faktoradischen Zahl wird ein !
(z. B. !24201
) vorangestellt , während einer Dezimalzahl nichts vorangestellt wird. Sie können davon ausgehen, dass die maximale Eingabe 10! - 1
- 3628799
dezimal und 987654321
faktoradisch - erfolgt. Dies bedeutet, dass in einer faktoradischen Eingabe / Ausgabe keine Buchstaben erscheinen.
Das Programm muss a keiner !
faktoradischen Ausgabe voranstellen und kann eine Zeichenfolge oder eine Ganzzahl ausgeben. Die Eingabe kann in jedem vernünftigen Format erfolgen.
Testfälle:
Input: 1234
Output: 141120
Input: 746
Output: 101010
Input: !54321
Output: 719
Input: !30311
Output: 381
⍴⍵∩'!'
mit'!'∊⍵
einem Zeichen zu speichern.