Advertisement
Guest User

Untitled

a guest
Nov 15th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 1.85 KB | None | 0 0
  1. #lang racket
  2.  
  3. (define head car)
  4. (define tail cdr)
  5.  
  6. (define (begins-with? lst1 lst2)
  7.   (cond [(null? lst1) #t]
  8.         [(null? lst2) #f]
  9.         [(not (equal? (head lst1) (head lst2))) #f]
  10.         [else (begins-with? (tail lst1) (tail lst2))]))
  11.  
  12. (define (sublist? lst1 lst2)
  13.   (cond [(null? lst2) (null? lst1)]
  14.         [(begins-with? lst1 lst2) #t]
  15.         [else (sublist? lst1 (tail lst2))]))
  16.  
  17. (define (filter p? list)
  18.   (if (null? list) '()
  19.       (if (p? (head list)) (cons (head list) (filter p? (tail list))) (filter p? (tail list)))))
  20.  
  21. (define (member? el list)
  22.   (cond [(null? list) #f]
  23.         [(equal? el (head list)) #t]
  24.         [else (member? el (tail list))]))
  25.  
  26.  
  27. (define (set-insert x lst)
  28.   (if (member x lst)
  29.       lst
  30.       (cons x lst)))
  31.  
  32. (define (make-set lst)
  33.   (foldr set-insert '() lst))
  34.  
  35. (define (length* lst)
  36.   (foldr (lambda (el res) (+ res 1)) 0 lst))
  37.  
  38. (define (count-in-list el lst)
  39.   (foldr (lambda (x count) (if (equal? el x) (+ 1 count) count)) 0 lst))
  40.  
  41. (define (histogram lst)
  42.   (map (lambda (x) (cons x (count-in-list x lst))) (make-set lst)))
  43.  
  44. (define (quick-sort lst)
  45.   (define (gen pred)
  46.     (lambda (el) (pred el (head lst))))
  47.   (if (or (null? lst)
  48.           (null? (tail lst)))
  49.       lst
  50.       (append (quick-sort (filter (gen <) lst))
  51.                           (filter (gen =) lst)
  52.               (quick-sort (filter (gen >) lst)))))
  53.  
  54.  
  55.  
  56.  
  57. (define (null-rows? m)  (null? m))
  58. (define (null-cols? m)  (or (null? m) (null? (head m))))
  59. (define (head-rows m)  (head m))
  60. (define (head-cols m)  (map head m))
  61. (define (tail-rows m)  (tail m))
  62. (define (tail-cols m)  (map tail m))
  63. (define (cons-rows row m) (cons row m))
  64. (define (cons-cols col m) (map cons col m))
  65. (define (transpose m)
  66.   (if (null-cols? m)
  67.       '()
  68.       (cons-rows (head-cols m)
  69.                  (transpose (tail-cols m)))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement