'a'
mh-two-thousand-and-two
2024-04-12 44d2c92345cd156a59fc327b3060292a282d2893
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
//boyer-moore?
module.exports = function bm(buf,search,offset){
  var m  = 0, j = 0
  var table = []
 
  var ret = -1;
  for(var i=offset||0;i<buf.length;++i){
    console.log('i',i)
 
    table[i] = [[i,0]]
    if(buf[i] === search[0]) {
      for(j = search.length-1;j>0;--j){
        table[i].push([i+j,j])
        console.log('j',j)
        if(buf[i+j] !== search[j]) {
 
          //i += j
          j = -1
          break
        }
      }
      if(j === 0) {
        ret = i
        break
      }
    }
  }
 
  console.log(table)
  renderTable(table,buf,search)
  return ret
}
 
 
var chalk = require('chalk')
function renderTable(table,buf,search){
  var s = ''
 
  console.log('-----')
  console.log('search:',search)
  console.log('-----')
  console.log(buf+'')
 
  table.forEach(function(a){
    if(!a) return;// console.log('')
    a.forEach(function(v){
      if(!v) return;
      var pad = ''
      while(pad.length < v[0]){
        pad += ' '
      }
      if(search[v[1]] === buf[v[0]]) console.log(pad+chalk.green(search[v[1]]))
      else console.log(pad+chalk.red(search[v[1]]))
 
    })
  })
  console.log('-----')
}