Il y a en effet plusieurs solutions.
Par exemple, on peut faire plus concis grâce une propriété de la somme d'une suite arithmétique, mais l'intérêt algorithmique est moindre :
- Code: Tout sélectionner
pyramide(n):=
for k:0 thru n-1 do (
print(makelist(i+1,i,k*(k+1)/2,k*(k+1)/2+k))
)$
Ce n'est plus vraiment de l'algorithmique, je triche un peu avec makelist et c'est beaucoup moins naturel à cause des indices qu'il faut bidouiller.
Le code de Theo est mieux. On peut cependant remplacer la structure suivante
- Code: Tout sélectionner
(a:0, for ...)
par
- Code: Tout sélectionner
block([a:0], for ...)
pour que le
a qu'on modifie soit spécifique à la fonction et n'ait rien à voir avec un
a défini avant.
Enfin c'est peut-être du détail.
Bertrand, toujours fan de maxima depuis le lycée