Blame


1 12687dd9 2023-08-04 jrmu ;; The first three lines of this file were inserted by DrScheme. They record metadata
2 12687dd9 2023-08-04 jrmu ;; about the language level of this file in a form that our tools can easily process.
3 12687dd9 2023-08-04 jrmu #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 12687dd9 2023-08-04 jrmu ;A list-of-symbols is either
5 12687dd9 2023-08-04 jrmu ;1. empty or
6 12687dd9 2023-08-04 jrmu ;2. (cons s los)
7 12687dd9 2023-08-04 jrmu ;where s is a one-letter symbol and los is a list-of-symbols.
8 12687dd9 2023-08-04 jrmu ;
9 12687dd9 2023-08-04 jrmu ;DNAprefix : list-of-symbols list-of-symbols -> boolean
10 12687dd9 2023-08-04 jrmu ;Given pattern and search-string, determine if pattern is a prefix in search-string.
11 12687dd9 2023-08-04 jrmu
12 12687dd9 2023-08-04 jrmu ;(define (DNAprefix pattern search-string)
13 12687dd9 2023-08-04 jrmu ; (cond
14 12687dd9 2023-08-04 jrmu ; [(> (length pattern) (length search-string)) false]
15 12687dd9 2023-08-04 jrmu ; [(empty? pattern) true]
16 12687dd9 2023-08-04 jrmu ; [else (and (symbol=? (first pattern)
17 12687dd9 2023-08-04 jrmu ; (first search-string))
18 12687dd9 2023-08-04 jrmu ; (DNAprefix (rest pattern) (rest search-string)))]))
19 12687dd9 2023-08-04 jrmu
20 12687dd9 2023-08-04 jrmu ;(define (DNAprefix pattern search-string)
21 12687dd9 2023-08-04 jrmu ; (cond
22 12687dd9 2023-08-04 jrmu ; [(and (empty? pattern)
23 12687dd9 2023-08-04 jrmu ; (empty? search-string)) true]
24 12687dd9 2023-08-04 jrmu ; [(and (empty? pattern)
25 12687dd9 2023-08-04 jrmu ; (cons? search-string)) true]
26 12687dd9 2023-08-04 jrmu ; [(and (cons? pattern)
27 12687dd9 2023-08-04 jrmu ; (empty? search-string)) false]
28 12687dd9 2023-08-04 jrmu ; [(and (cons? pattern)
29 12687dd9 2023-08-04 jrmu ; (cons? search-string)) (and (symbol=? (first pattern) (first search-string))
30 12687dd9 2023-08-04 jrmu ; (DNAprefix (rest pattern) (rest search-string)))]))
31 12687dd9 2023-08-04 jrmu
32 12687dd9 2023-08-04 jrmu (define (DNAprefix pattern search-string)
33 12687dd9 2023-08-04 jrmu (cond
34 12687dd9 2023-08-04 jrmu [(empty? pattern) true]
35 12687dd9 2023-08-04 jrmu [(empty? search-string) false]
36 12687dd9 2023-08-04 jrmu [else (and (symbol=? (first pattern) (first search-string))
37 12687dd9 2023-08-04 jrmu (DNAprefix (rest pattern) (rest search-string)))]))
38 12687dd9 2023-08-04 jrmu
39 12687dd9 2023-08-04 jrmu ;properDNAprefix : list-of-symbols list-of-symbols -> symbol/boolean
40 12687dd9 2023-08-04 jrmu ;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.
41 12687dd9 2023-08-04 jrmu
42 12687dd9 2023-08-04 jrmu ;(define (properDNAprefix pattern search-string)
43 12687dd9 2023-08-04 jrmu ; (cond
44 12687dd9 2023-08-04 jrmu ; [(> (length pattern) (length search-string)) false]
45 12687dd9 2023-08-04 jrmu ; [(empty? pattern)
46 12687dd9 2023-08-04 jrmu ; (cond
47 12687dd9 2023-08-04 jrmu ; [(empty? search-string) true]
48 12687dd9 2023-08-04 jrmu ; [else (first search-string)])]
49 12687dd9 2023-08-04 jrmu ; [else
50 12687dd9 2023-08-04 jrmu ; (cond
51 12687dd9 2023-08-04 jrmu ; [(symbol=? (first pattern)
52 12687dd9 2023-08-04 jrmu ; (first search-string))
53 12687dd9 2023-08-04 jrmu ; (properDNAprefix (rest pattern) (rest search-string))]
54 12687dd9 2023-08-04 jrmu ; [else false])]))
55 12687dd9 2023-08-04 jrmu
56 12687dd9 2023-08-04 jrmu (define (properDNAprefix pattern search-string)
57 12687dd9 2023-08-04 jrmu (cond
58 12687dd9 2023-08-04 jrmu [(and (empty? pattern)
59 12687dd9 2023-08-04 jrmu (empty? search-string)) true]
60 12687dd9 2023-08-04 jrmu [(and (empty? pattern)
61 12687dd9 2023-08-04 jrmu (cons? search-string)) (first search-string)]
62 12687dd9 2023-08-04 jrmu [(and (cons? search-string)
63 12687dd9 2023-08-04 jrmu (symbol=? (first pattern) (first search-string)))
64 12687dd9 2023-08-04 jrmu (properDNAprefix (rest pattern) (rest search-string))]
65 12687dd9 2023-08-04 jrmu [else false]))
66 12687dd9 2023-08-04 jrmu
67 12687dd9 2023-08-04 jrmu (properDNAprefix empty empty)
68 12687dd9 2023-08-04 jrmu (properDNAprefix empty '(a))
69 12687dd9 2023-08-04 jrmu (properDNAprefix '(a) empty)
70 12687dd9 2023-08-04 jrmu (properDNAprefix '(a) '(a))
71 12687dd9 2023-08-04 jrmu (properDNAprefix '(a) '(a b))