rendered paste bodyprivate void CreateChain(ref List<Piece> chain,byte[] startword)
{
if (chain.Count > 0)
return; //vyzadujeme prazdy retazec na zaciatku!
Piece piece = new Piece();
//najpr vytvoryme zaciatok retazca [0-krok]
piece.word = startword;
piece.hash = settings.hashAlgo.ComputeHash(piece.word);
chain.Add(piece); // pridame prvy na zaciatku
for (int poz = 1; poz < settings.chainLen - 1; poz++) //v kazdej iteracii rozvijame retazec o jeden prvok
{
//najprv ziskame nove slovo z predchadzajucej hash hodnoty
//pomocou redukcnej funkcii ktora prislucha danemu
// "stplcu" v retazci
//
// prvok01 -> RedukcnaFunkcia01 -> prvok02 -> RedukcnaFunkcia02 -> .... -> RedukcnaFunkciaN -> prvokN
//
piece = new Piece();
piece.word = ReductionFunction(chain[poz - 1].hash, poz); //redukujeme hash na slovo pomocou prislusnej funkcie
piece.hash = settings.hashAlgo.ComputeHash(piece.word);
chain.Add(piece);
}
//ukoncime retazec ,pridanim posledneho prvku ktory obsahuje uz len hash
piece = new Piece();
piece.word = null;
piece.hash = settings.hashAlgo.ComputeHash(chain[settings.chainLen - 2].word);
}