jmkeyes·14 ปีที่แล้ว·discussChicken Scheme: (use vector-lib) (define (add1 vec val n) (define *clone* (vector-copy vec))) (define fold-using (if (>= n 0) vector-fold vector-fold-right)) (define (substitution-of total-replacements value) (define replacements-left (if (= total-replacements 0) (vector-length vec) (abs total-replacements))) (lambda (index mutable-vector current-element) (if (and (= current-element value) (> replacements-left 0) (begin (vector-set! mutable-vector index (+ 1 current-element)) (set! replacements-left (- replacements-left 1)))) mutable-vector)) (fold-using (substitution-of n val) *clone* vec)) I don't like that I have to make a copy of the vector though. Maybe unfold ...
I don't like that I have to make a copy of the vector though. Maybe unfold ...