public static ExtraData.Coordinates[, ][] GetCoordsMatrix(Function function) { if (function.VarsCount == 1) { return new ExtraData.Coordinates[2, 1][] { { new[] { ExtraData.Coordinates.NOT } }, { new[] { ExtraData.Coordinates.IS } } } } ; int[][] varsArrs = SplitVars(function); string[] vertGrayCode = GetGrayCode(varsArrs[0].Length, false); string[] horGrayCode = GetGrayCode(varsArrs[1].Length, false); ExtraData.Coordinates[, ][] result = new ExtraData.Coordinates[vertGrayCode.Length, horGrayCode.Length][]; for (int i = 0; i < vertGrayCode.Length; i++) { for (int j = 0; j < horGrayCode.Length; j++) { result[i, j] = new ExtraData.Coordinates[function.VarsCount]; for (int k = 0; k < vertGrayCode[i].Length; k++) { result[i, j][k] = vertGrayCode[i][k] == '0' ? ExtraData.Coordinates.NOT : ExtraData.Coordinates.IS; } for (int k = vertGrayCode[i].Length; k < function.VarsCount; k++) { result[i, j][k] = horGrayCode[j][k - vertGrayCode[i].Length] == '0' ? ExtraData.Coordinates.NOT : ExtraData.Coordinates.IS; } } } return(result); }
private static ExtraData.Coordinates[] GetCommonCoordinates(Dot[,] dots) { foreach (Dot dot in dots) { if (dot == null) { return new ExtraData.Coordinates[] { ExtraData.Coordinates.FALSE, ExtraData.Coordinates.FALSE, ExtraData.Coordinates.FALSE, ExtraData.Coordinates.FALSE } } } ; ExtraData.Coordinates[] result = new ExtraData.Coordinates[4]; for (int i = 0; i < 4; i++) { result[i] = dots[0, 0].Coordinates[i]; } foreach (Dot dot in dots) { for (int i = 0; i < 4; i++) { if (result[i] != dot.Coordinates[i]) { result[i] = ExtraData.Coordinates.FALSE; } } } return(result); }
private static ExtraData.Coordinates[] GetCommonCoordinates(List <Dot> dots) { int varsCount = dots[0].VarsCount; foreach (Dot dot in dots) { if (dot == null) { return new ExtraData.Coordinates[] { ExtraData.Coordinates.FALSE, ExtraData.Coordinates.FALSE, ExtraData.Coordinates.FALSE, ExtraData.Coordinates.FALSE } } } ; ExtraData.Coordinates[] result = new ExtraData.Coordinates[varsCount]; for (int i = 0; i < varsCount; i++) { result[i] = dots[0].Coordinates[i]; } foreach (Dot dot in dots) { for (int i = 0; i < varsCount; i++) { if (result[i] != dot.Coordinates[i]) { result[i] = ExtraData.Coordinates.FALSE; } } } return(result); }
public ExtraData.Coordinates[] GetNeighborsCoords(int varIndex) { ExtraData.Coordinates[] result = new ExtraData.Coordinates[Coordinates.Length]; Array.Copy(Coordinates, result, Coordinates.Length); result[varIndex] = result[varIndex] == ExtraData.Coordinates.IS ? ExtraData.Coordinates.NOT : ExtraData.Coordinates.IS; return(result); }
public static Function GenerateFunctionFromString(string str) { int varsCount = (int)Math.Log2(str.Length); ExtraData.Coordinates[] coords = new ExtraData.Coordinates[varsCount]; Dot[] dots = new Dot[str.Length]; for (int i = 0; i < str.Length; i++) { bool value = str[i] == '1' ? true : false; GetCoords(str, i, coords, varsCount); Dot dot = new Dot(value, ExtraData.CopyCoordsArray(coords)); dots[i] = dot; } return(new Function(dots)); }
public static Function KeyboardInput() { Console.Write("Введите функцию в векторном виде: "); string f = Console.ReadLine(); ExtraData.Coordinates[] coords = new ExtraData.Coordinates[4]; Dot[,] dots = new Dot[4, 4]; //if (f.Length != 16) // Console.WriteLine("ты ебанутый?"); //else //{ for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { bool value = f[4 * i + j] == '1' ? true : false; GetCoord(f, 4 * i + j, coords); Dot dot = new Dot(value, ExtraData.CopyCoordsArray(coords)); dots[i, j] = dot; } } //} return(new Function(Function.SwitchCoordinateMatrix(dots))); }
public static Function GenerateRandomFunction(int key) { int sizeX = 4; int sizeY = 4; Random random = new Random(key); Dot[,] dots = new Dot[4, 4]; int rnd; for (int i = 0; i < sizeY; i++) { for (int j = 0; j < sizeX; j++) { ExtraData.Coordinates[] coordinates = new ExtraData.Coordinates[4]; switch (i) { case 0: coordinates[0] = ExtraData.Coordinates.NOT; coordinates[1] = ExtraData.Coordinates.NOT; break; case 1: coordinates[0] = ExtraData.Coordinates.NOT; coordinates[1] = ExtraData.Coordinates.IS; break; case 2: coordinates[0] = ExtraData.Coordinates.IS; coordinates[1] = ExtraData.Coordinates.IS; break; case 3: coordinates[0] = ExtraData.Coordinates.IS; coordinates[1] = ExtraData.Coordinates.NOT; break; } switch (j) { case 0: coordinates[2] = ExtraData.Coordinates.NOT; coordinates[3] = ExtraData.Coordinates.NOT; break; case 1: coordinates[2] = ExtraData.Coordinates.NOT; coordinates[3] = ExtraData.Coordinates.IS; break; case 2: coordinates[2] = ExtraData.Coordinates.IS; coordinates[3] = ExtraData.Coordinates.IS; break; case 3: coordinates[2] = ExtraData.Coordinates.IS; coordinates[3] = ExtraData.Coordinates.NOT; break; } rnd = random.Next(2); dots[i, j] = new Dot((rnd == 1 ? true : false), coordinates); } } return(new Function(dots)); }