2014-07-09 2 views
0

Le système de algeba informatique Maple dispose d'une commande seq(f, i = m..n, step), qui renvoie la séquence fm ... fn, où fi est l'expression f avec toutes les occurrences du symbole i remplacées par la valeur numérique de i dans la séquence d'entiers de m à n. Mettre en oeuvre une fonction de schéma (seq f (start step end)), et produire une liste de valeurs (f(start), f(start+step), ..., f(start+n*step)), où n est l'entier le plus grand tel que start+n*step <= end et start+(n+1)*step > end.comment mettre en oeuvre dans le schéma de cette fonction

Je pensais que cela fonctionnerait: (seq (lambda (x) (* x x)) '(0 2 7)) =>(0 4 16 36)

Répondre

2

La solution de base à cette question est de mettre en œuvre iota et map, et combiner les deux:

  • iota génère une liste de numéros étant donné le début , arrêt et étape
  • map appelle une fonction donnée sur tous les éléments de la liste donnée et renvoie une nouvelle liste contenant les valeurs renvoyées

Vous devez écrire ces fonctions, mais une fois que vous avez, votre fonction seq est une simple question de assemblant les deux ensemble.

Questions connexes