Генерация значений до достижения заданного условия
Для начала практики программирования откройте Терминал/SSH и введите node
. После этого вы можете создать генератор, который будет генерировать новые значения, пока не будет достигнуто заданное условие.
Чтобы создать этот генератор, следуйте шагам:
- Инициализируйте текущее
val
с использованием значения seed
.
- Используйте цикл
while
, чтобы продолжать итерации, пока функция condition
, вызываемая с текущим val
, возвращает false
.
- Используйте ключевое слово
yield
, чтобы вернуть текущее val
и, по желанию, получить новое значение seed
, nextSeed
.
- Используйте функцию
next
, чтобы вычислить следующее значение из текущего val
и nextSeed
.
Вот пример кода:
const generateUntil = function* (seed, condition, next) {
let val = seed;
let nextSeed = null;
while (!condition(val)) {
nextSeed = yield val;
val = next(val, nextSeed);
}
return val;
};
Вы можете использовать генератор, вызвав его с соответствующими аргументами. Например:
[
...generateUntil(
1,
(v) => v > 5,
(v) => ++v
)
]; // [1, 2, 3, 4, 5]
Это создаст массив значений от 1
до 5
, так как условие v > 5
выполняется, когда val
равно 6
.