69 |
|
|
70 |
(defun make-random-string-compare-test (n) |
(defun make-random-string-compare-test (n) |
71 |
(let* ((len (random n)) |
(let* ((len (random n)) |
72 |
;; Lengths of the two strings |
;; Maximum lengths of the two strings |
73 |
(len1 (if (or (coin) (= len 0)) len (+ len (random len)))) |
(len1 (if (or (coin) (= len 0)) len (+ len (random len)))) |
74 |
(len2 (if (or (coin) (= len 0)) len (+ len (random len)))) |
(len2 (if (or (coin) (= len 0)) len (+ len (random len)))) |
75 |
|
(s1 (make-random-string len1)) |
76 |
|
(s2 (make-random-string len2)) |
77 |
|
;; Actual lengths of the strings |
78 |
|
(len1 (length s1)) |
79 |
|
(len2 (length s2)) |
80 |
;; Lengths of the parts of the strings to be matched |
;; Lengths of the parts of the strings to be matched |
81 |
(sublen1 (if (or (coin) (= len1 0)) (min len1 len2) (random len1))) |
(sublen1 (if (or (coin) (= len1 0)) (min len1 len2) (random len1))) |
82 |
(sublen2 (if (or (coin) (= len2 0)) (min len2 sublen1) (random len2))) |
(sublen2 (if (or (coin) (= len2 0)) (min len2 sublen1) (random len2))) |
88 |
(start2 (if (coin 3) 0 |
(start2 (if (coin 3) 0 |
89 |
(max 0 (min (1- len2) (random (- len2 sublen2 -1)))))) |
(max 0 (min (1- len2) (random (- len2 sublen2 -1)))))) |
90 |
(end2 (+ start2 sublen2)) |
(end2 (+ start2 sublen2)) |
91 |
;; generate the strings |
) |
|
(s1 (make-random-string len1)) |
|
|
(s2 (make-random-string len2))) |
|
92 |
#| |
#| |
93 |
(format t "len = ~A, len1 = ~A, len2 = ~A, sublen1 = ~A, sublen2 = ~A~%" |
(format t "len = ~A, len1 = ~A, len2 = ~A, sublen1 = ~A, sublen2 = ~A~%" |
94 |
len len1 len2 sublen1 sublen2) |
len len1 len2 sublen1 sublen2) |