public IEnumerable<IProtocolStep> Execute(CascadeProtocolRuntimeEnvironment environment) { foreach (var keyItem in environment.BobKey) { keyItem.ErrorHere = false; } return null; }
public IEnumerable<IProtocolStep> Execute(CascadeProtocolRuntimeEnvironment environment) { while (OddErrorsBlocksSetNotEmpty(environment)) { yield return new FindSmallestOddErrorBlockStep(); yield return new CorrectErrorByBinaryStep(); yield return new BackTrackCorrectedErrorStep(); } }
public IEnumerable<IProtocolStep> Execute(CascadeProtocolRuntimeEnvironment environment) { yield return new ShowInitialErrorsStep(); yield return new HideInitialErrorsStep(); for (int i = 0; i < 4; ++i) { yield return new OnePassStep(i); } }
public IEnumerable<IProtocolStep> Execute(CascadeProtocolRuntimeEnvironment environment) { environment.Pass = _pass; yield return new ShowCurrentPassStep(_pass); yield return new FillBlocksWithRandomPermutationStep(); yield return new CalculateParitiesStep(); yield return new CheckParitiesStep(); yield return new SetOddErrorsBlocksStep(); yield return new ProcessOddErrorsBlocksStep(); }
public IEnumerable<IProtocolStep> Execute(CascadeProtocolRuntimeEnvironment environment) { for (var i = 0; i < environment.KeyLength; i++) { if (environment.AliceKey[i].Value != environment.BobKey[i].Value) { environment.BobKey[i].ErrorHere = true; } } return null; }
public IEnumerable<IProtocolStep> Execute(CascadeProtocolRuntimeEnvironment environment) { yield return new InitializeBinaryCorrectionStep(); while (environment.BinaryEnvironment.PositionsCount > 1) { yield return new LookAtFirstHalfOfWorkingPositionsStep(); yield return new CalculateWorkingPositionsParityStep(); yield return new CompareWorkingPositionsParityStep(); yield return new UpdateWorkingPositionsStep(); } yield return new CorrectErrorInFoundPositionStep(); }
public IEnumerable<IProtocolStep> Execute(CascadeProtocolRuntimeEnvironment environment) { environment.OddErrorsCountBlocks.Clear(); for (var i = 0; i < environment.Pass + 1; ++i) { for (var j = 0; j < environment.AliceBlocks[i].Count; ++j) { if (environment.AliceBlocks[i][j].Parity != environment.BobBlocks[i][j].Parity) { environment.OddErrorsCountBlocks.Add(environment.BobBlocks[i][j]); } } } return null; }
public IEnumerable<IProtocolStep> Execute(CascadeProtocolRuntimeEnvironment environment) { environment.BinaryEnvironment.StartPosition = 0; environment.BinaryEnvironment.PositionsCount = environment.BinaryEnvironment.WorkingBlock.Size; environment.BinaryEnvironment.SampleBlock = environment.AliceBlocks.SelectMany(list => list) .Single( block => block.Size == environment.BinaryEnvironment.WorkingBlock.Size && block.KeyItems[0].Position == environment.BinaryEnvironment.WorkingBlock.KeyItems[0].Position); foreach (var keyItem in environment.BinaryEnvironment.WorkingBlock.KeyItems) { keyItem.ErrorHere = true; } return null; }
public IEnumerable<IProtocolStep> Execute(CascadeProtocolRuntimeEnvironment environment) { var correctedItem = environment.BinaryEnvironment.WorkingBlock.KeyItems.Single(item => item.ErrorHere); correctedItem.ErrorHere = false; var position = correctedItem.Position; foreach (var block in Enumerable.Range(0,environment.Pass + 1).SelectMany(i => environment.BobBlocks[i]).Where(block => block.KeyItems.Any(item => item.Position == position))) { if (environment.OddErrorsCountBlocks.Contains(block)) { environment.OddErrorsCountBlocks.Remove(block); } else { environment.OddErrorsCountBlocks.Add(block); } } return null; }
public IEnumerable<IProtocolStep> Execute(CascadeProtocolRuntimeEnvironment environment) { var parityMatch = environment.BinaryEnvironment.SampleParity == environment.BinaryEnvironment.WorkingParity; environment.BinaryEnvironment.PositionsCount /= 2; foreach ( var item in environment.BinaryEnvironment.WorkingBlock.KeyItems.Skip( environment.BinaryEnvironment.StartPosition + (parityMatch ? 0 : (environment.BinaryEnvironment.PositionsCount))) .Take(environment.BinaryEnvironment.PositionsCount)) { item.ErrorHere = false; } if (parityMatch) { environment.BinaryEnvironment.StartPosition += environment.BinaryEnvironment.PositionsCount; } return null; }
public IEnumerable<IProtocolStep> Execute(CascadeProtocolRuntimeEnvironment environment) { return null; }
public IEnumerable<IProtocolStep> Execute(CascadeProtocolRuntimeEnvironment environment) { environment.BinaryEnvironment.WorkingBlock = environment.OddErrorsCountBlocks.OrderBy(block => block.Size).First(); return null; }
private bool OddErrorsBlocksSetNotEmpty(CascadeProtocolRuntimeEnvironment environment) { return environment.OddErrorsCountBlocks.Any(); }
public IEnumerable<IProtocolStep> Execute(CascadeProtocolRuntimeEnvironment environment) { Description = "Вычисление чётностей блоков"; return null; }