Advertisement
Guest User

week-7-code

a guest
Nov 16th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 2.61 KB | None | 0 0
  1. #lang racket
  2.  
  3. ; Зад. 1 Дефинирайте функцията (reverse-column i xss),
  4. ; която приема матрица xss (представена като списъс от списъци)
  5. ; и индекс на колона i (започващ от нула) и обръща елементите
  6. ; и връща матрица, в която елементите на i-тата колона са
  7. ; обърнати.
  8. ; Примери:
  9. ;
  10. ; (reverse-column 0 '((1 2 3)    → '((7 2 3)
  11. ;                     (4 5 6)        (4 5 6)
  12. ;                     (7 8 9)))      (1 8 9))
  13. ;
  14. ; (reverse-column 1 '((1 2 3)    → '((1 8 3)
  15. ;                     (4 5 6)        (4 5 6)
  16. ;                     (7 8 9)))      (7 2 9))
  17. (define (get-element i xs)
  18.   (if (= i 0)
  19.       (car xs)
  20.       (get-element (- i 1) (cdr xs))
  21.    )
  22. )
  23.  
  24. (define (set-element i x xs)
  25.   (if (= i 0)
  26.       (cons x (cdr xs))
  27.       (cons (car xs)
  28.             (set-element (- i 1) x (cdr xs)))
  29.     )
  30.  )
  31.  
  32. (define (reverse-column i xss)
  33.   (define column
  34.     (map (lambda (xs) (get-element i xs))
  35.          xss))
  36.   (map
  37.     (lambda (x xs) (set-element i x xs))
  38.     (reverse column)
  39.     xss)
  40. )
  41.  
  42.  
  43. (define xss '((1 2 3)
  44.               (4 5 6)
  45.               (7 8 9)
  46.               (7 8 9)))
  47.  
  48. (reverse-column 1 xss)
  49.  
  50. ; Зад. 2 Дефинирайте функция closest,
  51. ; която приема списък от числа xs
  52. ; и връща друга функция, която приема число y
  53. ; и връща най-близкото до y число от xs.
  54. ; Пример:
  55. ;  Вход: '(3 1 11 7 42)
  56. ;  Изход: функцията g, за която
  57. ;        (g 0) -> 1
  58. ;        (g 2) -> 1 или 3, по ваш избор
  59. ;        (g 14) -> 11
  60. ;        (g 6) -> 7
  61. ;        (g 33) -> 42
  62. (define (closest xs)
  63.   (lambda (y)
  64.     (let* (
  65.           (distances
  66.            (map
  67.             (lambda (x) (cons x (abs (- y x))))
  68.               xs))
  69.           (closest-pair (foldl
  70.                          (lambda (distance closest-so-far)
  71.                            (if (<
  72.                                 (cdr distance)
  73.                                 (cdr closest-so-far))
  74.                                distance
  75.                                closest-so-far)
  76.                            )
  77.                          (car distances)
  78.                          distances))
  79.           )
  80.       (car closest-pair))
  81.    )
  82.  )
  83.  
  84. (define g (closest '(3 1 11 7 42)))
  85. (g 0)
  86. (g 2)
  87. (g 14)
  88. (g 6)
  89. (g 33)
  90. (g -5)
  91. '((3 2) (1 0) (11 10))
  92.  
  93.  
  94. ;(foldl + 0 '(1 2 3 4))
  95. ;(+ 1 0) ;== 1
  96. ;(+ 2 1) ;== 3
  97. ;(+ 3 3) ;== 6
  98. ;(+ 4 6)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement