Contexte
Dans ce défi, une représentation de baseb
d'un entier n
est une expression de n
comme une somme de puissances de b
, où chaque terme se produit le plus b-1
souvent. Par exemple, la 4
représentation de base de 2015
est
4^5 + 3*4^4 + 3*4^3 + 4^2 + 3*4 + 3
Maintenant, la représentation héréditaire de base b
de n
est obtenue en convertissant les exposants en leurs b
représentations de base , puis en convertissant leurs exposants, et ainsi de suite récursivement. Ainsi, la 4
représentation héréditaire de la base 2015
est
4^(4 + 1) + 3*4^4 + 3*4^3 + 4^2 + 3*4 + 3
Comme exemple plus complexe, la 3
représentation héréditaire de la
7981676788374679859068493351144698070458
est
2*3^(3^(3 + 1) + 2) + 3 + 1
Le changement de base héréditaire de n
de b
àc
, noté H(b, c, n)
, est le nombre obtenu en prenant la b
représentation de base héréditaire de n
, en remplaçant chaque b
par c
et en évaluant l'expression résultante. Par exemple, la valeur de
H(3, 2, 7981676788374679859068493351144698070458)
est
2*2^(2^(2 + 1) + 2) + 2 + 1 = 2051
Le défi
On vous donne en entrée trois entiers b
, c
, n
, pour lequel vous pouvez prendre pour acquis n >= 0
et b, c > 1
. Votre sortie est H(b, c, n)
. Le nombre d'octets le plus court l'emporte et les failles standard sont interdites. Vous pouvez écrire soit une fonction soit un programme complet. Vous devez être capable de gérer des entrées et des sorties arbitrairement grandes (bignums).
Cas de test
4 2 3 -> 3
2 4 3 -> 5
2 4 10 -> 1028
4 4 40000 -> 40000
4 5 40000 -> 906375
5 4 40000 -> 3584
3 2 7981676788374679859068493351144698070458 -> 56761
2 3 2051 -> 35917545547686059365808220080151141317047
Fait amusant
Pour tout entier n
, la séquence obtenue par
n1 = n
n2 = H(2, 3, n1) - 1
n3 = H(3, 4, n2) - 1
n4 = H(4, 5, n3) - 1
....
atteint finalement 0
. Ceci est connu comme le théorème de Goodstein .
D(GHY=Z0)R&Y+*%YG^H(GHZ)(GH/YGhZ
. N'hésitez pas à l'ajouter si vous le souhaitez (je m'en vais aux astuces pour jouer au golf en pyth: D)