PasteRack.org
Paste # 56732
2016-07-15 13:26:18

Forked from paste # 34957.

Fork as a new paste.

Paste viewed 378 times.


Embed:

  1. #lang racket
  2.  
  3. (define min -5)
  4. (define max 7)
  5.  
  6. (define (generate)
  7.   (for/list ((i (in-range 3)))
  8.             (for/list ((i (in-range 6)))
  9.                       (+ (random (+ 1 (- max min))) min))))
  10.  
  11. (define (root-mean-square x)
  12.   (sqrt (/ (foldl + 0 (map sqr x)) (length x))))
  13.  
  14. (define (odd-and-even x)
  15.   (define odd '())
  16.   (define even '())
  17.   (for ((el x)
  18.         (i (in-range (length x))))
  19.        (if (odd? i)
  20.            (set! odd (cons el odd))
  21.            (set! even (cons el even))))
  22.   (list (reverse odd) (reverse even)))
  23.  
  24. (define r (generate))
  25.  
  26. (displayln "Matrix:")
  27. (for-each displayln r)
  28.  
  29. (displayln "List:")
  30. (define s (flatten r))
  31. (displayln s)
  32.  
  33. (displayln "Root mean square of ...:")
  34. (displayln (root-mean-square (filter (lambda (x) (> x 0))
  35.                                      (drop s (/ (length s) 2)))))
  36.  
  37. (displayln "Two minimal of odd-index elements of ...:")
  38. (displayln (take (sort
  39.                   (first
  40.                    (odd-and-even
  41.                     (take (drop s (/ (length s) 3)) (/ (length s) 3))))
  42.                   <)
  43.                  2))
  44.  
  45. (dispayln "Sorted even-indexed non-zero elements of ...")
  46. (displayln (sort
  47.             (filter (drop s (* (length s) 2/3)) (compose not zero?))
  48.             >
  49.             #:key (lambda (x) (/ 1 x))))

=>

Matrix:

(6 3 -4 6 1 0)

(3 2 -4 -4 3 -3)

(-1 7 1 3 7 1)

List:

(6 3 -4 6 1 0 3 2 -4 -4 3 -3 -1 7 1 3 7 1)

Root mean square of ...:

4.43471156521669

Two minimal of odd-index elements of ...:

(-4 -3)

dispayln: undefined;

 cannot reference an identifier before its definition

  in module: 'm

filter: contract violation

  expected: (any/c . -> . any/c)

  given: '(-1 7 1 3 7 1)