public void MoveWorks() { var unscrambler = new Unscrambler(); Assert.Equal("bcdea", unscrambler.Unscramble("bdeac", new[] { SampleOps.Move1To4 })); Assert.Equal("bdeac", unscrambler.Unscramble("abdec", new[] { SampleOps.Move3To0 })); }
public void RotateWorks() { var unscrambler = new Unscrambler(); Assert.Equal("abcde", unscrambler.Unscramble("bcdea", new[] { SampleOps.Rotate1Left })); Assert.Equal("abcde", unscrambler.Unscramble("cdeab", new[] { SampleOps.Rotate8Right })); }
public void RotateByLetterWorks() { var unscrambler = new Unscrambler(); Assert.Equal("abcdefgh", unscrambler.Unscramble("ghabcdef", new[] { SampleOps.RotateByB })); Assert.Equal("abcdefgh", unscrambler.Unscramble("efghabcd", new[] { SampleOps.RotateByD })); Assert.Equal("abcdefgh", unscrambler.Unscramble("habcdefg", new[] { SampleOps.RotateByH })); }
public string Solve(string[] input) { var parser = new OperationParser(); var steps = input.Select(line => parser.Parse(line)); var unscrambler = new Unscrambler(); return(unscrambler.Unscramble(Password, steps)); }
public void SwapPositionWorks() { var unscrambler = new Unscrambler(); Assert.Equal("abcde", unscrambler.Unscramble("ebcda", new[] { SampleOps.Swap4With0 })); }
public void ScramblingWithSequenceWorks() { var unscrambler = new Unscrambler(); Assert.Equal("abcde", unscrambler.Unscramble("abdec", SampleOps.Sequence.Where(op => !(op is RotateByLetter)))); }
public void ReverseWorks() { var unscrambler = new Unscrambler(); Assert.Equal("edcba", unscrambler.Unscramble("abcde", new[] { SampleOps.Reverse0Through4 })); }
public void SwapLetterWorks() { var unscrambler = new Unscrambler(); Assert.Equal("ebcda", unscrambler.Unscramble("edcba", new[] { SampleOps.SwapDWithB })); }