;; taak 2 struct

; 1 dissectie van lijsten
;; 1.1 Dissectie van lijsten

(define (nthcdr l n)
  (if (zero? n)
      l
      (nthcdr (cdr l) (- n 1))))
    
(define (dissect-n l n)
  (define (hulp l ctr res)
    (cond ((null? l) (reverse res))
          ((zero? ctr) (hulp (nthcdr l n) n res))
          (else (hulp (cdr l) (- ctr 1) (cons (car l) res)))))
  (hulp l n '()))

;; 1.2 recursie/iteratie
;; een iteratief proces
(define (rec-dissect-n l n)
  (define (hulp l lst ctr)
    (cond ((null? l) lst)
          ((zero? ctr) (hulp (nthcdr l n) lst n))
          (else (cons (car l) (hulp (cdr l) lst (- ctr 1))))))
  (hulp l '() n))