Advertisement
Guest User

Многомерные Вектора

a guest
Nov 5th, 2018
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 0.90 KB | None | 0 0
  1. (define-syntax make-multi-vector
  2.   (syntax-rules ()
  3.     ((_ s)  
  4.      (let (( v (make-vector (+ 2 (apply * s )))))
  5.        (begin
  6.          (vector-set! v 0 'multiv)
  7.          (vector-set! v 1 s )
  8.          v)))
  9.     ((_ s f)
  10.      (let (( v (make-vector (+ 2 (apply * s )))))
  11.        (begin
  12.          (vector-fill! v f)
  13.          (vector-set! v 0 'multiv )
  14.          (vector-set! v 1 s )
  15.          v)))))
  16.  
  17. (define (multi-vector? v)
  18.   (equal? (vector-ref v 0) 'multiv))
  19.  
  20. (define (multi-vector-ref v y)
  21.   (define (main x l s)
  22.     (if (null? l)
  23.         (vector-ref v (+ x 2))
  24.         (main (+ x (* (/ (apply * s) (car s)) (car l))) (cdr l) (cdr s))))
  25.   (main 0 y (vector-ref v 1)))
  26.  
  27. (define (multi-vector-set! v y p)
  28.   (define (main x l s)
  29.     (if (null? l)
  30.         (vector-set! v (+ x 2) p)
  31.         (main (+ x (* (/ (apply * s) (car s)) (car l))) (cdr l) (cdr s))))
  32.   (main 0 y (vector-ref v 1)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement