Lists CoSc 450: Programming Paradigms 07 The definition of a list - - PowerPoint PPT Presentation

lists cosc 450 programming paradigms 07 the definition of
SMART_READER_LITE
LIVE PREVIEW

Lists CoSc 450: Programming Paradigms 07 The definition of a list - - PowerPoint PPT Presentation

CoSc 450: Programming Paradigms 07 Lists CoSc 450: Programming Paradigms 07 The definition of a list CoSc 450: Programming Paradigms 07 The definition of a list The empty list is a list. A nonempty list lst has two parts. (car


slide-1
SLIDE 1

CoSc 450: Programming Paradigms

Lists

07

slide-2
SLIDE 2

CoSc 450: Programming Paradigms The definition of a list 07

slide-3
SLIDE 3

CoSc 450: Programming Paradigms The definition of a list

  • The empty list is a list.
  • A nonempty list lst has two parts.
  • (car lst) — the first element of the list.
  • (cdr lst) — the rest of the list.

07

slide-4
SLIDE 4

CoSc 450: Programming Paradigms The definition of a list

  • The empty list is a list.
  • A nonempty list lst has two parts.
  • (car lst) — the first element of the list.
  • (cdr lst) — the rest of the list.

car is an element. cdr is a list. 07

slide-5
SLIDE 5

CoSc 450: Programming Paradigms

interleave (interleave ‘(a b c) ‘(d e f))

07

slide-6
SLIDE 6

CoSc 450: Programming Paradigms

interleave (interleave ‘(a b c) ‘(d e f))

07

(car ‘(a b c)) a

slide-7
SLIDE 7

CoSc 450: Programming Paradigms

interleave (interleave ‘(a b c) ‘(d e f))

07

(car ‘(a b c)) a (cdr ‘(a b c)) (b c)

slide-8
SLIDE 8

CoSc 450: Programming Paradigms

interleave (interleave ‘(a b c) ‘(d e f))

07

(car ‘(a b c)) a (cdr ‘(a b c)) (b c) (interleave ‘(d e f) ‘(b c)) (d b e c f)

slide-9
SLIDE 9

CoSc 450: Programming Paradigms

interleave (interleave ‘(a b c) ‘(d e f))

07

(car ‘(a b c)) a (cdr ‘(a b c)) (b c) (interleave ‘(d e f) ‘(b c)) (d b e c f) a

slide-10
SLIDE 10

CoSc 450: Programming Paradigms

add-to-end (add-to-end ‘(a b c d) ‘x)

07

slide-11
SLIDE 11

CoSc 450: Programming Paradigms

add-to-end (add-to-end ‘(a b c d) ‘x)

07

(car ‘(a b c d)) a

slide-12
SLIDE 12

CoSc 450: Programming Paradigms

add-to-end (add-to-end ‘(a b c d) ‘x)

07

(car ‘(a b c d)) a (cdr ‘(a b c d)) (b c d)

slide-13
SLIDE 13

CoSc 450: Programming Paradigms

add-to-end (add-to-end ‘(a b c d) ‘x)

07

(car ‘(a b c d)) a (cdr ‘(a b c d)) (b c d) (add-to-end ‘(b c d) ‘x) (b c d x)

slide-14
SLIDE 14

CoSc 450: Programming Paradigms

add-to-end (add-to-end ‘(a b c d) ‘x)

07

(car ‘(a b c d)) a (cdr ‘(a b c d)) (b c d) (add-to-end ‘(b c d) ‘x) (b c d x) a

slide-15
SLIDE 15

CoSc 450: Programming Paradigms 07 What is the efficiency of add-to-end?

(define add-to-end (lambda (lst elt) (if (null? lst) (cons elt '()) (cons (car lst) (add-to-end (cdr lst) elt)))))

slide-16
SLIDE 16

CoSc 450: Programming Paradigms 07 What is the efficiency of add-to-end?

Θ(n)

(define add-to-end (lambda (lst elt) (if (null? lst) (cons elt '()) (cons (car lst) (add-to-end (cdr lst) elt)))))

slide-17
SLIDE 17

CoSc 450: Programming Paradigms 07 What is the efficiency of my-reverse?

(define my-reverse (lambda (lst) (if (null? lst) '() (add-to-end (my-reverse (cdr lst)) (car lst)))))

slide-18
SLIDE 18

CoSc 450: Programming Paradigms 07

Θ(n2)

What is the efficiency of my-reverse?

(define my-reverse (lambda (lst) (if (null? lst) '() (add-to-end (my-reverse (cdr lst)) (car lst)))))

slide-19
SLIDE 19

CoSc 450: Programming Paradigms 07

(reverse-onto '(a b c) '(1 2 3)) (c b a 1 2 3)

slide-20
SLIDE 20

CoSc 450: Programming Paradigms 07

(reverse-onto '(a b c) '(1 2 3)) (c b a 1 2 3) (car ‘(a b c)) a

slide-21
SLIDE 21

CoSc 450: Programming Paradigms 07

(reverse-onto '(a b c) '(1 2 3)) (c b a 1 2 3) (car ‘(a b c)) a (cdr ‘(a b c)) (b c)

slide-22
SLIDE 22

CoSc 450: Programming Paradigms 07

(reverse-onto '(a b c) '(1 2 3)) (c b a 1 2 3) (car ‘(a b c)) a (cdr ‘(a b c)) (b c) (cons ‘a ‘(1 2 3)) (a 1 2 3)

slide-23
SLIDE 23

CoSc 450: Programming Paradigms 07

(reverse-onto '(a b c) '(1 2 3)) (c b a 1 2 3) (car ‘(a b c)) a (cdr ‘(a b c)) (b c) (cons ‘a ‘(1 2 3)) (a 1 2 3) (reverse-onto '(b c) '(a 1 2 3)) (c b a 1 2 3)

slide-24
SLIDE 24

CoSc 450: Programming Paradigms 07

(reverse-onto '(a b c) '(1 2 3)) (c b a 1 2 3)

(define reverse-onto (lambda (lst1 lst2) (if (null? lst1) lst2 (reverse-onto (cdr lst1) (cons (car lst1) lst2)))))

slide-25
SLIDE 25

CoSc 450: Programming Paradigms 07

(reverse-onto '(a b c) '(1 2 3)) (c b a 1 2 3)

(define reverse-onto (lambda (lst1 lst2) (if (null? lst1) lst2 (reverse-onto (cdr lst1) (cons (car lst1) lst2)))))

slide-26
SLIDE 26

CoSc 450: Programming Paradigms 07

(reverse-onto '(a b c) '(1 2 3)) (c b a 1 2 3)

(define reverse-onto (lambda (lst1 lst2) (if (null? lst1) lst2 (reverse-onto (cdr lst1) (cons (car lst1) lst2)))))

slide-27
SLIDE 27

CoSc 450: Programming Paradigms 07

(reverse-onto '(a b c) '(1 2 3)) (c b a 1 2 3)

(define reverse-onto (lambda (lst1 lst2) (if (null? lst1) lst2 (reverse-onto (cdr lst1) (cons (car lst1) lst2)))))

slide-28
SLIDE 28

CoSc 450: Programming Paradigms 07

(reverse-onto '(a b c) '(1 2 3)) (c b a 1 2 3)

(define reverse-onto (lambda (lst1 lst2) (if (null? lst1) lst2 (reverse-onto (cdr lst1) (cons (car lst1) lst2)))))

slide-29
SLIDE 29

CoSc 450: Programming Paradigms 07

(reverse-onto '(a b c) '(1 2 3)) (c b a 1 2 3)

(define reverse-onto (lambda (lst1 lst2) (if (null? lst1) lst2 (reverse-onto (cdr lst1) (cons (car lst1) lst2)))))

What is the efficiency of reverse-onto?

slide-30
SLIDE 30

CoSc 450: Programming Paradigms 07

(reverse-onto '(a b c) '(1 2 3)) (c b a 1 2 3)

(define reverse-onto (lambda (lst1 lst2) (if (null? lst1) lst2 (reverse-onto (cdr lst1) (cons (car lst1) lst2)))))

What is the efficiency of reverse-onto?

Θ(n)

slide-31
SLIDE 31

CoSc 450: Programming Paradigms 07

;; Efficient version of reverse (define your-reverse (lambda (lst) (define reverse-onto (lambda (lst1 lst2) (if (null? lst1) lst2 (reverse-onto (cdr lst1) (cons (car lst1) lst2))))) (reverse-onto lst '())))

slide-32
SLIDE 32

CoSc 450: Programming Paradigms 07

;; Efficient version of reverse (define your-reverse (lambda (lst) (define reverse-onto (lambda (lst1 lst2) (if (null? lst1) lst2 (reverse-onto (cdr lst1) (cons (car lst1) lst2))))) (reverse-onto lst '())))

slide-33
SLIDE 33

CoSc 450: Programming Paradigms 07

;; Efficient version of reverse (define your-reverse (lambda (lst) (define reverse-onto (lambda (lst1 lst2) (if (null? lst1) lst2 (reverse-onto (cdr lst1) (cons (car lst1) lst2))))) (reverse-onto lst '())))

slide-34
SLIDE 34

CoSc 450: Programming Paradigms 07

;; Efficient version of reverse (define your-reverse (lambda (lst) (define reverse-onto (lambda (lst1 lst2) (if (null? lst1) lst2 (reverse-onto (cdr lst1) (cons (car lst1) lst2))))) (reverse-onto lst '())))

slide-35
SLIDE 35

CoSc 450: Programming Paradigms 07

(merge '(2 4 6 8) '(1 3 5 8 9)) (1 2 3 4 5 6 8 9)

slide-36
SLIDE 36

CoSc 450: Programming Paradigms 07

(merge '(2 4 6 8) '(1 3 5 8 9)) (1 2 3 4 5 6 8 9) (car ‘(2 4 6 8)) 2

slide-37
SLIDE 37

CoSc 450: Programming Paradigms 07

(merge '(2 4 6 8) '(1 3 5 8 9)) (1 2 3 4 5 6 8 9) (car ‘(2 4 6 8)) 2 (car ‘(1 3 5 8 9)) 1

slide-38
SLIDE 38

CoSc 450: Programming Paradigms 07

(merge '(2 4 6 8) '(1 3 5 8 9)) (1 2 3 4 5 6 8 9) (car ‘(2 4 6 8)) 2 (car ‘(1 3 5 8 9)) 1 (cdr ‘(1 3 5 8 9)) (3 5 8 9)

slide-39
SLIDE 39

CoSc 450: Programming Paradigms 07

(merge '(2 4 6 8) '(1 3 5 8 9)) (1 2 3 4 5 6 8 9) (car ‘(2 4 6 8)) 2 (car ‘(1 3 5 8 9)) 1 (cdr ‘(1 3 5 8 9)) (3 5 8 9) (merge '(2 4 6 8) '(3 5 8 9)) (2 3 4 5 6 8 9)

slide-40
SLIDE 40

CoSc 450: Programming Paradigms 07

(merge '(2 4 6 8) '(1 3 5 8 9)) (1 2 3 4 5 6 8 9) (car ‘(2 4 6 8)) 2 (car ‘(1 3 5 8 9)) 1 (cdr ‘(1 3 5 8 9)) (3 5 8 9) (merge '(2 4 6 8) '(3 5 8 9)) (2 3 4 5 6 8 9) 1

slide-41
SLIDE 41

CoSc 450: Programming Paradigms 07

(odd-part '(g i r a f f e)) (g r f e)

slide-42
SLIDE 42

CoSc 450: Programming Paradigms 07

(odd-part '(g i r a f f e)) (g r f e) (car ‘(g i r a f f e)) g

slide-43
SLIDE 43

CoSc 450: Programming Paradigms 07

(odd-part '(g i r a f f e)) (g r f e) (car ‘(g i r a f f e)) g (cdr ‘(g i r a f f e)) (i r a f f e)

slide-44
SLIDE 44

CoSc 450: Programming Paradigms 07

(odd-part '(g i r a f f e)) (g r f e) (car ‘(g i r a f f e)) g (cdr ‘(g i r a f f e)) (i r a f f e) (even-part ‘(i r a f f e)) (r f e)

slide-45
SLIDE 45

CoSc 450: Programming Paradigms 07

(odd-part '(g i r a f f e)) (g r f e) (car ‘(g i r a f f e)) g (cdr ‘(g i r a f f e)) (i r a f f e) (even-part ‘(i r a f f e)) (r f e) g

slide-46
SLIDE 46

CoSc 450: Programming Paradigms 07 A child at the county fair wins 5 tickets. The redemption store carries the following items, priced in tickets: a — apples, 3 tickets each

b — balls, 3 tickets each c — cookies, 2 tickets each d — dolls, 1 ticket each e — ear muffs, 1 ticket each

slide-47
SLIDE 47

CoSc 450: Programming Paradigms 07 A child at the county fair wins 5 tickets. The redemption store carries the following items, priced in tickets: a — apples, 3 tickets each

b — balls, 3 tickets each c — cookies, 2 tickets each d — dolls, 1 ticket each e — ear muffs, 1 ticket each

In how many ways can the child spend her tickets?

slide-48
SLIDE 48

CoSc 450: Programming Paradigms 07

a b c d e (3 3 2 1 1)

slide-49
SLIDE 49

CoSc 450: Programming Paradigms 07

a b c d e (3 3 2 1 1) ac add ade aee

slide-50
SLIDE 50

CoSc 450: Programming Paradigms 07

a b c d e (3 3 2 1 1) ac add ade aee bc bdd bde bee

slide-51
SLIDE 51

CoSc 450: Programming Paradigms 07

a b c d e (3 3 2 1 1) ac add ade aee ccd cce cddd cdde cdee ceee bc bdd bde bee

slide-52
SLIDE 52

CoSc 450: Programming Paradigms 07

a b c d e (3 3 2 1 1) ac add ade aee ccd cce cddd cdde cdee ceee ddddd dddde dddee ddeee deeee bc bdd bde bee

slide-53
SLIDE 53

CoSc 450: Programming Paradigms 07

a b c d e (3 3 2 1 1) ac add ade aee ccd cce cddd cdde cdee ceee ddddd dddde dddee ddeee deeee eeeee bc bdd bde bee

slide-54
SLIDE 54

CoSc 450: Programming Paradigms 07

a b c d e (3 3 2 1 1) ac add ade aee ccd cce cddd cdde cdee ceee ddddd dddde dddee ddeee deeee eeeee (count-combos ‘(3 3 2 1 1) 5) 20 bc bdd bde bee

slide-55
SLIDE 55

CoSc 450: Programming Paradigms 07

(count-combos ‘(3 3 2 1 1) 5)

slide-56
SLIDE 56

CoSc 450: Programming Paradigms 07

(count-combos ‘(3 3 2 1 1) 5)

Pick first item

slide-57
SLIDE 57

CoSc 450: Programming Paradigms 07

(count-combos ‘(3 3 2 1 1) 5) (count-combos ‘(3 3 2 1 1) 2)

Pick first item

slide-58
SLIDE 58

CoSc 450: Programming Paradigms 07

(count-combos ‘(3 3 2 1 1) 5) (count-combos ‘(3 3 2 1 1) 2)

Pick first item Do not pick first item

slide-59
SLIDE 59

CoSc 450: Programming Paradigms 07

(count-combos ‘(3 3 2 1 1) 5) (count-combos ‘(3 2 1 1) 5) (count-combos ‘(3 3 2 1 1) 2)

Pick first item Do not pick first item

slide-60
SLIDE 60

CoSc 450: Programming Paradigms 07

(33211)5

slide-61
SLIDE 61

CoSc 450: Programming Paradigms 07

(33211)5 (33211)2

slide-62
SLIDE 62

CoSc 450: Programming Paradigms 07

(33211)5 (33211)2 (33211)-1

slide-63
SLIDE 63

CoSc 450: Programming Paradigms 07

(33211)5 (33211)2 (33211)-1 (3211)2

slide-64
SLIDE 64

CoSc 450: Programming Paradigms 07

(33211)5 (33211)2 (33211)-1 (3211)2 (3211)-1

slide-65
SLIDE 65

CoSc 450: Programming Paradigms 07

(33211)5 (33211)2 (33211)-1 (3211)2 (3211)-1 (211)2

slide-66
SLIDE 66

CoSc 450: Programming Paradigms 07

(33211)5 (33211)2 (33211)-1 (3211)2 (3211)-1 (211)2 1 (211)0

slide-67
SLIDE 67

CoSc 450: Programming Paradigms 07

(33211)5 (33211)2 (33211)-1 (3211)2 (3211)-1 (211)2 1 (211)0 (11)2

slide-68
SLIDE 68

CoSc 450: Programming Paradigms 07

(33211)5 (33211)2 (33211)-1 (3211)2 (3211)-1 (211)2 1 (211)0 (11)2 (11)1

slide-69
SLIDE 69

CoSc 450: Programming Paradigms 07

(33211)5 (33211)2 (33211)-1 (3211)2 (3211)-1 (211)2 1 (211)0 (11)2 (11)1 1 (11)0

slide-70
SLIDE 70

CoSc 450: Programming Paradigms 07

(33211)5 (33211)2 (33211)-1 (3211)2 (3211)-1 (211)2 1 (211)0 (11)2 (11)1 1 (11)0 (1)1

slide-71
SLIDE 71

CoSc 450: Programming Paradigms 07

(33211)5 (33211)2 (33211)-1 (3211)2 (3211)-1 (211)2 1 (211)0 (11)2 (11)1 1 (11)0 (1)1 1 (1)0

slide-72
SLIDE 72

CoSc 450: Programming Paradigms 07

(33211)5 (33211)2 (33211)-1 (3211)2 (3211)-1 (211)2 1 (211)0 (11)2 (11)1 1 (11)0 (1)1 1 0 (1)0 ()1

slide-73
SLIDE 73

CoSc 450: Programming Paradigms 07

(33211)5 (33211)2 (33211)-1 (3211)2 (3211)-1 (211)2 1 (211)0 (11)2 (11)1 1 1 (11)0 (1)1 1 0 (1)0 ()1

slide-74
SLIDE 74

CoSc 450: Programming Paradigms 07

(33211)5 (33211)2 (33211)-1 (3211)2 (3211)-1 (211)2 1 (211)0 (11)2 2 (11)1 1 1 (11)0 (1)1 1 0 (1)0 ()1

slide-75
SLIDE 75

CoSc 450: Programming Paradigms 07

(33211)5 (33211)2 (33211)-1 (3211)2 (3211)-1 (211)2 1 (211)0 (11)2 2 1 (11)1 (1)2 1 1 (11)0 (1)1 1 0 (1)0 ()1

slide-76
SLIDE 76

CoSc 450: Programming Paradigms 07

(33211)5 (33211)2 (33211)-1 (3211)2 (3211)-1 (211)2 1 3 (211)0 (11)2 2 1 (11)1 (1)2 1 1 (11)0 (1)1 1 0 (1)0 ()1

slide-77
SLIDE 77

CoSc 450: Programming Paradigms 07

(33211)5 (33211)2 (33211)-1 (3211)2 0 4 (3211)-1 (211)2 1 3 (211)0 (11)2 2 1 (11)1 (1)2 1 1 (11)0 (1)1 1 0 (1)0 ()1

slide-78
SLIDE 78

CoSc 450: Programming Paradigms 07

(33211)5 (33211)2 0 4 (33211)-1 (3211)2 0 4 (3211)-1 (211)2 1 3 (211)0 (11)2 2 1 (11)1 (1)2 1 1 (11)0 (1)1 1 0 (1)0 ()1

slide-79
SLIDE 79

CoSc 450: Programming Paradigms 07

(33211)5 4 (33211)2 0 4 (33211)-1 (3211)2 0 4 (3211)-1 (211)2 1 3 (211)0 (11)2 2 1 (11)1 (1)2 1 1 (11)0 (1)1 1 0 (1)0 ()1

slide-80
SLIDE 80

CoSc 450: Programming Paradigms 07

(33211)5 4 (33211)2 (3211)5 0 4 (33211)-1 (3211)2 0 4 (3211)-1 (211)2 1 3 (211)0 (11)2 2 1 (11)1 (1)2 1 1 (11)0 (1)1 1 0 (1)0 ()1

slide-81
SLIDE 81

CoSc 450: Programming Paradigms 07

(33211)5 4 16 (33211)2 (3211)5 0 4 (33211)-1 (3211)2 0 4 (3211)-1 (211)2 1 3 (211)0 (11)2 2 1 (11)1 (1)2 1 1 (11)0 (1)1 1 0 (1)0 ()1

slide-82
SLIDE 82

CoSc 450: Programming Paradigms 07

(define count-combos (lambda (prize-list amount) . . . (+ (count-combos prize-list (- amount (car prize-list))) (count-combos (cdr prize-list) amount))))

(count-combos ‘(3 3 2 1 1) 5)

slide-83
SLIDE 83

CoSc 450: Programming Paradigms 07

(define count-combos (lambda (prize-list amount) . . . (+ (count-combos prize-list (- amount (car prize-list))) (count-combos (cdr prize-list) amount))))

(count-combos ‘(3 3 2 1 1) 5)

slide-84
SLIDE 84

CoSc 450: Programming Paradigms 07

(define count-combos (lambda (prize-list amount) . . . (+ (count-combos prize-list (- amount (car prize-list))) (count-combos (cdr prize-list) amount))))

(count-combos ‘(3 3 2 1 1) 5)

slide-85
SLIDE 85

CoSc 450: Programming Paradigms 07

(define count-combos (lambda (prize-list amount) . . . (+ (count-combos prize-list (- amount (car prize-list))) (count-combos (cdr prize-list) amount))))

(count-combos ‘(3 3 2 1 1) 5)