Le secret de la pyramide.

Le secret de la pyramide.

Messagepar sc le 30 Sep 2010, 12:50

prog.gif
prog.gif (10.48 Kio) Consulté 10814 fois

Quel est donc le code mystérieux qui donne ces résultats là ?
Avatar de l’utilisateur
sc
~ administrateur ~
 
Messages: 1439
Inscrit le: 29 Aoû 2017, 10:46

Re: Le secret de la pyramide.

Messagepar -Theo- le 02 Oct 2010, 20:26

Bonsoir !
Il doit y avoir un paquet de solutions à ce problème, non ?

Voici une proposition :

Code: Tout sélectionner
pyramide(n) := (
a:0,
for i:1 thru n step 1 do (
tableau:[],
for j:1 thru i step 1 do (
a:a+1,
tableau:endcons(a,tableau)
),
print(tableau))
);
"Si les faits ne correspondent pas à la théorie, changez les faits !"
Albert Einstein
Avatar de l’utilisateur
-Theo-
~ membre surdoué ~
 
Messages: 31
Inscrit le: 26 Sep 2009, 11:22

Re: Le secret de la pyramide.

Messagepar sc le 04 Oct 2010, 19:52

Bonjour Théo,
Ca a pas trainé. Bien joué :D :D :D
Avatar de l’utilisateur
sc
~ administrateur ~
 
Messages: 1439
Inscrit le: 29 Aoû 2017, 10:46

Re: Le secret de la pyramide.

Messagepar bbc le 19 Oct 2010, 21:45

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
Bertrand
bbc
~ membre régulier ~
 
Messages: 5
Inscrit le: 12 Déc 2007, 17:28
Localisation: Metz


Retourner vers Algorithmique

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 2 invités