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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
#ifndef BONUS_H
#define BONUS_H BONUS_H
#include "../config.h"
const score_t bonus_states[3][256] = {
{ 0 },
{
['/'] = SCORE_MATCH_SLASH,
['-'] = SCORE_MATCH_WORD,
['_'] = SCORE_MATCH_WORD,
[' '] = SCORE_MATCH_WORD,
['.'] = SCORE_MATCH_DOT,
},
{
['/'] = SCORE_MATCH_SLASH,
['-'] = SCORE_MATCH_WORD,
['_'] = SCORE_MATCH_WORD,
[' '] = SCORE_MATCH_WORD,
['.'] = SCORE_MATCH_DOT,
/* ['a' ... 'z'] = SCORE_MATCH_CAPITAL, */
['a'] = SCORE_MATCH_CAPITAL,
['b'] = SCORE_MATCH_CAPITAL,
['c'] = SCORE_MATCH_CAPITAL,
['d'] = SCORE_MATCH_CAPITAL,
['e'] = SCORE_MATCH_CAPITAL,
['f'] = SCORE_MATCH_CAPITAL,
['g'] = SCORE_MATCH_CAPITAL,
['h'] = SCORE_MATCH_CAPITAL,
['i'] = SCORE_MATCH_CAPITAL,
['j'] = SCORE_MATCH_CAPITAL,
['k'] = SCORE_MATCH_CAPITAL,
['l'] = SCORE_MATCH_CAPITAL,
['m'] = SCORE_MATCH_CAPITAL,
['n'] = SCORE_MATCH_CAPITAL,
['o'] = SCORE_MATCH_CAPITAL,
['p'] = SCORE_MATCH_CAPITAL,
['q'] = SCORE_MATCH_CAPITAL,
['r'] = SCORE_MATCH_CAPITAL,
['s'] = SCORE_MATCH_CAPITAL,
['t'] = SCORE_MATCH_CAPITAL,
['u'] = SCORE_MATCH_CAPITAL,
['v'] = SCORE_MATCH_CAPITAL,
['w'] = SCORE_MATCH_CAPITAL,
['x'] = SCORE_MATCH_CAPITAL,
['y'] = SCORE_MATCH_CAPITAL,
['z'] = SCORE_MATCH_CAPITAL,
},
};
const size_t bonus_index[256] = {
/* ['A' ... 'Z'] = 2 */
['A'] = 2,
['B'] = 2,
['C'] = 2,
['D'] = 2,
['E'] = 2,
['F'] = 2,
['G'] = 2,
['H'] = 2,
['I'] = 2,
['J'] = 2,
['K'] = 2,
['L'] = 2,
['M'] = 2,
['N'] = 2,
['O'] = 2,
['P'] = 2,
['Q'] = 2,
['R'] = 2,
['S'] = 2,
['T'] = 2,
['U'] = 2,
['V'] = 2,
['W'] = 2,
['X'] = 2,
['Y'] = 2,
['Z'] = 2,
/* ['a' ... 'z'] = 1 */
['a'] = 1,
['b'] = 1,
['c'] = 1,
['d'] = 1,
['e'] = 1,
['f'] = 1,
['g'] = 1,
['h'] = 1,
['i'] = 1,
['j'] = 1,
['k'] = 1,
['l'] = 1,
['m'] = 1,
['n'] = 1,
['o'] = 1,
['p'] = 1,
['q'] = 1,
['r'] = 1,
['s'] = 1,
['t'] = 1,
['u'] = 1,
['v'] = 1,
['w'] = 1,
['x'] = 1,
['y'] = 1,
['z'] = 1,
/* ['0' ... '9'] = 1 */
['0'] = 1,
['1'] = 1,
['2'] = 1,
['3'] = 1,
['4'] = 1,
['5'] = 1,
['6'] = 1,
['7'] = 1,
['8'] = 1,
['9'] = 1
};
#define COMPUTE_BONUS(last_ch, ch) (bonus_states[bonus_index[(size_t)(ch)]][(size_t)(last_ch)])
#endif
|