У меня два вопроса по домашнему заданию по программированию на ракетке:
Первый: написать функцию kth-item, которая принимает два аргумента, первый - это поток s, а второй - число k, и он выдает результат извлечения k элементов из потока, возвращая только последний элемент , Очень похоже на предыдущий, но возвращает только один элемент. Вы можете предположить, что k больше 0.
Второй: написать поток negate-2-and-5, который подобен потоку натуральных чисел (т. Е. 1, 2, 3, ...), за исключением того, что числа, кратные 2 или 5, сводятся на нет (т. Е. , 1, -2, 3, -4, -5, -6, 7, -8, 9, -10, 11, -12, 13, -14, ...). Помните, что поток - это thunk, который при вызове создает пару, где автомобиль пары - это следующее число, а cdr будет продолжением потока.
Что касается первых вопросов, я знаю, как получить список ih, но я не представляю, как продолжить получать последний элемент.
Что касается второго вопроса, я знаю, как получить 2 или 5 работ, но я не знаю, как их объединить, поэтому оба 2 и 5 могут работать одновременно.
(define (next-k-items s k)
(if (<= k 0)
empty
(cons (car (s))
(next-k-items (cdr (s)) (- k 1)))))
(define (negate-2-and-5)
(define (f x) (cons (if (= 0 (remainder x 5)) (- x) x)
(lambda () (f (+ x 1)))))
(f 1))
Вот коды тестирования:
(ожидаемый чек (нац-элемент натс 3) 3)
(ожидаемый чек (next-k-items negate-2-and-5 7) '(1 -2 3 -4 -5 -6 7))