PasteRack.org
Paste # 78485
2023-11-18 18:25:49

Fork as a new paste.

Paste viewed 561 times.


Embed:

  1. #lang racket
  2. ;; (decreasing-tables n) produces n tables decreasing in size from n to 1
  3. ;; decreasing-tables: Nat -> TableChart
  4.  
  5. ;; Examples
  6. (check-expect (decreasing-tables 0) empty)
  7. (check-expect (decreasing-tables 3)
  8.               (list
  9.                (make-pair 3 (list "X" "X" "X"))
  10.                (make-pair 2 (list "X" "X"))
  11.                (make-pair 1 (list "X"))))
  12.  
  13. (define (decreasing-tables n)
  14.   (cond
  15.     [(= n 0) empty]
  16.     [else (cons (make-pair n (make-list n "X")) (decreasing-tables (sub1 n)))]))
  17.  
  18.  
  19. ;; (increasing-tables n) produces n tables increasing in size from 1 to n
  20. ;; increasing-tables: Nat -> TableChart
  21.  
  22. ;; Examples
  23. (check-expect (increasing-tables 0) empty)
  24. (check-expect (increasing-tables 3)
  25.               (list (make-pair 1 (list "X"))
  26.                     (make-pair 2 (list "X" "X"))
  27.                     (make-pair 3 (list "X" "X" "X"))))
  28.  
  29. (define (increasing-tables n)
  30.   (local
  31.     [;; (increasing-tables-helper m n) produces tables increasing in size
  32.      ;; from m to n (inclusive)
  33.      ;; increasing-tables-helper: Nat -> TableChart
  34.      (define (increasing-tables-helper m n)
  35.        (cond
  36.          [(> m n) empty]
  37.          [else (cons (make-pair m (make-list m "X"))
  38.                      (increasing-tables-helper (add1 m) n))]))]
  39.  
  40.     (increasing-tables-helper 1 n)))

=>

check-expect: undefined;

 cannot reference an identifier before its definition

  in module: 'm

check-expect: undefined;

 cannot reference an identifier before its definition

  in module: 'm

check-expect: undefined;

 cannot reference an identifier before its definition

  in module: 'm

check-expect: undefined;

 cannot reference an identifier before its definition

  in module: 'm