Knuth's up-arrow notation
Cette semaine, c'est Jonathan qui vous propose un #KataOfTheWeek : Notation des puissances itérées de Knuth
Briefing du Kata : Vous connaissez l'addition, la multiplication et l'exponentiation. Une multiplication est une répétition d'additions. Une exponentiation est une répétition de multiplication.
Donald Knuth a introduit en 1976 la notation des puissances itérées. Un façon de représenter l'opération est ↑. Une flèche correspond à une suite de multiplications:
2 ↑ 4 = ?
= 2 * (2 * (2 * 2))
= 2^4
= 16
2 une suite d'exponentiations:
2 ↑↑ 4 = ?
= 2 ↑ (2 ↑ (2 ↑ 2))
= 2^2^2^2
= 65536
Un exemple avec 3 ↑↑↑
2 ↑↑↑ 3 = ?
= 2 ↑↑ (2 ↑↑ 2)
= 2 ↑↑ (2 ↑ 2)
= 2 ↑↑ (2 ^ 2)
= 2 ↑↑ 4
= 2 ↑ (2 ↑ (2 ↑ 2))
= 2 ^ 2 ^ 2 ^ 2
= 65536
À vous de coder une fonction réalisant ce calcul en fonction des 3 paramètres.
Un petit exemple de résultats
4 ↑ 3 = 64
4 ↑↑ 2 = 256
3 ↑↑ 3 = 7625597484987
3 ↑↑↑ 2 = 7625597484987
Saurez-vous résoudre le problème ?
Bon courage !
Et sinon voici une solution proposée par l'auteur en Java :
private static double knuthArrowMath(double a, double b, int arrowNum) {
if (arrowNum == 1)
return Math.pow(a, b);
double result = a;
for (int i = 0; i < b - 1; i++) {
result = knuthArrowMath(a, result, arrowNum - 1);
}
return result;
}
Votre équipe TakiVeille