Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #lang scheme
- ;Задание1
- (define (task1 matrix1 matrix2)
- (foldl (lambda(mat1 mat2 res)
- (cons (map (lambda (num1 num2)
- (+ num1 num2)) mat1 mat2) res))
- null matrix1 matrix2)
- )
- ;Задание2
- (define (task2 matrix)
- (foldl (lambda (row positive?)
- (if (not positive?) #f
- (foldl (lambda (el pos?)
- (if (not pos?) #f
- (if (< el 0) #f #t)
- ))
- #t row)))
- #t matrix)
- )
- ;Задание3
- (define (task3 matrix)
- (define len (length (car matrix)))
- (define (listOfZero? lst)
- (andmap (lambda (el)
- (= el 0))
- lst))
- (foldl (lambda (row temp)
- (if (eq? temp #f) #f
- (if (listOfZero? (drop row temp))
- (if (< temp len)
- (+ temp 1) #t) #f))
- )
- 1 matrix
- )
- )
- ;Задание4
- (define (task4 matrix)
- (define iter (build-list (length matrix) (λ(x) (+ x 1))))
- (define (sum lstt)
- (foldl (lambda(x res) (+ res (abs x))) 0 lstt)
- )
- (define (compare lst func n)
- (define N (abs (car (drop (take lst n) (- n 1)))))
- (define sumOtherEl (- (sum lst) N))
- ((eval func) N sumOtherEl)
- )
- (foldl (lambda (row num temp)
- (if (eq? temp #f)
- #f
- (cond ((eq? temp #t) (compare row >= num))
- ((eq? temp "nonstrict") (if (compare row > num) #t
- (if (compare row >= num) "nonstrict" #f)))
- ))
- )
- "nonstrict" matrix iter
- )
- )
- ;Задание5
- (define (task5 n)
- (define row (build-list (- n 1) (λ(x) (+ x 1))))
- (define iter (reverse row))
- (define (split lst n)
- (list (take lst n) (drop lst n))
- )
- (reverse (foldl (lambda (num res)
- (let ((row_cut (split row num)))
- (let ((row_temp (append (car (cdr row_cut)) (car row_cut))))
- (cons row_temp res))))
- null iter
- ))
- )
- ;Задание6
- (define (task6 matrix)
- (define (listOfZero? lst)
- (andmap (lambda (el)
- (= el 0))
- lst))
- (foldl (lambda (row count)
- (if (listOfZero? row)
- (+ count 1)
- count))
- 0 matrix)
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement