Data update
This commit is contained in:
parent
35bcdeebf8
commit
74c69a0df6
2427 changed files with 31826 additions and 3468 deletions
|
|
@ -0,0 +1,103 @@
|
|||
case_insensitive = false
|
||||
|
||||
sub preBmBc(pat$)
|
||||
local m, i
|
||||
|
||||
m = len(pat$)
|
||||
redim bmBc(m)
|
||||
for i = 1 to m-1
|
||||
bmBc(val(mid$(pat$, i, 1))) = m - i
|
||||
next
|
||||
end sub
|
||||
|
||||
sub suffixes(pat$)
|
||||
local m, g, i, f
|
||||
|
||||
m = len(pat$)
|
||||
g = m
|
||||
redim suff(m)
|
||||
suff(m) = m
|
||||
for i = m-1 to 1 step -1
|
||||
if i > g and suff(i + m - f) < i - g then
|
||||
suff(i) = suff(i + m - f)
|
||||
else
|
||||
if i < g g = i
|
||||
f = i
|
||||
while g >= 1 and mid$(pat$, g, 1) = mid$(pat$, g + m - f, 1)
|
||||
g = q - 1
|
||||
wend
|
||||
suff(i) = f - g
|
||||
fi
|
||||
next
|
||||
end sub
|
||||
|
||||
sub preBmGs(pat$)
|
||||
local m, j, i
|
||||
|
||||
m = len(pat$)
|
||||
j = 1
|
||||
redim suff(m)
|
||||
redim bmGs(m)
|
||||
for i = m to 1 step -1
|
||||
if suff(i) = i then
|
||||
while j < m - i
|
||||
if bmGs(j) = m bmGs(j) = m - i
|
||||
j = j + 1
|
||||
wend
|
||||
fi
|
||||
next
|
||||
for i = 1 to m-1
|
||||
bmGs(m - suff(i)) = m - i
|
||||
next
|
||||
end sub
|
||||
|
||||
sub BM(pat$, s$, case_insensitive)
|
||||
local pins
|
||||
|
||||
pins$ = "'" + pat$ + "' in " + "'" + s$ + "'"
|
||||
if case_insensitive then
|
||||
pat$ = lower$(pat$)
|
||||
s$ = lower$(s$)
|
||||
fi
|
||||
|
||||
//* Preprocessing *//
|
||||
preBmGs(pat$)
|
||||
preBmBc(pat$)
|
||||
|
||||
//* Searching *//
|
||||
j = 0
|
||||
n = len(s$)
|
||||
m = len(pat$)
|
||||
i = m
|
||||
|
||||
while j <= n - m
|
||||
i = i - 1
|
||||
if mid$(pat$,i,1) <> mid$(s$,i+j,1) break
|
||||
|
||||
if i < 1 then j = j + bmGs(0) else j = j + max(bmGs(i), bmBc(len(mid$(s$,i+j,1)) - m + i)) : fi
|
||||
wend
|
||||
|
||||
many = instr(s$, pat$)
|
||||
tmp$ = ""
|
||||
|
||||
if not many > 0 then
|
||||
print "No ", pins$
|
||||
else
|
||||
while many > 0 //if not found loop will be skipped
|
||||
tmp$ = tmp$ + str$(many) + ","
|
||||
many = instr(s$, pat$, many + 1)
|
||||
wend
|
||||
print "Found ", pins$, " at indices [", tmp$, chr$(8), "]"
|
||||
fi
|
||||
end sub
|
||||
|
||||
BM("GCAGAGAG","GCATCGCAGAGAGTATACAGTACG")
|
||||
BM("TCTA","GCTAGCTCTACGAGTCTA")
|
||||
BM("TAATAAA","GGCTATAATGCGTA")
|
||||
BM("word","there would have been a time for such a word")
|
||||
BM("needle","needle need noodle needle")
|
||||
book$ = "InhisbookseriesTheArtofComputerProgrammingpublishedbyAddisonWesleyDKnuthusesanimaginarycomputertheMIXanditsassociatedmachinecodeandassemblylanguagestoillustratetheconceptsandalgorithmsastheyarepresented"
|
||||
BM("put",book$)
|
||||
BM("and",book$)
|
||||
farm$ = "Nearby farms grew a half acre of alfalfa on the dairy's behalf, with bales of all that alfalfa exchanged for milk."
|
||||
BM("alfalfa",farm$)
|
||||
Loading…
Add table
Add a link
Reference in a new issue