1 | #include "muscle.h" |
---|
2 | #include "gonnet.h" |
---|
3 | |
---|
4 | #define ROW(A, C, D, E, F, G, H, I, K, L, M, N, P, Q, R, S, T, V, W, Y) \ |
---|
5 | { A/4.0, C/4.0, D/4.0, E/4.0, F/4.0, G/4.0, H/4.0, I/4.0, K/4.0, L/4.0, M/4.0, N/4.0, P/4.0, Q/4.0, R/4.0, S/4.0, T/4.0, V/4.0, W/4.0, Y/4.0 }, |
---|
6 | |
---|
7 | static double Gonnet80[20][20] = |
---|
8 | { |
---|
9 | // A C D E F G H I K L |
---|
10 | // M N P Q R S T V W Y |
---|
11 | ROW( 1990, 1140, 930, 1070, 600, 1130, 850, 810, 940, 810, |
---|
12 | 980, 900, 1080, 1020, 880, 1380, 1190, 1180, 370, 590) // A |
---|
13 | |
---|
14 | ROW( 1140, 2780, 310, 300, 850, 630, 810, 700, 360, 690, |
---|
15 | 850, 690, 310, 480, 640, 1090, 900, 1030, 810, 920) // C |
---|
16 | |
---|
17 | ROW( 930, 310, 2200, 1550, 130, 980, 1070, 180, 1030, 150, |
---|
18 | 360, 1450, 820, 1150, 800, 1100, 1000, 350, 0, 550) // D |
---|
19 | |
---|
20 | ROW( 1070, 300, 1550, 2120, 220, 770, 1070, 510, 1280, 490, |
---|
21 | 710, 1110, 890, 1470, 1010, 1050, 970, 730, 260, 500) // E |
---|
22 | |
---|
23 | ROW( 600, 850, 130, 220, 2380, 90, 980, 1090, 350, 1310, |
---|
24 | 1270, 490, 310, 540, 340, 470, 620, 930, 1400, 1730) // F |
---|
25 | |
---|
26 | ROW( 1130, 630, 980, 770, 90, 2210, 710, 100, 740, 200, |
---|
27 | 410, 1060, 660, 800, 810, 1080, 720, 380, 430, 300) // G |
---|
28 | |
---|
29 | ROW( 850, 810, 1070, 1070, 980, 710, 2510, 600, 1120, 670, |
---|
30 | 860, 1330, 790, 1380, 1140, 990, 1000, 590, 810, 1450) // H |
---|
31 | |
---|
32 | ROW( 810, 700, 180, 510, 1090, 100, 600, 2100, 650, 1460, |
---|
33 | 1490, 530, 490, 640, 530, 620, 960, 1650, 610, 770) // I |
---|
34 | |
---|
35 | ROW( 940, 360, 1030, 1280, 350, 740, 1120, 650, 2090, 660, |
---|
36 | 870, 1220, 870, 1410, 1570, 1040, 1090, 700, 350, 640) // K |
---|
37 | |
---|
38 | ROW( 810, 690, 150, 490, 1310, 200, 670, 1460, 660, 2010, |
---|
39 | 1550, 450, 660, 850, 660, 600, 750, 1270, 800, 890) // L |
---|
40 | |
---|
41 | ROW( 980, 850, 360, 710, 1270, 410, 860, 1490, 870, 1550, |
---|
42 | 2410, 620, 460, 1050, 710, 830, 990, 1250, 790, 870) // M |
---|
43 | |
---|
44 | ROW( 900, 690, 1450, 1110, 490, 1060, 1330, 530, 1220, 450, |
---|
45 | 620, 2210, 760, 1180, 1020, 1290, 1170, 550, 380, 850) // N |
---|
46 | |
---|
47 | ROW( 1080, 310, 820, 890, 310, 660, 790, 490, 870, 660, |
---|
48 | 460, 760, 2380, 1000, 790, 1100, 1040, 670, 120, 480) // P |
---|
49 | |
---|
50 | ROW( 1020, 480, 1150, 1470, 540, 800, 1380, 640, 1410, 850, |
---|
51 | 1050, 1180, 1000, 2190, 1350, 1090, 1060, 730, 620, 710) // Q |
---|
52 | |
---|
53 | ROW( 880, 640, 800, 1010, 340, 810, 1140, 530, 1570, 660, |
---|
54 | 710, 1020, 790, 1350, 2210, 970, 970, 640, 830, 740) // R |
---|
55 | |
---|
56 | ROW( 1380, 1090, 1100, 1050, 470, 1080, 990, 620, 1040, 600, |
---|
57 | 830, 1290, 1100, 1090, 970, 2020, 1490, 810, 520, 780) // S |
---|
58 | |
---|
59 | ROW( 1190, 900, 1000, 970, 620, 720, 1000, 960, 1090, 750, |
---|
60 | 990, 1170, 1040, 1060, 970, 1490, 2050, 1150, 370, 660) // T |
---|
61 | |
---|
62 | ROW( 1180, 1030, 350, 730, 930, 380, 590, 1650, 700, 1270, |
---|
63 | 1250, 550, 670, 730, 640, 810, 1150, 2040, 440, 770) // V |
---|
64 | |
---|
65 | ROW( 370, 810, 0, 260, 1400, 430, 810, 610, 350, 800, |
---|
66 | 790, 380, 120, 620, 830, 520, 370, 440, 2970, 1470) // W |
---|
67 | |
---|
68 | ROW( 590, 920, 550, 500, 1730, 300, 1450, 770, 640, 890, |
---|
69 | 870, 850, 480, 710, 740, 780, 660, 770, 1470, 2470) // Y |
---|
70 | }; |
---|
71 | |
---|
72 | static double Gonnet120[20][20] = |
---|
73 | { |
---|
74 | // A C D E F G H I K L |
---|
75 | // M N P Q R S T V W Y |
---|
76 | ROW( 1550, 950, 780, 870, 480, 930, 700, 690, 770, 660, |
---|
77 | 790, 760, 900, 840, 730, 1120, 980, 960, 280, 480) // A |
---|
78 | |
---|
79 | ROW( 950, 2400, 270, 280, 700, 510, 650, 600, 320, 570, |
---|
80 | 700, 550, 280, 400, 510, 890, 750, 850, 670, 760) // C |
---|
81 | |
---|
82 | ROW( 780, 270, 1780, 1310, 90, 820, 890, 160, 880, 140, |
---|
83 | 320, 1220, 680, 970, 690, 910, 830, 310, 0, 430) // D |
---|
84 | |
---|
85 | ROW( 870, 280, 1310, 1680, 180, 650, 900, 410, 1070, 390, |
---|
86 | 560, 950, 740, 1210, 860, 870, 810, 580, 180, 400) // E |
---|
87 | |
---|
88 | ROW( 480, 700, 90, 180, 1980, 40, 820, 930, 290, 1110, |
---|
89 | 1070, 380, 240, 430, 280, 380, 490, 790, 1230, 1510) // F |
---|
90 | |
---|
91 | ROW( 930, 510, 820, 650, 40, 1860, 590, 90, 620, 140, |
---|
92 | 310, 890, 550, 660, 660, 900, 610, 310, 300, 220) // G |
---|
93 | |
---|
94 | ROW( 700, 650, 890, 900, 820, 590, 2060, 480, 940, 540, |
---|
95 | 680, 1100, 650, 1130, 950, 820, 820, 490, 680, 1220) // H |
---|
96 | |
---|
97 | ROW( 690, 600, 160, 410, 930, 90, 480, 1680, 520, 1240, |
---|
98 | 1250, 410, 400, 530, 430, 520, 790, 1380, 500, 650) // I |
---|
99 | |
---|
100 | ROW( 770, 320, 880, 1070, 290, 620, 940, 520, 1650, 520, |
---|
101 | 690, 1010, 720, 1160, 1320, 860, 900, 570, 280, 520) // K |
---|
102 | |
---|
103 | ROW( 660, 570, 140, 390, 1110, 140, 540, 1240, 520, 1620, |
---|
104 | 1300, 350, 520, 660, 520, 490, 620, 1090, 670, 760) // L |
---|
105 | |
---|
106 | ROW( 790, 700, 320, 560, 1070, 310, 680, 1250, 690, 1300, |
---|
107 | 1910, 500, 400, 820, 580, 670, 800, 1060, 650, 740) // M |
---|
108 | |
---|
109 | ROW( 760, 550, 1220, 950, 380, 890, 1100, 410, 1010, 350, |
---|
110 | 500, 1760, 640, 970, 860, 1060, 960, 460, 280, 680) // N |
---|
111 | |
---|
112 | ROW( 900, 280, 680, 740, 240, 550, 650, 400, 720, 520, |
---|
113 | 400, 640, 2010, 820, 660, 910, 860, 540, 70, 370) // P |
---|
114 | |
---|
115 | ROW( 840, 400, 970, 1210, 430, 660, 1130, 530, 1160, 660, |
---|
116 | 820, 970, 820, 1700, 1120, 890, 870, 600, 470, 580) // Q |
---|
117 | |
---|
118 | ROW( 730, 510, 690, 860, 280, 660, 950, 430, 1320, 520, |
---|
119 | 580, 860, 660, 1120, 1790, 810, 800, 520, 660, 590) // R |
---|
120 | |
---|
121 | ROW( 1120, 890, 910, 870, 380, 900, 820, 520, 860, 490, |
---|
122 | 670, 1060, 910, 890, 810, 1560, 1220, 680, 390, 610) // S |
---|
123 | |
---|
124 | ROW( 980, 750, 830, 810, 490, 610, 820, 790, 900, 620, |
---|
125 | 800, 960, 860, 870, 800, 1220, 1600, 930, 290, 540) // T |
---|
126 | |
---|
127 | ROW( 960, 850, 310, 580, 790, 310, 490, 1380, 570, 1090, |
---|
128 | 1060, 460, 540, 600, 520, 680, 930, 1610, 370, 630) // V |
---|
129 | |
---|
130 | ROW( 280, 670, 0, 180, 1230, 300, 680, 500, 280, 670, |
---|
131 | 650, 280, 70, 470, 660, 390, 290, 370, 2620, 1290) // W |
---|
132 | |
---|
133 | ROW( 480, 760, 430, 400, 1510, 220, 1220, 650, 520, 760, |
---|
134 | 740, 680, 370, 580, 590, 610, 540, 630, 1290, 2070) // Y |
---|
135 | }; |
---|
136 | |
---|
137 | static SCORE Gonnet160[20][20] = |
---|
138 | { |
---|
139 | // A C D E F G H I K L |
---|
140 | // M N P Q R S T V W Y |
---|
141 | ROW( 1240, 810, 670, 740, 400, 800, 600, 600, 660, 560, |
---|
142 | 660, 660, 770, 710, 620, 940, 830, 790, 230, 410) // A |
---|
143 | |
---|
144 | ROW( 810, 2130, 250, 260, 600, 440, 550, 530, 300, 490, |
---|
145 | 590, 470, 260, 360, 430, 760, 640, 720, 570, 650) // C |
---|
146 | |
---|
147 | ROW( 670, 250, 1480, 1120, 80, 710, 770, 160, 770, 130, |
---|
148 | 280, 1040, 590, 840, 620, 780, 720, 290, 0, 360) // D |
---|
149 | |
---|
150 | ROW( 740, 260, 1120, 1370, 160, 570, 770, 350, 910, 330, |
---|
151 | 470, 830, 640, 1010, 750, 750, 700, 480, 140, 340) // E |
---|
152 | |
---|
153 | ROW( 400, 600, 80, 160, 1690, 20, 710, 810, 250, 970, |
---|
154 | 920, 310, 200, 370, 250, 330, 420, 700, 1100, 1340) // F |
---|
155 | |
---|
156 | ROW( 800, 440, 710, 570, 20, 1600, 510, 80, 540, 110, |
---|
157 | 260, 760, 480, 570, 570, 770, 540, 260, 230, 180) // G |
---|
158 | |
---|
159 | ROW( 600, 550, 770, 770, 710, 510, 1710, 410, 800, 460, |
---|
160 | 570, 930, 560, 950, 810, 700, 700, 430, 590, 1050) // H |
---|
161 | |
---|
162 | ROW( 600, 530, 160, 350, 810, 80, 410, 1370, 430, 1080, |
---|
163 | 1070, 340, 350, 460, 370, 450, 660, 1180, 440, 580) // I |
---|
164 | |
---|
165 | ROW( 660, 300, 770, 910, 250, 540, 800, 430, 1330, 440, |
---|
166 | 570, 860, 620, 980, 1130, 740, 760, 480, 240, 430) // K |
---|
167 | |
---|
168 | ROW( 560, 490, 130, 330, 970, 110, 460, 1080, 440, 1350, |
---|
169 | 1120, 300, 430, 540, 430, 420, 540, 950, 580, 670) // L |
---|
170 | |
---|
171 | ROW( 660, 590, 280, 470, 920, 260, 570, 1070, 570, 1120, |
---|
172 | 1540, 420, 360, 660, 490, 550, 670, 920, 560, 650) // M |
---|
173 | |
---|
174 | ROW( 660, 470, 1040, 830, 310, 760, 930, 340, 860, 300, |
---|
175 | 420, 1430, 560, 830, 740, 890, 810, 400, 230, 560) // N |
---|
176 | |
---|
177 | ROW( 770, 260, 590, 640, 200, 480, 560, 350, 620, 430, |
---|
178 | 360, 560, 1740, 700, 570, 780, 740, 460, 40, 300) // P |
---|
179 | |
---|
180 | ROW( 710, 360, 840, 1010, 370, 570, 950, 460, 980, 540, |
---|
181 | 660, 830, 700, 1340, 950, 760, 740, 510, 380, 490) // Q |
---|
182 | |
---|
183 | ROW( 620, 430, 620, 750, 250, 570, 810, 370, 1130, 430, |
---|
184 | 490, 740, 570, 950, 1490, 690, 690, 440, 540, 490) // R |
---|
185 | |
---|
186 | ROW( 940, 760, 780, 750, 330, 770, 700, 450, 740, 420, |
---|
187 | 550, 890, 780, 760, 690, 1220, 1010, 580, 310, 500) // S |
---|
188 | |
---|
189 | ROW( 830, 640, 720, 700, 420, 540, 700, 660, 760, 540, |
---|
190 | 670, 810, 740, 740, 690, 1010, 1280, 780, 240, 460) // T |
---|
191 | |
---|
192 | ROW( 790, 720, 290, 480, 700, 260, 430, 1180, 480, 950, |
---|
193 | 920, 400, 460, 510, 440, 580, 780, 1310, 330, 540) // V |
---|
194 | |
---|
195 | ROW( 230, 570, 0, 140, 1100, 230, 590, 440, 240, 580, |
---|
196 | 560, 230, 40, 380, 540, 310, 240, 330, 2360, 1160) // W |
---|
197 | |
---|
198 | ROW( 410, 650, 360, 340, 1340, 180, 1050, 580, 430, 670, |
---|
199 | 650, 560, 300, 490, 490, 500, 460, 540, 1160, 1780) // Y |
---|
200 | }; |
---|
201 | |
---|
202 | double Gonnet16[21][21] = |
---|
203 | { |
---|
204 | // A C D E F G H I K L |
---|
205 | // M N P Q R S T V W Y |
---|
206 | ROW( 124, 81, 67, 74, 40, 80, 60, 60, 66, 56, |
---|
207 | 66, 66, 77, 71, 62, 94, 83, 79, 23, 41) // A |
---|
208 | |
---|
209 | ROW( 81, 213, 25, 26, 60, 44, 55, 53, 30, 49, |
---|
210 | 59, 47, 26, 36, 43, 76, 64, 72, 57, 65) // C |
---|
211 | |
---|
212 | ROW( 67, 25, 148, 112, 8, 71, 77, 16, 77, 13, |
---|
213 | 28, 104, 59, 84, 62, 78, 72, 29, 0, 36) // D |
---|
214 | |
---|
215 | ROW( 74, 26, 112, 137, 16, 57, 77, 35, 91, 33, |
---|
216 | 47, 83, 64, 101, 75, 75, 70, 48, 14, 34) // E |
---|
217 | |
---|
218 | ROW( 40, 60, 8, 16, 169, 2, 71, 81, 25, 97, |
---|
219 | 92, 31, 20, 37, 25, 33, 42, 70, 110, 134) // F |
---|
220 | |
---|
221 | ROW( 80, 44, 71, 57, 2, 160, 51, 8, 54, 11, |
---|
222 | 26, 76, 48, 57, 57, 77, 54, 26, 23, 18) // G |
---|
223 | |
---|
224 | ROW( 60, 55, 77, 77, 71, 51, 171, 41, 80, 46, |
---|
225 | 57, 93, 56, 95, 81, 70, 70, 43, 59, 105) // H |
---|
226 | |
---|
227 | ROW( 60, 53, 16, 35, 81, 8, 41, 137, 43, 108, |
---|
228 | 107, 34, 35, 46, 37, 45, 66, 118, 44, 58) // I |
---|
229 | |
---|
230 | ROW( 66, 30, 77, 91, 25, 54, 80, 43, 133, 44, |
---|
231 | 57, 86, 62, 98, 113, 74, 76, 48, 24, 43) // K |
---|
232 | |
---|
233 | ROW( 56, 49, 13, 33, 97, 11, 46, 108, 44, 135, |
---|
234 | 112, 30, 43, 54, 43, 42, 54, 95, 58, 67) // L |
---|
235 | |
---|
236 | ROW( 66, 59, 28, 47, 92, 26, 57, 107, 57, 112, |
---|
237 | 154, 42, 36, 66, 49, 55, 67, 92, 56, 65) // M |
---|
238 | |
---|
239 | ROW( 66, 47, 104, 83, 31, 76, 93, 34, 86, 30, |
---|
240 | 42, 143, 56, 83, 74, 89, 81, 40, 23, 56) // N |
---|
241 | |
---|
242 | ROW( 77, 26, 59, 64, 20, 48, 56, 35, 62, 43, |
---|
243 | 36, 56, 174, 70, 57, 78, 74, 46, 4, 30) // P |
---|
244 | |
---|
245 | ROW( 71, 36, 84, 101, 37, 57, 95, 46, 98, 54, |
---|
246 | 66, 83, 70, 134, 95, 76, 74, 51, 38, 49) // Q |
---|
247 | |
---|
248 | ROW( 62, 43, 62, 75, 25, 57, 81, 37, 113, 43, |
---|
249 | 49, 74, 57, 95, 149, 69, 69, 44, 54, 49) // R |
---|
250 | |
---|
251 | ROW( 94, 76, 78, 75, 33, 77, 70, 45, 74, 42, |
---|
252 | 55, 89, 78, 76, 69, 122, 101, 58, 31, 50) // S |
---|
253 | |
---|
254 | ROW( 83, 64, 72, 70, 42, 54, 70, 66, 76, 54, |
---|
255 | 67, 81, 74, 74, 69, 101, 128, 78, 24, 46) // T |
---|
256 | |
---|
257 | ROW( 79, 72, 29, 48, 70, 26, 43, 118, 48, 95, |
---|
258 | 92, 40, 46, 51, 44, 58, 78, 131, 33, 54) // V |
---|
259 | |
---|
260 | ROW( 23, 57, 0, 14, 110, 23, 59, 44, 24, 58, |
---|
261 | 56, 23, 4, 38, 54, 31, 24, 33, 236, 116) // W |
---|
262 | |
---|
263 | ROW( 41, 65, 36, 34, 134, 18, 105, 58, 43, 67, |
---|
264 | 65, 56, 30, 49, 49, 50, 46, 54, 116, 178) // Y |
---|
265 | }; |
---|
266 | |
---|
267 | static double Gonnet250[20][20] = |
---|
268 | { |
---|
269 | // A C D E F G H I K L |
---|
270 | // M N P Q R S T V W Y |
---|
271 | ROW( 760, 570, 490, 520, 290, 570, 440, 440, 480, 400, |
---|
272 | 450, 490, 550, 500, 460, 630, 580, 530, 160, 300) // A |
---|
273 | |
---|
274 | ROW( 570, 1670, 200, 220, 440, 320, 390, 410, 240, 370, |
---|
275 | 430, 340, 210, 280, 300, 530, 470, 520, 420, 470) // C |
---|
276 | |
---|
277 | ROW( 490, 200, 990, 790, 70, 530, 560, 140, 570, 120, |
---|
278 | 220, 740, 450, 610, 490, 570, 520, 230, 0, 240) // D |
---|
279 | |
---|
280 | ROW( 520, 220, 790, 880, 130, 440, 560, 250, 640, 240, |
---|
281 | 320, 610, 470, 690, 560, 540, 510, 330, 90, 250) // E |
---|
282 | |
---|
283 | ROW( 290, 440, 70, 130, 1220, 0, 510, 620, 190, 720, |
---|
284 | 680, 210, 140, 260, 200, 240, 300, 530, 880, 1030) // F |
---|
285 | |
---|
286 | ROW( 570, 320, 530, 440, 0, 1180, 380, 70, 410, 80, |
---|
287 | 170, 560, 360, 420, 420, 560, 410, 190, 120, 120) // G |
---|
288 | |
---|
289 | ROW( 440, 390, 560, 560, 510, 380, 1120, 300, 580, 330, |
---|
290 | 390, 640, 410, 640, 580, 500, 490, 320, 440, 740) // H |
---|
291 | |
---|
292 | ROW( 440, 410, 140, 250, 620, 70, 300, 920, 310, 800, |
---|
293 | 770, 240, 260, 330, 280, 340, 460, 830, 340, 450) // I |
---|
294 | |
---|
295 | ROW( 480, 240, 570, 640, 190, 410, 580, 310, 840, 310, |
---|
296 | 380, 600, 460, 670, 790, 530, 530, 350, 170, 310) // K |
---|
297 | |
---|
298 | ROW( 400, 370, 120, 240, 720, 80, 330, 800, 310, 920, |
---|
299 | 800, 220, 290, 360, 300, 310, 390, 700, 450, 520) // L |
---|
300 | |
---|
301 | ROW( 450, 430, 220, 320, 680, 170, 390, 770, 380, 800, |
---|
302 | 950, 300, 280, 420, 350, 380, 460, 680, 420, 500) // M |
---|
303 | |
---|
304 | ROW( 490, 340, 740, 610, 210, 560, 640, 240, 600, 220, |
---|
305 | 300, 900, 430, 590, 550, 610, 570, 300, 160, 380) // N |
---|
306 | |
---|
307 | ROW( 550, 210, 450, 470, 140, 360, 410, 260, 460, 290, |
---|
308 | 280, 430, 1280, 500, 430, 560, 530, 340, 20, 210) // P |
---|
309 | |
---|
310 | ROW( 500, 280, 610, 690, 260, 420, 640, 330, 670, 360, |
---|
311 | 420, 590, 500, 790, 670, 540, 520, 370, 250, 350) // Q |
---|
312 | |
---|
313 | ROW( 460, 300, 490, 560, 200, 420, 580, 280, 790, 300, |
---|
314 | 350, 550, 430, 670, 990, 500, 500, 320, 360, 340) // R |
---|
315 | |
---|
316 | ROW( 630, 530, 570, 540, 240, 560, 500, 340, 530, 310, |
---|
317 | 380, 610, 560, 540, 500, 740, 670, 420, 190, 330) // S |
---|
318 | |
---|
319 | ROW( 580, 470, 520, 510, 300, 410, 490, 460, 530, 390, |
---|
320 | 460, 570, 530, 520, 500, 670, 770, 520, 170, 330) // T |
---|
321 | |
---|
322 | ROW( 530, 520, 230, 330, 530, 190, 320, 830, 350, 700, |
---|
323 | 680, 300, 340, 370, 320, 420, 520, 860, 260, 410) // V |
---|
324 | |
---|
325 | ROW( 160, 420, 0, 90, 880, 120, 440, 340, 170, 450, |
---|
326 | 420, 160, 20, 250, 360, 190, 170, 260, 1940, 930) // W |
---|
327 | |
---|
328 | ROW( 300, 470, 240, 250, 1030, 120, 740, 450, 310, 520, |
---|
329 | 500, 380, 210, 350, 340, 330, 330, 410, 930, 1300) // Y |
---|
330 | }; |
---|
331 | |
---|
332 | static double Gonnet350[20][20] = |
---|
333 | { |
---|
334 | // A C D E F G H I K L |
---|
335 | // M N P Q R S T V W Y |
---|
336 | ROW( 450, 390, 350, 360, 210, 400, 310, 310, 340, 280, |
---|
337 | 310, 350, 380, 350, 330, 410, 390, 350, 110, 210) // A |
---|
338 | |
---|
339 | ROW( 390, 1280, 160, 180, 320, 230, 270, 300, 190, 280, |
---|
340 | 310, 240, 170, 210, 220, 360, 330, 370, 310, 340) // C |
---|
341 | |
---|
342 | ROW( 350, 160, 640, 540, 50, 390, 400, 110, 410, 100, |
---|
343 | 160, 500, 330, 430, 370, 400, 370, 170, 0, 170) // D |
---|
344 | |
---|
345 | ROW( 360, 180, 540, 550, 100, 330, 390, 180, 440, 170, |
---|
346 | 220, 440, 350, 460, 410, 380, 360, 230, 60, 180) // E |
---|
347 | |
---|
348 | ROW( 210, 320, 50, 100, 860, 0, 360, 460, 140, 530, |
---|
349 | 490, 150, 100, 190, 150, 170, 220, 400, 700, 770) // F |
---|
350 | |
---|
351 | ROW( 400, 230, 390, 330, 0, 860, 280, 60, 310, 50, |
---|
352 | 120, 400, 280, 310, 310, 400, 300, 140, 50, 80) // G |
---|
353 | |
---|
354 | ROW( 310, 270, 400, 390, 360, 280, 680, 220, 400, 240, |
---|
355 | 270, 430, 300, 420, 410, 350, 340, 240, 320, 500) // H |
---|
356 | |
---|
357 | ROW( 310, 300, 110, 180, 460, 60, 220, 620, 220, 570, |
---|
358 | 540, 170, 190, 240, 200, 240, 320, 570, 260, 340) // I |
---|
359 | |
---|
360 | ROW( 340, 190, 410, 440, 140, 310, 400, 220, 530, 210, |
---|
361 | 260, 420, 330, 450, 530, 370, 370, 250, 120, 210) // K |
---|
362 | |
---|
363 | ROW( 280, 280, 100, 170, 530, 50, 240, 570, 210, 630, |
---|
364 | 560, 160, 200, 240, 210, 220, 280, 510, 340, 400) // L |
---|
365 | |
---|
366 | ROW( 310, 310, 160, 220, 490, 120, 270, 540, 260, 560, |
---|
367 | 580, 210, 210, 280, 240, 260, 310, 490, 320, 370) // M |
---|
368 | |
---|
369 | ROW( 350, 240, 500, 440, 150, 400, 430, 170, 420, 160, |
---|
370 | 210, 550, 320, 410, 390, 410, 390, 220, 110, 250) // N |
---|
371 | |
---|
372 | ROW( 380, 170, 330, 350, 100, 280, 300, 190, 330, 200, |
---|
373 | 210, 320, 910, 350, 310, 390, 370, 240, 10, 150) // P |
---|
374 | |
---|
375 | ROW( 350, 210, 430, 460, 190, 310, 420, 240, 450, 240, |
---|
376 | 280, 410, 350, 470, 450, 370, 360, 260, 160, 240) // Q |
---|
377 | |
---|
378 | ROW( 330, 220, 370, 410, 150, 310, 410, 200, 530, 210, |
---|
379 | 240, 390, 310, 450, 630, 360, 350, 230, 230, 230) // R |
---|
380 | |
---|
381 | ROW( 410, 360, 400, 380, 170, 400, 350, 240, 370, 220, |
---|
382 | 260, 410, 390, 370, 360, 450, 430, 290, 130, 230) // S |
---|
383 | |
---|
384 | ROW( 390, 330, 370, 360, 220, 300, 340, 320, 370, 280, |
---|
385 | 310, 390, 370, 360, 350, 430, 460, 350, 120, 230) // T |
---|
386 | |
---|
387 | ROW( 350, 370, 170, 230, 400, 140, 240, 570, 250, 510, |
---|
388 | 490, 220, 240, 260, 230, 290, 350, 560, 210, 310) // V |
---|
389 | |
---|
390 | ROW( 110, 310, 0, 60, 700, 50, 320, 260, 120, 340, |
---|
391 | 320, 110, 10, 160, 230, 130, 120, 210, 1590, 740) // W |
---|
392 | |
---|
393 | ROW( 210, 340, 170, 180, 770, 80, 500, 340, 210, 400, |
---|
394 | 370, 250, 150, 240, 230, 230, 230, 310, 740, 920) // Y |
---|
395 | }; |
---|
396 | |
---|
397 | const t_ROW *GetGonnetMatrix(unsigned N) |
---|
398 | { |
---|
399 | switch (N) |
---|
400 | { |
---|
401 | case 80: |
---|
402 | return Gonnet80; |
---|
403 | case 120: |
---|
404 | return Gonnet120; |
---|
405 | //case 16: |
---|
406 | // return Gonnet16; |
---|
407 | //case 160: |
---|
408 | // return Gonnet160; |
---|
409 | case 250: |
---|
410 | return Gonnet250; |
---|
411 | case 350: |
---|
412 | return Gonnet350; |
---|
413 | } |
---|
414 | Quit("Invalid Gonnet%u", N); |
---|
415 | return 0; |
---|
416 | } |
---|
417 | |
---|
418 | //SCORE GetGonnetGapOpen(unsigned N) |
---|
419 | // { |
---|
420 | // switch (N) |
---|
421 | // { |
---|
422 | // case 80: |
---|
423 | // return -639; |
---|
424 | // case 120: |
---|
425 | // return -863; |
---|
426 | // case 160: |
---|
427 | // return -611; |
---|
428 | // case 250: |
---|
429 | // return -308; |
---|
430 | // case 350: |
---|
431 | // return -158; |
---|
432 | // } |
---|
433 | // Quit("Invalid Gonnet%u", N); |
---|
434 | // return 0; |
---|
435 | // } |
---|
436 | |
---|
437 | SCORE GetGonnetGapOpen(unsigned N) |
---|
438 | { |
---|
439 | switch (N) |
---|
440 | { |
---|
441 | case 80: |
---|
442 | return -1000; |
---|
443 | case 120: |
---|
444 | return -800; |
---|
445 | case 160: |
---|
446 | return -700; |
---|
447 | case 250: |
---|
448 | return -200; |
---|
449 | case 350: |
---|
450 | return -175; |
---|
451 | } |
---|
452 | Quit("Invalid Gonnet%u", N); |
---|
453 | return 0; |
---|
454 | } |
---|
455 | |
---|
456 | SCORE GetGonnetGapExtend(unsigned N) |
---|
457 | { |
---|
458 | switch (N) |
---|
459 | { |
---|
460 | case 80: |
---|
461 | return 350; |
---|
462 | case 120: |
---|
463 | return 200; |
---|
464 | case 160: |
---|
465 | return 175; |
---|
466 | case 250: |
---|
467 | return 20; |
---|
468 | case 350: |
---|
469 | return 20; |
---|
470 | } |
---|
471 | Quit("Invalid Gonnet%u", N); |
---|
472 | return 0; |
---|
473 | } |
---|
474 | |
---|
475 | //double GonnetLookup[400][400]; |
---|
476 | // |
---|
477 | //static bool InitGonnetLookup() |
---|
478 | // { |
---|
479 | // for (unsigned i = 0; i < 400; ++i) |
---|
480 | // { |
---|
481 | // const unsigned A1 = i/20; |
---|
482 | // const unsigned A2 = i%20; |
---|
483 | // for (unsigned j = 0; j <= i; ++j) |
---|
484 | // { |
---|
485 | // const unsigned B1 = j/20; |
---|
486 | // const unsigned B2 = j%20; |
---|
487 | // |
---|
488 | // const double s00 = Gonnet16[A1][B1]; |
---|
489 | // const double s01 = Gonnet16[A1][B2]; |
---|
490 | // const double s10 = Gonnet16[A2][B1]; |
---|
491 | // const double s11 = Gonnet16[A2][B2]; |
---|
492 | // |
---|
493 | // GonnetLookup[i][j] = GonnetLookup[j][i] = (s00 + s01 + s10 + s11)/4; |
---|
494 | // } |
---|
495 | // } |
---|
496 | // return true; |
---|
497 | // } |
---|
498 | // |
---|
499 | //static bool bGonnetLookupInitialized = InitGonnetLookup(); |
---|