http://www.osp.ru/nets/2000/12/141602/ GoldFinch Этот алгоритм должен работать максимально быстро, причём на слабеньком железе, так что реализовывать его на Hi-level-language не лучшее решение ))
хм. странная матрица. N = число символов в строке = число столбцов = M. опять странно Код (Text): N=1 => (N-1)=0 => 0(M+k)=0 N=2 => (N-1)=1 => 1(M+k)=(M+k) N=3 => (N-1)=2 => 2(M+k)=2M+2k N=4 => (N-1)=3 => 3(M+k)=3M+3k N=5 => (N-1)=4 => 4(M+k)=4M+4k N=6 => (N-1)=5 => 5(M+k)=5M+5k я больше поверю в (N-1)M+k Y_Mur насколько я могу понять - этим должно заниматься устройство, хотя если хочется то на Hi-level будет так. (для приема) на асм сами переписывайте Код (Text): proc Sign(s:pointer; k, n, M:Int); { l:pointer = GetMem(n); for (i:int=0, j:int; i<n; i++) { j=i*M; while (j>n) j-=n; l[i]=s[k+j]; } for (int i=0; i<n; i++) s[k+i]=l[i]; FreeMem(l); } это не на си и не на делфи и не на чем (мне ЯВУ нравятся только за краткость, а ни один целиком не нравится, пишу на чем попало с чем попало) - алгоритм прослеживается, а переписывать на асм влом. в общем для принятого блока данных осуществляет обратную перестановку символов и записывает ее на место старой, повторы не проверяются, а вот алгоритм описанный соблюдается.