Я пытаюсь создать небольшую программу поиска текста, похожую на человеческую, по схеме
, но время от времени эта программа не работает должным образом
, и я не могу уловить ошибку в течение многих часов
Может кто-нибудь сказать мне, что не так с моим кодом?
и разве это не очень хорошая идея для поиска текста?
, когда я ищу строку "exp" в текстевозникает файл, который не содержит ничего, кроме строки «explorer», и сообщает Found 0
(define (search str)
(set! count 0)
(define len (length str))
;null character calculating
(define data-len (- (length data) 1))
;when string length is less than or equal to data-length
(when (and (not (= 0 len)) (>= data-len len))
(define first-char (first str))
(define last-char (last str))
;is it correct?
(define (exact? str len index)
(if (equal? str (drop (take data (+ index len)) index))
#t
#f))
;check first and last character of string if correct, check whether this string is correct completely, if so, skip to next index
(define (loop [index 0])
(when (> data-len index)
(if (and (equal? first-char (list-ref data index))
(equal? last-char (list-ref data (+ index len -1))))
(when (exact? str len index)
(set! count (+ count 1))
(loop (+ index len)))
(loop (+ index 1)))))
(loop))
(send msg set-label (format "Found : ~a" count)))