Aller au contenu

Implémenter la fonction range

Contrairement à Javascript, le langage Python dispose d'une fonction range qui permet d'itérer efficacement sur une plage de valeurs. - Elle prend 1, 2 ou 3 paramètres - Elle renvoie un itérateur, et non une liste, ce qui permet d'itérer sur de grandes plages de valeur sans occuper la mémoire correspondante.

Une implémentation possible en Javascript est proposée ci-dessous :

function* range (...args) {  // fonction génératrice, nombre d'arguments variables
  switch (args.length) {
    case 1:
      args = [0, ...args];
    case 2:
      args = [...args, 1];
    case 3:
      if (args[2] === 0)
        throw new Error("Invalid step");
      break;
    default:
      throw new Error('Invalid number of parameters');
  }
  const [start, end, step] = args;

  for (let i = start; step > 0 ? i < end : i > end; i += step)
    yield i;
}