Цитата(kons @ Feb 28 2009, 14:54)

Так в процедуре Ченя достаточно перебрать только те возможные локаторы, которые соответствуют реально имеющимся символам. Разве не экономия?
так и делаю. тока не красиво это ка-то - вот циклы:
CODE
count = 0; /* Number of roots of lambda(x) */
for (i = 1; i <= CHECK_LEN; i++)
{
q = 1;
j = deg_lambda;
do //for (j = deg_lambda; j > 0; j--)
{
r = reg[j] + j;
reg[j] = r;
q ^= Alpha2[reg[j]];
}
while(--j > 0);
if (!q)
{
/* store root (index-form) and error location number */
// root[count] = i;
loc[count] = NN - i;
count++;
}
}
reg[4] = reg[4] + 127;// + 16; // modnn(reg[4] + 223*4); // 127
reg[3] = reg[3] + 159;// + 12; // modnn(reg[3] + 223*3); // 159
reg[2] = reg[2] + 191;// + 8; // modnn(reg[2] + 223*2); // 191
reg[1] = reg[1] + 223;// + 4; // modnn(reg[1] + 223);
for (i = NN-MAX_DATA_LEN+1; i <= NN; i++)
{
q = 1;
j = deg_lambda;
do //for (j = deg_lambda; j > 0; j--)
{
r = reg[j] + j;
reg[j] = r;
q ^= Alpha2[reg[j]];
}
while (--j > 0);
if (!q)
{
/* store root (index-form) and error location number */
// root[count] = i;
loc[count] = NN - i;
count++;
}
}