Advertisement
Guest User

Untitled

a guest
Dec 6th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. #lang scheme
  2.  
  3.  
  4. ;Задание1
  5. (define (task1 matrix1 matrix2)
  6. (foldl (lambda(mat1 mat2 res)
  7. (cons (map (lambda (num1 num2)
  8. (+ num1 num2)) mat1 mat2) res))
  9. null matrix1 matrix2)
  10. )
  11.  
  12. ;Задание2
  13. (define (task2 matrix)
  14. (foldl (lambda (row positive?)
  15. (if (not positive?) #f
  16. (foldl (lambda (el pos?)
  17. (if (not pos?) #f
  18. (if (< el 0) #f #t)
  19. ))
  20. #t row)))
  21. #t matrix)
  22. )
  23.  
  24. ;Задание3
  25. (define (task3 matrix)
  26. (define len (length (car matrix)))
  27. (define (listOfZero? lst)
  28. (andmap (lambda (el)
  29. (= el 0))
  30. lst))
  31.  
  32. (foldl (lambda (row temp)
  33. (if (eq? temp #f) #f
  34. (if (listOfZero? (drop row temp))
  35. (if (< temp len)
  36. (+ temp 1) #t) #f))
  37. )
  38. 1 matrix
  39. )
  40. )
  41.  
  42. ;Задание4
  43. (define (task4 matrix)
  44. (define iter (build-list (length matrix) (λ(x) (+ x 1))))
  45.  
  46. (define (sum lstt)
  47. (foldl (lambda(x res) (+ res (abs x))) 0 lstt)
  48. )
  49. (define (compare lst func n)
  50. (define N (abs (car (drop (take lst n) (- n 1)))))
  51. (define sumOtherEl (- (sum lst) N))
  52. ((eval func) N sumOtherEl)
  53. )
  54.  
  55. (foldl (lambda (row num temp)
  56. (if (eq? temp #f)
  57. #f
  58. (cond ((eq? temp #t) (compare row >= num))
  59. ((eq? temp "nonstrict") (if (compare row > num) #t
  60. (if (compare row >= num) "nonstrict" #f)))
  61. ))
  62. )
  63. "nonstrict" matrix iter
  64. )
  65. )
  66.  
  67. ;Задание5
  68. (define (task5 n)
  69. (define row (build-list (- n 1) (λ(x) (+ x 1))))
  70. (define iter (reverse row))
  71. (define (split lst n)
  72. (list (take lst n) (drop lst n))
  73. )
  74. (reverse (foldl (lambda (num res)
  75. (let ((row_cut (split row num)))
  76. (let ((row_temp (append (car (cdr row_cut)) (car row_cut))))
  77. (cons row_temp res))))
  78. null iter
  79. ))
  80. )
  81.  
  82. ;Задание6
  83. (define (task6 matrix)
  84. (define (listOfZero? lst)
  85. (andmap (lambda (el)
  86. (= el 0))
  87. lst))
  88. (foldl (lambda (row count)
  89. (if (listOfZero? row)
  90. (+ count 1)
  91. count))
  92. 0 matrix)
  93. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement