private static Variável GenerateVariável(ulong seed, ref ulong insideTry, ref ulong elementsAdded, ref byte[] X, ref byte[] Y) { Variável variável = new Variável(); byte[] indexSeed = BitConverter.GetBytes(seed + insideTry + elementsAdded); Array.Reverse(indexSeed); int Index = (int)(Hash(indexSeed) % 32); ulong X_Y = ((ulong)Index + insideTry) % 2; if (X_Y == 0) { variável.Index = Index; variável.Value = X[Index]; variável.X_Y = 'X'; } else // X_Y == 1 { variável.Index = Index; variável.Value = Y[Index]; variável.X_Y = 'Y'; } elementsAdded++; return(variável); }
private static Variável GetVariável(ref byte[] x, ref byte[] y, char x_y, int index, bool NOT = false) { Variável v = new Variável(); if (x_y == 'X') { if (!NOT) { v.Value = x[index]; } else { v.Value = (byte)((~x[index]) & 255); } } else // 'Y' { if (!NOT) { v.Value = y[index]; } else { v.Value = (byte)((~y[index]) & 255); } } v.X_Y = x_y; v.Index = index; return(v); }
private static string VariáveltoExpression(Variável v) { string ret = v.X_Y + "[" + v.Index + "]"; return(ret); }