Blob


1 ;; The first three lines of this file were inserted by DrScheme. They record metadata
2 ;; about the language level of this file in a form that our tools can easily process.
3 #reader(lib "htdp-intermediate-reader.ss" "lang")((modname 17.6.6) (read-case-sensitive #t) (teachpacks ((lib "draw.ss" "teachpack" "htdp") (lib "arrow.ss" "teachpack" "htdp") (lib "dir.ss" "teachpack" "htdp") (lib "hangman.ss" "teachpack" "htdp"))) (htdp-settings #(#t constructor repeating-decimal #f #t none #f ((lib "draw.ss" "teachpack" "htdp") (lib "arrow.ss" "teachpack" "htdp") (lib "dir.ss" "teachpack" "htdp") (lib "hangman.ss" "teachpack" "htdp")))))
4 ;A list-of-symbols is either
5 ;1. empty or
6 ;2. (cons s los)
7 ;where s is a one-letter symbol and los is a list-of-symbols.
8 ;
9 ;DNAprefix : list-of-symbols list-of-symbols -> boolean
10 ;Given pattern and search-string, determine if pattern is a prefix in search-string.
12 ;(define (DNAprefix pattern search-string)
13 ; (cond
14 ; [(> (length pattern) (length search-string)) false]
15 ; [(empty? pattern) true]
16 ; [else (and (symbol=? (first pattern)
17 ; (first search-string))
18 ; (DNAprefix (rest pattern) (rest search-string)))]))
20 ;(define (DNAprefix pattern search-string)
21 ; (cond
22 ; [(and (empty? pattern)
23 ; (empty? search-string)) true]
24 ; [(and (empty? pattern)
25 ; (cons? search-string)) true]
26 ; [(and (cons? pattern)
27 ; (empty? search-string)) false]
28 ; [(and (cons? pattern)
29 ; (cons? search-string)) (and (symbol=? (first pattern) (first search-string))
30 ; (DNAprefix (rest pattern) (rest search-string)))]))
32 (define (DNAprefix pattern search-string)
33 (cond
34 [(empty? pattern) true]
35 [(empty? search-string) false]
36 [else (and (symbol=? (first pattern) (first search-string))
37 (DNAprefix (rest pattern) (rest search-string)))]))
39 ;properDNAprefix : list-of-symbols list-of-symbols -> symbol/boolean
40 ;Given pattern and search-string, return the first symbol in search-string right after pattern if pattern is a proper prefix of search-string. However, if pattern and search-string are identical lists, then simply return true. If pattern is not a prefix, return false.
42 ;(define (properDNAprefix pattern search-string)
43 ; (cond
44 ; [(> (length pattern) (length search-string)) false]
45 ; [(empty? pattern)
46 ; (cond
47 ; [(empty? search-string) true]
48 ; [else (first search-string)])]
49 ; [else
50 ; (cond
51 ; [(symbol=? (first pattern)
52 ; (first search-string))
53 ; (properDNAprefix (rest pattern) (rest search-string))]
54 ; [else false])]))
56 (define (properDNAprefix pattern search-string)
57 (cond
58 [(and (empty? pattern)
59 (empty? search-string)) true]
60 [(and (empty? pattern)
61 (cons? search-string)) (first search-string)]
62 [(and (cons? search-string)
63 (symbol=? (first pattern) (first search-string)))
64 (properDNAprefix (rest pattern) (rest search-string))]
65 [else false]))
67 (properDNAprefix empty empty)
68 (properDNAprefix empty '(a))
69 (properDNAprefix '(a) empty)
70 (properDNAprefix '(a) '(a))
71 (properDNAprefix '(a) '(a b))