public static void Main(string[] args) { //TestMatrixG(); //TestMatrixH(); //TestDecodingOfCorruptedVectors(); // G = 1 0 1 1 0 // 0 1 0 1 1 var matrix = new int[2][]; matrix[0] = new int[5] { 1, 0, 1, 1, 0 }; matrix[1] = new int[5] { 0, 1, 0, 1, 1 }; var enigma = new Enigma( length: matrix[0].GetUpperBound(0) + 1, dimension: matrix.GetUpperBound(0) + 1, matrixG: matrix); var channel = new Channel(0.5); var messageToEncode = new int[2] { 0, 0 }; var encoded = enigma.Encode(messageToEncode); var corrupted = channel.SendVectorThrough(encoded); var positions = enigma.FindChangedPositions(encoded, corrupted); var result = enigma.Decode(corrupted); Console.ReadKey(); }
public void Simulate() { var operation = Console.ReadLine(); var seed = int.Parse(Console.ReadLine()); var enigma = new Enigma( new Enigma.Rotor(Console.ReadLine()), new Enigma.Rotor(Console.ReadLine()), new Enigma.Rotor(Console.ReadLine()) ); var message = Console.ReadLine(); var res = operation == "ENCODE" ? enigma.Encode(message, seed) : enigma.Decode(message, seed); Console.WriteLine(res); }