Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #lang racket
- (define (schet lst_int lst_func)
- (car (lst_schet (rec_mult lst_int (mult lst_func '() 0))
- (filter (λ(x) (not (eq? (eval x) *))) lst_func))))
- ;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
- (define (lst_schet lst_int lst_func)
- (if (empty? (cdr lst_int))
- lst_int
- (lst_schet (append (list ((eval (car lst_func)) (car lst_int) (cadr lst_int))) (cddr lst_int)) (cdr lst_func))))
- ;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
- (define (mult lst_func res pos) ;( pos1 pos2 ) (* * *) ( 0 1 2 )
- (if (empty? lst_func)
- res
- (if (eq? (eval (car lst_func)) *)
- (mult (cdr lst_func) (append res (list pos)) (+ pos 1))
- (mult (cdr lst_func) res (+ pos 1)))))
- ;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
- (define (rec_mult lst_int lst_mult) ;( 1 6 4) (1)
- (if (empty? lst_mult)
- lst_int
- (rec_mult (append
- (take lst_int (car lst_mult))
- (list (* (list-ref lst_int (+ (car lst_mult) 1))(list-ref lst_int (car lst_mult))))
- (drop lst_int (+ (car lst_mult) 2)))
- (cdr (map (λ (x) (- x 1)) lst_mult)))))
- (define (perenos lst lst2 f)
- (if (empty? lst)
- lst2
- (if (not f)
- (begin (display (append lst2 lst)) (append lst2 lst) )
- (cond [(eq? (eval (car lst)) *) (perenos (cdr lst) (append lst2 (list '+))
- (if (empty? (cdr lst))
- #f
- #t))]
- [(eq? (eval (car lst)) +) (perenos (cdr lst) (append lst2 (list '-)) #f)]
- [(eq? (eval (car lst)) -) (perenos (cdr lst) (append lst2 (list '*)) #f)]))))
- (define (near_zero lst-main)
- (define end (build-list (- (length lst-main) 1) (λ (x) '+)))
- (define res (build-list (- (length lst-main) 1) (λ (x) '+)))
- (define (SIGN lst)
- (if (equal? lst end)
- (help '() lst)
- (begin (help '() lst) (SIGN (perenos lst '() #t)))))
- ;(define lst-main '(1 2 3 5))
- (define (help fix-lst lst)
- (if (empty? lst)
- (cond [(< (abs (schet lst-main fix-lst)) (abs (schet lst-main res)))
- (begin (display 1)(display fix-lst)(display 2) (display res)(set! res fix-lst)(display 3)(display fix-lst)(display 4) (display res))])
- (for-each (λ (x) (help (cons x fix-lst) (remove x lst))) lst)))
- (SIGN (append (build-list (- (length lst-main) 2) (λ (x) '+)) (list '-)))
- res)
Advertisement
Add Comment
Please, Sign In to add comment