从球拍列表中删除 n 个元素
Removing n number of elements from a list in racket
我正在尝试创建一个过程以从索引 i 开始的列表中删除 n 个元素,到目前为止,这是我得到的:
(define (remove L i n)
(cond ((null? L)
'())
((and (= i 0) (= n 0))
L)
(else (cons (car L) (remove (cdr L) (- i 1) (+ n 1))))
我可能遗漏了一个条件,但我有点困惑。
您必须 check/decrement i
和 n
分开
(define (remove L i n)
(cond ((null? L)
empty)
((> i 0)
(cons (car L) (remove (cdr L) (sub1 i) n)))
((> n 0)
(remove (cdr L) i (sub1 n)))
(else
L)))
(remove '(0 1 2 3 4 5 6) 3 2)
;; => '(0 1 2 5 6)
(remove '(0 1 2 3 4 5 6) 5 100)
;; => '(0 1 2 3 4)
(remove '(0 1 2 3 4 5 6) 100 200)
;; => '(0 1 2 3 4 5 6)
(remove '() 0 10)
;; => '()
我正在尝试创建一个过程以从索引 i 开始的列表中删除 n 个元素,到目前为止,这是我得到的:
(define (remove L i n)
(cond ((null? L)
'())
((and (= i 0) (= n 0))
L)
(else (cons (car L) (remove (cdr L) (- i 1) (+ n 1))))
我可能遗漏了一个条件,但我有点困惑。
您必须 check/decrement i
和 n
分开
(define (remove L i n)
(cond ((null? L)
empty)
((> i 0)
(cons (car L) (remove (cdr L) (sub1 i) n)))
((> n 0)
(remove (cdr L) i (sub1 n)))
(else
L)))
(remove '(0 1 2 3 4 5 6) 3 2)
;; => '(0 1 2 5 6)
(remove '(0 1 2 3 4 5 6) 5 100)
;; => '(0 1 2 3 4)
(remove '(0 1 2 3 4 5 6) 100 200)
;; => '(0 1 2 3 4 5 6)
(remove '() 0 10)
;; => '()