~rhcarvalho/+junk/racket

« back to all changes in this revision

Viewing changes to demo/list-merge.rkt

  • Committer: Rodolfo Carvalho
  • Date: 2011-11-13 15:03:20 UTC
  • mfrom: (50.1.7 racket)
  • Revision ID: rhcarvalho@gmail.com-20111113150320-lo1yqejh3qhs5ow2
Merge

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#lang racket/base
2
 
(provide list-merge)
3
 
 
4
 
;; Merge two sorted list into a sorted list
5
 
(define (list-merge a b)
6
 
  (cond
7
 
    ;[(empty? a) b]
8
 
    ;[(empty? b) a]
9
 
    [(zero? (length a)) b]
10
 
    [(zero? (length b)) a]
11
 
    [else (if (< (car a) (car b))
12
 
              (cons (car a) (list-merge (cdr a) b))
13
 
              (cons (car b) (list-merge a (cdr b))))]))
14
 
 
15
 
(list-merge '(1 10 20 30) '(2 9 15 25 42 56))
 
1
#lang racket/base
 
2
(require ;racket/list
 
3
         rackunit)
 
4
 
 
5
(provide list-merge)
 
6
 
 
7
;; Merge two sorted list into a sorted list
 
8
(define (list-merge a b)
 
9
  (cond
 
10
    ;[(empty? a) b]
 
11
    ;[(empty? b) a]
 
12
    [(zero? (length a)) b]
 
13
    [(zero? (length b)) a]
 
14
    [else (if (< (car a) (car b))
 
15
              (cons (car a) (list-merge (cdr a) b))
 
16
              (cons (car b) (list-merge a (cdr b))))]))
 
17
 
 
18
(check-equal? (list-merge '(1 10 20 30) '(2 9 15 25 42 56))
 
19
              '(1 2 9 10 15 20 25 30 42 56))
 
 
b'\\ No newline at end of file'