Добавление одного элемента в список до определенной точки - PullRequest
0 голосов
/ 21 октября 2019

Я хочу сделать функцию, которая дает список и натуральное число, добавляет нули в список, так что длина списка равна натуральному числу. Какой эффективный способ сделать это, вместо того, чтобы каждый элемент обнулять, он делает то, что должен

(define (zero-list loz alon)
  (cond
    [(empty? loz) empty]
    [(= (-(length loz) 1) alon) (cons 0 loz)]
    [else (cons 0 (zero-list (rest loz)))]))

Пример: (zero-list (list 1 2 3) 5)) -> (list 0 0) so (длина (список 1 2 3)) + (длина(список 0 0)) = 5

1 Ответ

1 голос
/ 21 октября 2019

Используйте make-list, чтобы сгенерировать список с соответствующим числом 0 (т. Е. Разница между числом и длиной списка ввода):

(define (zero-list l n) 
  (make-list (- n (length l)) 0))

(zero-list (list 1 2 3) 5) ; -> (list 0 0)
...